単位が異なる変数を扱える技、それが基準化/標準化
分析を行っていると、単位が異なるデータを扱わないといけない場面に遭遇することがあります。こんな時に大活躍するのが「基準化/標準化」です。
ん……? わかったつもりで流したけど、そもそも単位が異なるってなんなんだ?
例えば、ある人の総合的な身体能力を測りたいとしたとします。競技としては以下の6つを用いたとしましょう。
- 100m競争のタイム(秒)
- 跳び箱の段数(数)
- 遠投の距離(メートル)
- 1分間の反復横跳びの回数(数)
- 腕立ての回数(数)
- 1km水泳のタイム(秒)
さて、これらの項目からどのようにして総合的な判断を下せばよいでしょうか?
例えば、それぞれの競技の順位を用いて合計して小さい順に身体能力が高いとするのがいいでしょうか?
確かに一案ではあります。ただ、せっかく秒単位で記録している情報を順位に変換することが本当に望ましいのでしょうか? また、重視したい競技があったらどうするのがよいでしょうか?
ここで重要なポイントはそれぞれの競技の単位が異なっているという点です。秒単位の競技の結果と回数単位の競技の結果をそのまま足したり引いたりするのは、直観的にも何かおかしな結果になることは容易に想像がつきますね。
そこで、それぞれの競技を同じテーブルに乗せるために「標準化(基準化)」というテクニックを用いることで、単位を気にしなくてもよい状況にしたうえでそれぞれの変数を合計することができるようになります。
昔懐かしい偏差値みたいなものです。もちろん小さい方がよかったり(水泳のタイムとか)、大きい方がよかったり(遠投の距離とか)するのは-(マイナス)をかけて揃えてあげる必要がありますが。
次に、ただ合計するのではなく、それぞれの競技毎に重み付けを行い合計することで評価者の希望を反映した指標を作成できます。ちなみに基準化すると平均値は0、ばらつきの指標である標準偏差は1となります。
標準化の操作
それでは早速Rで基準化の操作を行ってみましょう!
scale.dummy<-scale(sample1.dummy[,2:9])
scaleを使うと簡単に基準化を実行できます!
sample1.dummy[,2:9]
は、sample1.dummy の2列目から9列目という意味でしたね。
確認してみましょう。
head(scale.dummy)

どうやら変更されたようですが? 念のため数値で確認。
summary(scale.dummy)

平均値は0になっていますね。標準偏差も1になっているか確認したいところです。psychのパッケージを使うことで簡単に出せますよ!
library(psych)
describe(scale.dummy)

やれやれ、大量に出力されてしまいました。mean(平均値)、sd(標準偏差)、median(中央値)ですね。他の指標はここではいったん横に置いておきましょう。sdは全て1になっていますね。
続いて、AGE(年齢)を例に取り上げて、基準化前後で比較を行ってみましょう。
AGE<-data.frame(cbind(sample1.dummy[,4],scale.dummy[,3]))
補足
- data.frame()……R上でデータを取り扱いやすくするおまじないです。
- cbind(a,b)……aとbの変数をくっつけて新しいテーブルを作成します。
- sample1.dummy[,4] ……基準化前のAGEを選択
- scale.dummy[,3]……基準化後のscale.AGEを選択
names(AGE)<-c("AGE","scale.AGE")
確認してみましょう。
head(AGE)

うまいこといってますね! 続いて復讐を兼ねて視覚化してみましょう。ライブラリを追加で読み込みます。
library(gridExtra)
基準化前後でヒストグラムを描きます。第4回記事を参考にしましょう。
p1<-ggplot(AGE,aes(x=AGE)) + geom_histogram()
p2<-ggplot(AGE,aes(x=scale.AGE)) + geom_histogram()
grid.arrange(p1,p2,nrow = 1, ncol=2,main=textGrob("ヒストグラム"))

左側が基準化前、右側が基準化後です。まず、形は同一ですね?
ただ、一つ違うのは……、そうです横軸の数値が異なっています。
そうなんです。
基準化後はこの例では概ね-2から+2の間に入っています。ついでに散布図も書いてみましょう。
ggplot(AGE,aes(x=AGE,y=scale.AGE))+geom_point()

見事に右上がりの一直線上に乗っていますね。
cor(AGE)

AGEとscale.AGEの相関係数は1になっていることも確認できました。
簡単! 2015年2月10日「3つ」覚えて分析から視覚化まで即実践!Rでできるデータ分析講座開催
Rをインストールしたが、無骨なUIに「今日はこのへんで……」と、そっと閉じてしまった方にオススメです!
本講座では実機を使って「できるだけわかりやすく」グラフ化&データ分析をワークショップ形式で簡単に身に付けることができます。