ノイズ

http://d.hatena.ne.jp/nishiohirokazu/20080922/1222094878
西尾さんの「20人中19人がノイズ」というのは、残念なことだが、事実だと思う。「これに答えられない方は解答をご遠慮ください。」と書いてあるのを無視して答える人がノイズでなければ何だというのだろう。もちろん「schemeなんて知るか。C++(, Fortran, ...etc.)が完璧なら良いんだよ」というのも一つの立場だと思うが、そういう人は答えなければ良い話だ。*1
もちろん、表現があまりにも拙いというのはある。「プログラミングに詳しい」という表現からはデータ構造やアルゴリズムを問う設問も欲しいと思っていたら、「プログラミング言語に詳しい」の間違いだったという話だし。

ただ、西尾さんは統計データの扱いが下手かもしれないと思った。数学はともかく、自然科学では統計データなんてちょっとした条件の違いで狂ってしまうものだというのが常識だ。だから±3σなどの基準を用意して偶然に混ざる可能性を押さえ込もうとする。
しかし、人間の意志が関係する場合には±3σなどの基準ですら充分ではない。被験者が報酬を目当てにしている場合や被験者同士の情報交換が可能である場合には統計データが汚染されているとみなすべきである。というのも統計学の基本前提である「サンプル同士は独立である」が成り立たないからだ*2
データの汚染を極力抑えるためにはフィルタが必要であるという点までは間違っていない。しかし、今回のような知識を問うのはあまり良いフィルタではない。少なくとも多数の知識を問う必要がある。
まずランダム・サンプリングは大前提である。今回の場合、はてなで答えたがる「プログラミングに詳しい人」に関する調査であり、一般の「プログラミングに詳しい人」に関する調査にはなっていない。そこまでの精度を期待した設問ではないとはいえ、無回答の大きさを測定すると誤差の大きさを見積もる一助にはなるだろう。
意味は同じだが表現が異なる質問を幾つか行い、答えが一致しているものだけを採用するという手法もある。これは「意味を理解できているか」に関する良いフィルタとなる。少なくとも報酬目当てで適当に入力する被験者を無視することができる。

まあ、質問紙法ではノイズが大きいのは当たり前だよという話。ノイズが95%なんてまだマシかもしれないと思った方が。

#私は「キューマシン〜」だけ具体例が思いつかなかった。言語マニア向けの採点基準だと90点かな。

*1:あの質問に文句を言っている人はどうだろう。

*2:非独立のサンプルを処理するのは可能。非独立の程度を見積もる必要があり難しい。