Excelで無作為復元抽出する方法

このQ&Aのポイント
  • Excelで無作為復元抽出する方法について質問です。
  • 質問はこれで本当に無作為に復元抽出することになるのでしょうかということです(笑)。
  • データを入れ替えても大して変わりません。
回答を見る
  • ベストアンサー

Excelで無作為復元抽出する方法

Excelで無作為復元抽出する方法について質問です。 https://note.chiebukuro.yahoo.co.jp/detail/n115818 を参考にしました。  A県の生徒1000 人が受けたテストの結果は以下の通りだった。問題は10問あり、配点は各々10点である。    得点  度数   相対度数    得点*度数    0 点 : 15 人   15/1000    0*15 =   0      10 点 : 48 人   48/1000   10*48 =  480   μ= 51.58    20 点 : 61 人   61/1000   20*61 = 1220   σ^2 = 473    30 点 : 84 人   84/1000   30*84 = 2520   σ≒ 21.993    40 点 :157 人  157/1000   40*157 = 6280    50 点 :216 人  216/1000   50*216 = 10800    60 点 :154 人  154/1000   60*154 = 9240    70 点 :107 人  107/1000   70*107 = 7490    80 点 : 85 人   85/1000   80*85 = 6800    90 点 : 55 人   55/1000   90*55 = 4950   100 点 : 18 人   18/1000   100*18 = 1800  以上の 1000 個の得点データに対し (1)I列(I12:I1011)にデータを入力。 (2)J12に =RAND() と入力し、それを(J13:J1011) にコピー。 (3)K12に   =INDEX($I$12:$I$1011,RANK(J12,$J$12:$J$1011,0)) …… (#) と入力して、K13 以降の k 列に抽出したい数だけコピー。  (#)については次のように解釈しています。   =RANK(J12,$J$12:$J$1011,0) は J12 が J12:J1011の中で何番目に大きいかを返す。たとえば 35 番目に大きかったとすると   =INDEX($I$12:$I$1011,35,0)) によって I12:I1011の35番目のセル I(11+35) = I46 のデータを返す。  J12:J1011 には乱数が入っているので Rank が返す値が重複することはない。  で、質問はこれで本当に無作為に復元抽出することになるのでしょうかということです(笑)。というのも母集団の μ= 51.58 に対し 1000個のデータから 20 個のデータを取り出すことを20回繰り返し、その平均値をとったら53以上になることが多いです。データを入れ替えても大して変わりません。  (I12:I1011)のデータが上記の度数分布表を満たしていることは確認しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

数学的なことはよくわからないんですが、 質問文を読んでいて気になったので、ちょっとだけ。 「乱数」ですので「無作為」であると言えます。 今回抽出した対象20件を含めた1000件から 次回の対象20件を抽出するのですから「復元抽出」していると言えますね。 次回、先ほどの20件を抜いた980件から抽出するのであれば「非復元」です。 > 20回繰り返し、その平均値をとったら53以上になることが多い 「~ことが多い」とはどの程度でしょう? 20回中16回以上だと多いかな、という気がしますが・・ というのは「私の」感覚でしかありません。 40回やったら平均値はどうでしょう? 60回やったら? 100回やったどうなります? 1000回やったらどうなるでしょう? 10000回なら?? 確率ってそういうもんなんじゃないかな、と。 関数の解釈は問題なさそうな気がします。 ただ、RANK関数は =RANK(対象,範囲,種類) で 第3引数の「種類」には0か1を指定、0だと降順、1だと昇順です。 つまり「対象が範囲内の降順(昇順)で何番目か」を返します。 案件の場合、0を指定しているから「大きい順に」ということですね。 というのも併せて覚えておきたいですね。 なお、第3引数を省略すると「0」降順を自動的に選択します。 なので、   =RANK(J12,$J$12:$J$1011) でも可能です。 同様、INDEX関数は主に =INDEX(範囲,行,列) で使います。 案件の場合、範囲が1列しかありませんから、 第3引数の「列」を省略しても正しく動きます。   =INDEX($I$12:$I$1011,RANK(J12,$J$12:$J$1011))   ※範囲が1行で収まっているときは「列」だけの指定でOKです。    =INDEX(A1:D1,3)  C1セルの値が返ってきます。 なお言わずもがな、原点は範囲の左上です。 ちなみに =INDEX((範囲1,範囲2・・・),行,列,領域番号) という使い方もあって、   =INDEX((A1:B4,D1:E4), 3, 2, 2) この場合、2番目の領域(D1:E4)の3行目2列目を返してきます。 本案件とは関連無しですが、マメ知識程度にどうぞ。

musume12
質問者

お礼

 丁寧な回答ありがとうございます。  Excel についての見解だけでも参考になりました。もう少し勉強して再度質問したいと思います。

