エンジニアのスキルを試すコードパズル ─この問題、あなたは解けますか?

第7回t検定による問題解決、Rで実践できますか?~データサイエンティストの統計学─倉橋一成からの問題

問題

10万人の集団A、B、Cの群があります。これらの集団の身長の「平均値」が等しいか等しくないか、全員の身長を測定せずに判断したいと思います。それぞれの集団から100人ずつサンプリングしてt検定したらどうなるか、Rで計算してみましょう。

準備として、以下のコードを実行し、10万人分の身長データを3群作成してください。それぞれの群は以下のように想定しています。

  • A群とB群⇒ 平均値が170cmの集団
  • C群⇒ 平均値が175cmの集団
# A群のデータ生成
set.seed(1)
heightA <- 170 + 10*rnorm(100000)
# B群のデータ生成
set.seed(2)
heightB <- 170 + 10*rnorm(100000)
# C群のデータ生成
set.seed(3)
heightC <- 175 + 10*rnorm(100000)

準備ができたら、下記の4つの問題に解答してください。

【問1⁠⁠ A、B、C群からそれぞれ100人ずつサンプリングしたいです。下記の空欄(1)~(3)にあてはまるコードを埋めてください。

# A群のサンプリング
set.seed(11)
heightASmple <-   (1)  
# B群のサンプリング
set.seed(12)
heightBSmple <-   (2)  
# C群のサンプリング
set.seed(13)
heightCSmple <-   (3)  

【問2】A群 vs B群、A群 vc C群の身長の平均値をt検定し、5%有意であったか計算してください。計算に使ったRのコードと計算結果を提出してください。

【問3】問1と問2の操作を1000回繰り返したときのP値を求めてください。下記の空欄(1)と(2)にあてはまるコードを埋めてください。

PvalAB <- NA
PvalAC <- NA

# 問1のP値を算出
for( i in 1:1000 ){

  (1)  

}

# 問2のP値を算出
for( i in 1:1000 ){

  (2)  

}

【問4】問3で作成した1000回分のP値を使って、αエラーとβエラーに関してどのようなことが言えるか記述してください。計算に使ったRのコードと計算結果を提出してください。


難易度
★★☆☆(当該領域で、実務を一通り遂行していれば解けると思われるレベル)
言語/領域(Perl、Pythonなど)
R、データサイエンス
解答形式

ファイルアップロード形式

解答評価のポイント
有意差検定ができるかどうかを評価します。
挑戦を開始する前にご準備いただきたいもの

解答の提出方法はテキストファイル(.txt)をアップロードする形式です。Rで実行したコードや解答文をテキストファイルにまとめて記入してください。あらかじめ、⁠設問1.txt」を用意しておくとよいでしょう。

その他注意事項
  • 一度挑戦を開始すると、解答を送信しなかった場合でも、1回目のチャレンジは終了となります。
  • 何度でも挑戦できますが、最新の挑戦のみが採点されます。
  • 白紙に近いなど、採点不能なものは、フィードバックいたしかねます。
  • この問題の正解及びコードレビューは、技術評論社のサイトこの連載上にて掲載します。優秀な解答、面白い解答をいただいた方は、ニックネーム、解答内容、解答フィードバック内容を公開させていただく可能性があります。ご了承ください。
解答受付先
https://codeiq.jp/ace/kurahashi_issei/q173
掲載期間(開始~終了)
1月23日(水)~2月7日(木)
採点可能人数
30人
想定時間(分)
30分~
制限時間
なし

おすすめ記事

記事・ニュース一覧