Follow @data_no_memo

メモ

個人的なメモです。他者にわかりやすく書くよりも未来の自分にわかりやすく書いています。なお、記事内容の正確さは保証できません。勉強中の身ですので、間違い等ご指摘頂けたら幸いです。

標準化しても正規分布にはならない

特に、教育分野で標準化の例として偏差値が取り上げられ、偏差値70だと上位○○%だと、正規分布とともに紹介されることがある。

 

先日、友人と話をしていて、このことがあたかも標準化を行えば、そのデータが正規分布に従うようになるという誤解を生んでいるのではないかと思った。

 

よく紹介される、z得点×10+50という偏差値の出し方では、そのデータが正規分布に従うとは言えず、よって偏差値70だと上位○○%という議論もできない。

このあたり、正規分布に従わないデータを正規分布に従わせる方法もあるようだが、詳しくはわからない。

 

ここでは、正規分布に従わないデータで、z得点×10+50によって偏差値を出してみる。その結果、その偏差値がどのような分布に従うのかを図示してみる。

 

ここでは、ポワソン分布(λ=2)からランダムに乱数を10万個発生させて、そのヒストグラムおよび偏差値に変換後のヒストグラムを見比べる。

結果は以下の通り。上が偏差値変換前、下が偏差値変換後である。

 

f:id:abcxyzonetwothree:20180930120021p:plain

 

当たり前だが、その分布の形に変化はない。

ただし、x軸が変わっている。偏差値変換後のデータは平均が50となっている。

 

なお、偏差値変換前の平均は2.00、不偏標準偏差は1.41・

偏差値変換後の平均は50、不偏標準偏差は10となった。

 

以上から、単純に偏差値に変換しても、それは正規分布に従うとは言えないことがわかった。また、当たり前だが偏差値に変換すれば平均は50、標準偏差は10となることもわかった。

 

コードは以下の通りである。


set.seed(1234)

library(ggplot2)
library(gridExtra)

x<-rpois(100000,2)

g1<-ggplot()+geom_histogram(mapping=aes(x=x),binwidth=0.1)

z<-(x-mean(x))/sd(x)
score<-(z*10)+50
g2<-ggplot()+geom_histogram(mapping=aes(x=score),binwidth=1.5)

grid.arrange(g1,g2)
mean(x)
mean(score)
sd(x)
sd(score)