IQを精確に測定するために必要な被験者数は。モンテカルロ法で検証。【プログラミング的思考】

 前稿で出てきたモンテカルロ法とは乱数(ランダムな数字)を使ったシミュレーションと軽く捉えていただきたい。

 下記が代表例でありとても解りやすい。

 これを実際に脳内でプログラミングしてみよう。

 例えば100×100ピクセル(合計10,000ピクセル)の正方形がある。全てのピクセルに1から10,000まで数字を割り振る。次に1から10,000までのランダムな数字を1,000個くらい(後述)生成し該当するピクセルを塗りつぶす。すると直径100ピクセルの円の中と外の塗りつぶされたピクセルの比率が大凡、

 円の面積:正方形から円の面積を引いた面積

と同じ比率になる。

 ということは偏りがないランダムの繰り返しは総当たりに近似する。

 ※「真に偏りがないランダム」は全く重複が生じないから総当たりと等しい。サウンドと矛盾するが「完全」に最も近づく。

 確率を扱う問題と相性が良く、IQや偏差値の出現率を簡単にシミュレートできる。

 例えばIQ 140(S.D.15)以上の出現率は0.3830%だから383/100000。これをモンテカルロ法で検証してみる。

 PHPで言えば rand(1,100000) の結果が <=383 となる確率と同じ。エクセルなら =RAND()*1000 の値が <=383 となる確率と同じ。「<=」は右辺以下。

 ここで生成される乱数1つは、「無作為に抽出された」かつ「能力に偏りのない受験者」1人を表す。簡単に <=383としたが、1,3,5...211...899という具合に好きな数字383個を選んでも良い。数字自体には意味はなく、存在が 383/100000 になっていれば良い。

 そして結果を出現率表で確認する。


100人の受験者で10回テストした場合(=100回の rand() を10セット)、

1回目: 1% 2回目: 1% 3回目: 0% 4回目: 0% 5回目: 0% 6回目: 1% 7回目: 0% 8回目: 0% 9回目: 0% 10回目: 0%

という結果に。7回は該当者が出ず、3回は1%=IQ 134〜135以上かもしれない精度。

1,000人の受験者で10回テストした場合、

1回目: 0.8% 2回目: 0.6% 3回目: 0.2% 4回目: 0.4% 5回目: 0.3% 6回目: 0.2% 7回目: 0.6% 8回目: 0.4% 9回目: 0% 10回目: 0.3% 

という結果に。1回は該当者が出ず、9回は0.2%〜0.8%=IQ 136〜143以上かもしれない精度。

10,000人の受験者で10回テストした場合、

1回目: 0.34% 2回目: 0.33% 3回目: 0.38% 4回目: 0.31% 5回目: 0.37% 6回目: 0.44% 7回目: 0.32% 8回目: 0.42% 9回目: 0.47% 10回目: 0.36%

という結果に。0.31%〜0.47%=IQ 138〜141以上かもしれない精度。

100,000人の受験者で10回テストした場合、

1回目: 0.356% 2回目: 0.339% 3回目: 0.327% 4回目: 0.372% 5回目: 0.396% 6回目: 0.384% 7回目: 0.368% 8回目: 0.354% 9回目: 0.369% 10回目: 0.409%

という結果に。0.327%〜0.409%=IQ 140〜141以上かもしれない精度。

1,000,000人の受験者で10回テストした場合、

1回目: 0.3793% 2回目: 0.3834% 3回目: 0.387% 4回目: 0.3853% 5回目: 0.3874% 6回目: 0.3843% 7回目: 0.3853%  8回目: 0.3853% 9回目: 0.3755% 10回目: 0.3796%

という結果に。0.3755%〜0.3874%=IQ 140以上かもしれない精度。


 383/100000の数字通り10万人以上の受験者が入れば安定(収束)する。その1/10の1万人の受験者でも誤差と言えるレベル。冒頭に書いた10,000通りに対し「1から10,000までのランダムな数字を1,000個くらい」と一致する。

 誤差やブレに関しては、ウェクスラー知能検査を含め一般的に「信頼区間」を用いる。

 簡単に言うと、出現率の小数点が消えるくらいの被験者を集めてテストを繰り返さないと、「多分その辺」くらいの確からしさということ。

 「毎回そんな数集めてテストしなきゃいけないの?」と言えばアナログ的にはそうだが、例えば先日書いた項目反応理論を用いたテストであれば、問題そのものに予め難度が設定されているので、各回の受験者数は少なくても構わない。ただし、問題の難度を高い精度で設定するために、上記のような被験者が必要になる。

 一度シミュレーションして検証が済めば後はIQ出現率表を見るだけ。例えばIQ 160以上の出現率は0.00317%=317/10000000(1,000万)だから、100万人の被験者のテストを10回繰り返すことで「誤差」と呼べる範囲に収まり、1,000万人の被験者×10回以上で「安定」と評価できる。しっかりと収束(近似)させたければ1億人以上を必要とする。

 これは偏りのない機械的な乱数だからこそであり、実際の人間でテストすると毎回偏っているためもっと沢山の人数または回数で検証する必要がある。

 ということから、IQ 150以上の出現率0.0429%(429/1000000)あたりが現実的な測定限界値だろう。

 ※見辛いことと引き換えに小数点4桁以上の精度で表にしているのは、「一目で大凡必要な分母がわかるように」が目的なので有効活用していただきたい。

 アップルやグーグル、アマゾンのような世界的に幅広い層の会員を抱えている企業が、電話番号や端末のシリアル番号またはクレジットカード番号などで認証し「1人1回」を適度な精度で実現すれば、いずれ「IQ測定AI」が誕生するかもしれない。

 この仕組みであれば、IQ 150を超えた域を測定するための問題の精度を高めるために、該当者に個別かつ動的に補正問題を出題できるから。例えば「この問題を確率分布が示す以上に解ける人が現れました。追加問題を受験してください。補正します」的な。

 IQとは相対値である以上ダイナミック(動的)なものであり(相場と同じ)、インターネットがなかった時代に世界中の人に同じ試験を受けさせ値を更新し続けることができなかったから固定されているだけ。10年に1回の標準化とかではなく、「慣れ」やフリン効果をその時その場で補正していけるのがイチバン良い。

 話はモンテカルロ法に戻って、「サイコロの各目の確率は?」とか「2つのサイコロの目の組み合わせは?」くらいなら全部書いて確認できても、「十分な数」があれば正規分布に沿うとか、 383/100000 の確率で存在するIQ 140を精確に測定するにはどのくらいの規模のテストが必要なのとか全部書き出して数えるのは大変。ちょっとプログラミングを覚え、7〜9行程度のコードを書けば1秒以内に計算が終わり、今まで1人で到底できなかったことができるようになる(生産性が高い)。

 マリリン・ボスサヴァントのモンティ・ホール問題も再三にわたって数学者達がケチをつけたため、結局コンピューターを使ってモンテカルロ法でシミュレーションし証明された。

 ちなみにBIG 1等(6〜10億円)の当選確率は4,782,969分の1。0,1,2の数字×14桁の組み合わせなので、これをPHP でrand(0,2)×14桁結合で生成して、第1172回の当選番号 01112211112102 に一致するまでに必要な回数の平均が4,782,969分の1付近で安定するのは18回目から。PHPの乱数は十分に精確に乱れている(笑)と言える精度。※計算は約1分15秒。

参考リンク:統計学的“知能指数”の眺め方。IQ 130以上は50人に1人いるのか。