hopping around

~ヘタレ研究者は今日も逝く~

normality

普通の人はよく「正規分布normal distribution」って言葉を間違えて使うよね,とは思うわけだけれど。

やはり成績の正規分布化は不要(いとうDiary)

と,そこで引用されている

正規分布信仰と偏差値(Babylon5以外のメモ by X^2)

とについて。

まず,正規分布≠「優が2割,良が....」ぢゃない,という点は当たり前。成績割合の配分なんて,別に正規分布でなくても,一様分布でも何でも,single-modalでもmulti-modalでも,作れる。「優が2割,,...」というのは,むしろ平均と分散をどう調整するかの話であって,分布の形の話ではない。

のはずなのに,そこを誤解している人が既に結構いるのは,どーしたもんか,と思ってしまう(うちにもいる)。

で,分布の形の話については,いとうブログで引用されている先のところに書いてあるんだけど,この説明がびみょーに間違ってる気がしないでもない。

こういう場合にCLTが成立しないのは,"iid assumption"のうち,最初のi (Independent)が落ちているからぢゃなくて,2つめのi (Identical)が落ちてるためだと思うんだけど。

つまり,independenceが要求されるのは,randam var(=成績)の個別のdrawの間なので,この場合には,生徒一人一人のdrawがindependentであればよい(もちろん,学校とかクラスとかによって,intra-cluster dependenceがあるのは確かだけれども,まぁさほど本質的ぢゃない)。試験問題の一問一問の回答相互間のdependenceはあっても全く問題ない。このことはたとえば,「正答率pの生徒が,20個の設問に回答する」っていうbinomial distributionを考えてみればすぐ分かる。特定の生徒の20個の設問の正答率には相互に相関があるけれど,でもこの場合には当然CLTは成立する。

それじゃあ今度は,この正答率pがidenticalではなくて,生徒一人一人の能力が違うとしよう。そうすると,CLTが成り立たないことが分かる。たとえば,pが,[0.5, 0.9]でuniformに分布しているとして,100問の問題を1万人に解かせてみる,というシミュレーションデータを作ってみると,kernel densityはこんな感じになる:

unif_grade.gif

これを作ったRのコードはこう:

library(lattice)

n <- 10000

p <- runif(n, min=0.5, max=0.9)

grade <- rep(NA, n)

for (i in 1:n){

grade[i] <- rbinom(1, 100, p[i])

}

densityplot(grade)

この結果を見て分かるように,出てきた成績は,元の正答率pの分布

unif_ability.gif

とよく似ていて,端をちょこっと丸めた感じになってることが分かる。そうすると,引用先のブログにある「もし全ての問題の正誤が100%相関するなら、その平均は単一の問題の得点分布に等しくなり、部分点が無ければ0点と100点に二本のスパイクが立つ分布になります」という部分は,問題間の正答率の相関が原因じゃなくて,そもそも生徒の能力が2種類しかない,という仮定に決定的に依存していることが分かる。

でも,これだけでは,何でmulti-modal(というか,よく見かけるのはbi-modal)な分布を現実によく見かけるんだろう?という点への説明にはなってない。

ここのところはおそらく,問題の数の少なさ(もうちょっと言うと,難易度の段階の数)によるんじゃないかと思う。たとえば,極端な例として,問題は2つしかなくて,その難易度が全然違うとしよう。そうすると,それぞれの個別の問題ごとの成績についてはnormal distributionになるとしても,それを足しあわせた総合成績は,2つのnormalのmixtureになって,bimodalな分布になってしまう。

たとえば,さっきと同じ正答率データを元に,最初の50問は同じで,次の50問は,生徒の間の能力差がより大きく現れる難しい問題だとして,シミュレーションしてみよう:

unif_bm.gif

Rのコードはこう:

bm1 <- rep(NA, n)

bm2 <- rep(NA, n)

bm <- rep(NA, n)

for (i in 1:n){

bm1[i] <- rbinom(1, 50, p[i])

bm2[i] <- rbinom(1, 50, p[i]^3)

bm[i] <- bm1[i]+bm2[i]

}

densityplot(bm)

こうしてみると,だいぶbimodalな分布に近くなってきた(今のところは,p~uniformにしているけれど,これをp~normalとかにしたら,もうちょっとbimodalなことがよく見えるはず)。要は,mixture distributionになってるんだよねぇ。

結局,何が問題かというと,data generating processに複数の次元があることについて,混乱があるんじゃないかと。成績というデータは,a) 生徒数, b) 生徒間heterogeneity,c) 問題数という少なくとも3つの次元があって,a)については確かにasymptoteに逃げ込めるだけれど,b)とc)があるので,multi-modalに見えることが多いと。仮にb)についてnormalityを仮定できても,僕たち個人の教員が作る問題だと,どうしても設問数(より正確には難易度差は)限定されてしまうので(だって採点が大変だ),asymptoteの世界に行けない。逆に,設問が多くて難易度のvariationが豊富な場合だと,割とnormalityを使えるんぢゃないだろーか。