関連するQ&A

  • EXCELで抽出

    EXCELで選択範囲を入力すると、ランダムで問題を抽出するテストを作りたいと思っています。 以前ここで質問させていただき、親切な方々のおかげで無事英単語テストを作成出来ました。 今回違うものを作ろうと奮闘中なのですが、どうしても分からないところが出てきたので教えて下さい。 現在EXCELで A2 番号   1~1380まで B2 問題文 C2 選択肢1 D2 選択肢2 E2 選択肢3 F2 選択肢4 G2 日本語訳 H2 解答正解番号 I2~I1381 乱数=RAND() J2~J381 順位 =IF(AND(ROW()-1>=$K$2,ROW()-1<=$K$3),RANK(I2,OFFSET($I$2,$K$2-1,0,$K$3-$K$2+1)),"") K2 選択範囲 始め K3 選択範囲 終わり M2~選択した単語番号 =IF(ISNA(MATCH(ROW()-1,$J$2:$J$1380,0)),"",MATCH(ROW()-1,$J$2:$J$2591,0)) N2~ 選択した問題文 =IF(M2="","",VLOOKUP(M2,OFFSET($A$2,$K$2-1,0,$K$3-$K$2+1,3),2,0)) O2 選択肢(1) =IF(M2="","",VLOOKUP(M2,OFFSET($A$2,$K$2-1,0,$K$3-$K$2+1,3),3,0)) P2 選択肢(2) Q2 選択肢(3) R2 選択肢(4) こういうデータがあり、K2とK3で選択した範囲(たとえば10~30等)を入力するとその範囲でランダムに重複ない選択範囲内の問題が抽出されるようなものを作りたいのですが、選択肢(2)~(4)の式がうまく出来ません。 やり方を教えていただけないでしょうか。よろしくお願いします。

  • エクセル データ抽出

    よろしくお願いします。 セルA3:E13にこのようなデータが入っています。 G4:H4にデータを入力すると、G8:K12に自動的にデータを抽出したいのですがよい方法はありませんでしょうか。 セルG4:H4のデータを入力しなおすたびに、条件に合うデータをG8:K12に抽出したいです。 実際にはもっと膨大なデータが入り、増え続けます。 エクセルに弱いのでどなたかお力添えください。 よろしくお願いいたします。

  • エクセルVBA抽出がうまく出来ません

    エクセル2013VBA初心者です。 入力シートからDBシートへ、DBシートから印刷シートへのデータ転記と印刷、入力内容のクリアまでは出来るようになりました。 DBシートの検索を行い、記録内容を入力シートに転記する抽出を行いたいのですが、下記構文を書いたところで問題が発生しました。 If Sh2.Range("A & i").Value = j And Sh2.Range("B & i").Value = k Then  でとまります。メッセージは ‘Range’メソッドは失敗しました:‘Workshieet’オブジェクトというものです。 やろうとしていることは、入力シートに設けた“E12”と”G12”の二つの検索項目をキーにDBシートの行を特定し、この行の内容を入力シートに反映しようということです。 入力シートの検索項目“E12”、 ”G12”はそれぞれDBシートのA列、B列に格納されている項目で、年度と連番です。サンプルとして入力シート"C5"に抽出しようとしているDBシートD列は申請者名です。 恐れ入りますがよろしくご教示頂きたく、お願い申し上げます。 Sub DBシートから力情報を抽出する () Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim i As Long Dim j As Long Dim k As Long Set Sh1 = Worksheets("入力") Set Sh2 = Worksheets("DB") j = Sh1.Range("E12").Value k = Sh1.Range("G12").Value With Sh2 For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row If Sh2.Range("A & i").Value = j And Sh2.Range("B & i").Value = k Then Sh1.Range("C5").Value = Sh2.Range("D & i").Value End If Next  End With End Sub

  • エクセルの関数で抽出

    EXCELで単語テストを簡単に作れないかと試行錯誤しているのですが、 A1 番号   1~2569まで B1 英単語 C1 日本語訳 D1 順位 =RANK(E2,$E$2:$E$2570) E1 乱数 =RAND() F1 選択範囲 F2 選択番号始め F3 選択番号終わり G1 抽出番号(A1~の抽出したもの) H1 選択英単語(B1~の抽出したもの) I1 選択日本語(C1~の抽出したもの) こういうデータがあり、H1~I1にF2とF3で選択した範囲(たとえば10~30等)を入力するとG1~I1にその範囲でランダムに重複ない選択範囲内の問題が抽出されるようなものを作りたいのですが、うまく出来ません。 やり方を教えていただけないでしょうか。よろしくお願いします。

  • Excel での母分散推定について

     母平均 169.6、母分散 66.5 の正規母集団 1000 個のデータから無作為抽出した 20 個の標本の標本分散(不偏分散)s^2 は 64.2 だった。  いま、母分散σ2は未知であるとして、σ2 の信頼区間を信頼度95%で推定する。  自由度 19 のカイ二乗分布両側 0.05% 点を k1、k2 とすると   k1 = CHIINV(1-0.05/2,19) ≒ 8.91(下側)   k2 = CHIINV(0.05/2,19)  ≒ 32.85(上側) であるから   (19*64.2)/32.85 ≦σ^2 ≦ (19*64.2)/8.91   19*64.2/32.85 ≒ 37.13   19*64.2/8.91 ≒ 136.90   ∴37.13≦σ^2≦136.90  確かに母分散 66.5 はこの範囲に入っていますが、感覚的にはずいぶんアバウトに感じます。こんなものなのでしょうか?

  • 条件によって抽出するデータを変える

    PHPやMySQLの勉強を兼ねてサッカーチームの試合データをテーブルに格納しました。 テーブルは下記のようにしました。他にもフィールドはありますがとりあえず3つのみ。 左からホームゲーム(H)かアウェーゲーム(A)か。ホームチームの得点。アウェーチームの得点です。 table名:gamedata h_a(VARCHAR型)|home_score(INT型)|away_score(INT型) H|5|3 A|2|1 A|3|4 このようなテーブルから「2得点以上5得点未満の試合」を抽出したい場合はどのようなSQL文になるのでしょか? 上記のテーブルだと「A|3|4」このデータだけ抽出されることになります。 問題点だと思うのは下記の二つ。 一つはホームゲームの場合は「home_score」に得点が格納されていますが、アウェーゲームの場合は「away_score」に得点が格納されていることになります。 二つ目はデータがまだ不十分で得点が何も入力されていないデータもあるという点です。こういうデータはスルーしたいです。 ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 連続していない日付データからの抽出

    エクセルで、   A   B 1 日付 売上   2 11/21  900 3 11/22 2000 4 11/26 1800 5 11/27 1300   D    E 1 日付  前日比 2 11/21 **% 3 11/22 **% 4 11/26 **% 5 11/27 **% とあります。 そこで、   G   H   I 1 日付 売上 前日比 2 任意 (抽出) (抽出) 3 と、Gに日付を入力したらH、Iにデータが抽出されるように関数を作りたいと思います。 Hには =INDEX(A2:B5,MATCH(G1,A2:A5,0),2) Iには =INDEX(D2:E5,MATCH(G1,D2:D5,0),2) と入力して抽出をしましたが、 例えばG列に元データには無い、「11/23」が入力されたときは、11/23よりも先で1番にくる11/26のデータを抽出するようにしたいのですが、どうしたらいいでしょうか? よろしくお願いします。

  • Accessでの抽出について

    Accessでのクエリーでの抽出の方法を教えてください。 たとえば「12345678」といったIDをもたせた人のデータが日付ごとにいくつかレコードがある場合に、クエリーのID欄の抽出条件欄には、「12345678」と入力すれば、その人のデータのみが表示されると思います。 そこで、 (1)その中の日付から、最新のものから3つを抽出したい場合。 (2)その中の日付から、2番目に新しいものを抽出したい場合。 において、クエリーの抽出条件になんて書いたらよいのでしょうか? できましたら、(1)(2)それぞれお答えいただければ幸いです。 どうぞよろしくお願いいたします。

  • Excel データの抽出について

    年始のお忙しいところ失礼いたします。 Excelにおけるデータ抽出についてお尋ねいたします。 抽出元データは左から1番目のシートのA列から順に、日付、部門名、商品名、数量0、記号、数量1、記号、数量2、記号、数量3、記号、残り数量となっています。 残り数量の列には、『=数量0-数量1-数量2-数量3』 という数式が記述してあります。 今回は、左から3番目のシートに、商品名、数量0、残り数量の3列の条件式を入力する場所と条件式に合致するデータを表示する場所を作成して、条件式に合致するデータを抽出することを検討しています。 条件式 商品名列:商品名の中から1つの商品を抽出 数量0:数量0=40、数量0<=10など数量0の値が入力した任意の数量と=またはは、以下(<=)を抽出 残り数量:残り数量<>0、残り数量<=20など残り数量の値が0以外か、入力した任意の数量以下を抽出 条件式を書き換える(抽出条件を変更する)ことが多いため、書き換える(条件を変更する)たびに、表示されるデータが更新されるようにしたいです

  • エクセル データ抽出方法

    エクセル初心者につき、教えてください! エクセルで名前、メールアドレス、学科と3つのデータがそれぞれ縦に入力された表があります。 ここから、特定の学科(1つだけ)が入力されている人だけをまとめて抽出したいのですが、どうすればよろしいでしょうか? その学科を専攻している人だけに、メールを送信する必要があるのです。 すみませんが、どうぞ宜しくお願いいたします。

専門家に質問してみよう