無作為抽出と乱数表の作成(作為が混じることを防ぎます)

 母集団から個体を抜き取ることを標本抽出とよびますが、その抜き取り方に作為が混じらないようにするために、無作為抽出 (Random sampling) とよばれる手法が使われます。

乱数表 Table of Random Numbers

 古くからある無作為抽出の方法として、乱数表 を用いたものがあります。乱数表とは、0 から 9 までの数字を同じ確率で取り出して並べた表のことです(統計学の本の巻末に付属しています)。例として、以下の 10 人(架空人物です)から無作為に 5 人を重複なしで抽出してみます。

氏名 割当番号
刀祢 佐一郎 0
土江 幾 1
羽後 亨昌 2
当真 光能 3
西村 樹里 4
三間 悦郎 5
十一谷 健作 6
風間 朝都 7
百武 岳美 8
新野 みずき 9

 それぞれ 0 から 1 までの数字が割当てられています。
 乱数表から適当な数字をもってきて、たとえば

9 0 5 0 9 6 1 8 4

という数字をメモします。ここから重複した番号を消して

9 5 0 6 1 8 4

と書き直します。先頭から 5 番目までの数字を読み取って、それぞれの番号に対応する人を抜き出して無作為抽出が完了します。

新野 みずき、三間 悦郎、刀祢 佐一郎、十一谷 健作、西村 樹里

 100 人から 10 人を選ぶような場合は、それぞれに 00 から 99 までの 2 桁の番号を割り当てます。乱数表の数字も 2 桁ごとに区切って

40|28|58|53|95|59|46|53|06

とすれば、同じように無作為抽出できます。
 

Excel による無作為抽出

 もちろん現代ではコンピュータを用いて無作為抽出を行ないます。ただし、その原理は乱数表を用いるものとほとんど同じです。ここでは Excel による比較的簡単な無作為抽出法を紹介します。先ほど載せた名簿の氏名の列だけコピーして、新しいワークシートのセル B2 に貼りつけてください。

重複を許して抽出します

 重複を許して名簿から 3 人を抽出してみます。

 INDEX関数による重複あり抽出

 セル D2 には

=INDEX($B$3:$B$12,RANDBETWEEN(1,10))

と入力して D5 までオートフィルします。INDEX関数は範囲と範囲内の相対的な行と列の位置を指定して該当するセルのデータを取り出します。

=INDEX(範囲,行位置[,列位置])

 3つめの引数(列位置)は省略可能なので、たとえば

=INDEX($B$3:$B$12,1)

と記述するとセル B2 ~ B12 の範囲の 1 行目にある「刀祢 佐一郎」を抜き出します。また RANDBETWEEN関数は指定した2つの引数の間にある整数乱数を返すので、

= RANDBETWEEN(1,10)

と入力すれば 1 から 10 までの無作為な整数を返すことになります。したがって

=INDEX($B$3:$B$12,RANDBETWEEN(1,10))

と入力することで、指定範囲内のランダムな行を抜き出すことになります。

重複しないように抽出します

 今度は重複しないように名簿から 3 人を抽出します。

 INDEX関数とRANK関数による重複なし抽出

 セル D8 に

=RAND()

と入力して D10 までオートフィルして 3 つの乱数を用意しておきます。セル D2 には

=INDEX($B$3:$B$12,RANK.EQ(D8,$D$8:$D$10))

と入力します。ここに RANK.EQ は指定範囲内の数値の順位を返す関数で (Excel2007 以前のバージョンでは RANK関数を使用してください)

=RANK.EQ(数値,参照[,順序])

で指定した数値が参照範囲内で何番目にあるかを返します。[順序] は省略可能で、その場合は大きい順(降順)となります。すなわち

=RANK.EQ(D8,$D$8:$D$10)

はセル D8 の数値がセル D8 ~ D10 の中で何番目にあるかという数値を返します。オートフィルによって D8 の部分は D9, D10 となるので、それらの値が重なることはなく、重複なしで抽出することになります。VBA でプログラムを作ると、より簡単に無作為抽出できるようになります。そのあたりのことは 言葉の工房あとりえこばと を参照してください。 ≫ 数学事典

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。