2013年4月22日月曜日

乱数関数RANDの話:PC448


4月パソコンクラブではスプレッドシート(表計算)の勉強中だが、さまざまな関数についても学ぶ機会がある。関数として数学、統計、日付、財務などなどさまざまな分野のものがあるがビジネス、学問の世界ならともかく、私たちが日常生活の中で使う機会があるのは、簡単な数表を作るために合計を求めたり、四捨五入したり、平均値を出したり、日付関連の関数位だろうか。

もちろんスプレッドシートなるものを理解する上で関数というものの概念を知っておいた方がいいという意味で、あえて実際にはあまり使うことのない統計関係の関数なども使ってみるわけだ。

そんな関数の一つに乱数を発生させるRANDなる関数がある。この乱数というもの案外我々の生活の中で使われている概念で詳しいことはともかく、その概念中身は理解しておいた方がいいことだ。

例えば、NHKは定期的に報道番組の中で政治に関する世論調査の結果を報道する。その時、その調査方法として、「コンピュータで無作為に選んだ人を対象に電話を掛けて行った」という趣旨の説明をする。普通に聞いていればなんのことかよく分からない。

エクセル、Calcなどスプレッドシートやる場合、上で述べたようにいくつか関数を学ぶ機会があるが、その中で一度はこのRANDという関数を実際に学び体験しておけばいいと思うのだ。

世論調査の場合、まさになんの偏った恣意も意図もなく、無作為に電話を掛ける相手を選ばなければならない。そのために使うのが、乱数表なのである。そしてその乱数表を実験体験できるのがパソコンのスプレッドシートというわけだ。

実際の世論調査で乱数表がどのようなステップで使われているか、分からないが、問題は本当にコンピュータ・パソコンがその「乱数」を正確に作りだしているかどうかなのだ。そこで実際にRANDという関数をLibreオフィスのCalcを使って発生させてみた。またそれを見ていただくためにその「乱数表」を、Googleドライブ上に示してみた。乱数は小数点以下10桁の数字で表示されるが、わかりやすくするため、これを0から9の数字に置換えてみている。

その0から9までの数字がまさにランダムに発生しているかどうか、それは、それぞれの数字の発生の確率が1/10になっているかどうか、乱数発生数が増えれば、増えるほどそれぞれの数字発生確率が1/10に近づいていくかどうかでその精度が測れるのではないか。

今朝は時間がなく実際には、100個、500個発生させた乱数の度数分布を調べてみたが、100個より500個の方がそれぞれの乱数発生率が1/10に近くなっているかのように観察できた。(図1)同じように1000回、1万回という実験は可能である。
スプレッドシートならではのことだ。

このスプレッドシートにおけるRANDという関数に関して、精度、質はあまり高くないとする学説、学会もあるそうだ。別のスプレッド、別の関数によって精度の違いがあるらしい。

私が今回使ったのはLibreのCalc。さらにここで例示したことの論理自体が正しいのかどうか、確信はない。私自身のこと統計学だの数学になってくるとせいぜい高校生程度のレベル。詳しいことはよくわからない。しかし自分なりにやったこの結果では、まずはほぼ0-9の数字が1/10のに近い確率で発生していることが観察できたことだ。
これでそうした乱数表を使えば、人間の恣意的判断よりもはるかに無作為に近いものであること自体は証明できたと思うがいかがであろうか。

是非専門家の方のご指導をいただきたいものだ。


tad

関係記事:

RAND関数とは:weblio
ランダムな数値を作成する?RAND関数:relief 


0 件のコメント: