Rでロト6を当てたい(1)
2年ほど前に某分析会社の人と以下のような会話をしたことがある。
自分:ロト6って均等に数字が出るんだったら予想できないっすか?
某分析者:いやー ロト6よりtotoの方が当てやすいっすよ
上記の会話の後、何もしてこなかったけど@gg_hatano氏がロト6の過去データをアップしてくれたので色々試してみる。
ロト6の、974回分の結果データを作りました
https://t.co/CRX9HjnTOY
— はたむ (@gg_hatano) June 13, 2015
データの準備
@gg_hatano氏のデータを正規化 & 978回分まで更新し、kashitan/loto6 · GitHubにアップした。 スキーマ定義は以下の通り。
Rからsqliteファイルにアクセスするには次のようにする。
> library(RSQLite) > library(dplyr) > # DBに接続 > con <- dbDriver("SQLite") %>% dbConnect(dbname = "loto6.sqlite") > > # 当選数字を取得 > nums <- dbGetQuery(con, "select time,num from numbers") >
Odd & Even 分析
6個の本数字のうち奇数と偶数は約半分ずつになるのではないか?という仮説に基づき、カウントしてみる。
> nums %>% + # 0:偶数, 1:奇数 + mutate(odd = num %% 2) %>% + # 回別に奇数の数をカウント + group_by(time) %>% + summarise(odd_n = sum(odd)) %>% + # 奇数の数毎に頻度をカウント + count(odd_n) %>% + # 構成比を計算 + mutate(p = round(n/sum(n) * 100,1)) Source: local data frame [7 x 3] odd_n n p 1 0 2 0.2 2 1 78 8.0 3 2 255 26.1 4 3 306 31.3 5 4 241 24.6 6 5 75 7.7 7 6 21 2.1 >
奇数と偶数が3個ずつの組み合わせは自分が思っていたよりも少なくて978回中306回(31.3%)
また全て奇数・偶数の組み合わせは過去23回(2.4%)となりほとんど発生していない。
当選確率を上げるには奇数は2〜4個が良さそう。
ヒストグラムを書いてみると次のようになる。
> nums %>% + mutate(odd = num %% 2) %>% + group_by(time) %>% + summarise(odd_n = sum(odd)) %>% + # ヒストグラムをプロット + ggvis(~odd_n, fill:="#F0F0F0") %>% + layer_histograms(width = 1) %>% + add_axis("x", title = "Number of Odd") %>% + add_axis("y", title = "Frequency") >
High & Low 分析
23以上をHigh、23未満をLowとして同様にカウントしてみる。
> nums %>% + # 0:23未満, 1:23以上 + mutate(high = num %/% 23) %>% + group_by(time) %>% + summarise(high_n = sum(high)) %>% + count(high_n) %>% + mutate(p = round(n/sum(n) * 100,1)) Source: local data frame [7 x 3] high_n n p 1 0 12 1.2 2 1 87 8.9 3 2 238 24.3 4 3 345 35.3 5 4 211 21.6 6 5 78 8.0 7 6 7 0.7 > > nums %>% + # 0:23未満, 1:23以上 + mutate(high = num %/% 23) %>% + group_by(time) %>% + summarise(high_n = sum(high)) %>% + ggvis(~high_n, fill:="#F0F0F0") %>% + layer_histograms(width=1) %>% + add_axis("x", title = "Number of High Number") %>% + add_axis("y", title = "Frequency") >
奇数/偶数よりかは尖っているけど23以上が3個は978回中、345回(35.3%)。
同様に23以上の数字を2〜4個にした方が当選確率は上がりそう。
上記の結果から数字選択の方針は以下とする
- 奇数の数は2〜4個
- 23以上の数は2〜4個
次はゲイル理論に基づきホットナンバーの分析してみるが長くなるので別の記事にする