裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

疑似相関

2013年07月23日 | 統計学

統計学初心者の陥りやすい過ち

非エンジニアにもオススメ。数学が苦手な統計初心者がR言語を触ってみる。」だけどねえ...

例えば0.7以上、-0.7以下のデータが見つかれば、それは相関がかなり強いと言えます。私が揃えたデータでは0.8を超えるデータは犯罪数と犯罪率などのみで、これを無視すると、0.7以上の値が見つかります。

  • 睡眠時間と犯罪認知
  • 睡眠時間と外国人登録者数


さらに外国人登録者数と犯罪認知の数字を見てみると、0.67程度と高くもないですが低くも無い数値となっています。ここから睡眠と犯罪の相関する理由を仮説立て、検証にコストをかけるにはやや乏しい数値かもしれません。

やめときなさい。統計学以前の問題。というか,統計学だから出てくる結果。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いい加減な解答もあるなあ

2013年07月23日 | ブログラミング

誕生日についてのシミュレーション

誕生日が一年365日で一様かつ独立な100人をシミュレーションしてその中の誕生日が一致した人数の最大値を返す関数BD2を考えたいんですがどのようにすればいいのでしょうか。
またそのBD2を1000回実行するする方法も教えてください。

参考になるサイトを教えてくれるだけでもありがたいです。

に対しての回答プログラム(付値は ← に置き換えている)

BD2 ← function() {
  #1~365の乱数(整数)を100個出す
  dt ← as.integer(runif(100, 1, 365))
  #集計
  dt_tbl ← table(dt)
  #大きい順に並べる
  dt_tbl_s ← sort(dt_tbl,decreasing = TRUE)
  #1番目にmaxの個数
  return(as.integer(dt_tbl_s[1]))
}
x ← matrix(1:1000)
for (i in 1:1000) {
  x[i] ← BD2()
}
x

「1~365の乱数(整数)を100個出す」なら,sample(365, 100, replace=TRUE) でよい

「1番目にmaxの個数」(日本語に不自由な人みたいだけど)なら,ソートしたりする必要はない。単に max(dt_tbl_s[1]) でよい

1000 個の要素を持つベクトルを用意するには,x ← matrix(1:1000) ではなく x ← numeric(1000) でよい

さらにその中の最大値も,ちゃんと max(x) で出そう

ということで,以下のような回答案。

BD2 ← function() {
    max(table(sample(365, 100, replace=TRUE)))
}
BD2()
(ans ← replicate(1000, BD2()))
max(ans)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村