R Advent Calendar 2019の13日目の記事です。
ネタ記事なのでお酒でも飲みながらユルーくお付き合いください。
#今日は何の日?
今日12月13日はwikiを見るとフランシス・ドレークが出港した日とか、ヨウスコウカワイルカが絶滅宣言された日と載っています。
#今日は何曜日?
今日は金曜日です。花金です。
ブラックフライデーもサイバーマンデーも終わりましたが、日本には花金があります!
飲んで食ってお金を使いましょう!
#今日は何日?
13日です。
13という数字は西洋での忌み数です。
日本に住んでいるのであまり実感しません。素数だなぁ・・・くらいです。
キリストが磔にされたのも13日です。
しかも金曜日です。
今日13日で金曜日!
#13日の金曜日なんです!
13日の金曜日といえばチェーンソーを持った大男!
ジェイソン・ボーヒーズの日です。
#結構13日で金曜日ってない?
お、今日13日じゃん、しかも金曜日じゃん!
って思う日が結構あるのですが、そう感じるのは私だけ?
13日という日にちは金曜日になる確率が高いのでしょうか?
調べてみると似たように記事がちらほら出てきます。
同じようなこと考える人はいるもんですね。
#曜日が一周するのはいつか?
一週間は七日間。31日まである月もあれば、29日で終わる日もある。
そして、たまーに現れるうるう年(閏年)によって曜日は徐々にずれていきます。
サンプルとして何年を取り出したら確率を計算するための1セットとして成り立つでしょうか?
グレゴリオ暦では閏年の挿入に規則があり、4で割り切れる年と400で割り切れる年に閏年が入るそうです。
つまり西暦1~400年をとってきたら閏年を網羅して曜日を採取できるわけです。
この考え方で400年の日数を発生させて金曜日である日数を計算してみましょう。
#データ数は正義!!データ沢山!万歳!!
とにかくデータを用意しろ!400年の日時と曜日データを用意しろ!話はそれからだ!
library(stringr)
library(lubridate)
library(ggplot2)
library(tidyverse)
make_days<-seq(ymd("1000-01-01"),ymd("1399-12-31"),1)
week_day<-wday(make_days,label=TRUE,local="USA")
only_day<-str_sub(make_days,9,10)
df_jason<-data.frame(make_days=make_days,week_day=week_day,only_day=as.factor(only_day))
ggplot(df_jason,aes(x=only_day,y=week_day))+
geom_bar(stat="identity",aes(fill=week_day))
均一っぽいぞ?
1~31の金曜日である確率を計算してみよう。
df_jason$number <- 1
df_jason_2 <-
df_jason %>%
group_by(only_day,week_day) %>%
summarize(sum_day=sum(number)) %>%
# filter(week_day=="Fri") %>%
# arrange(desc(sum_day))
arrange(only_day,week_day)
df_jason_3 <- data.frame(df_jason_2)
bind_kinyoubi<-NULL
for(i in seq(1,nrow(df_jason_3),7)){
end <- i+6
ratio_week_day <- df_jason_3[i:end,3] / sum(df_jason_3[i:end,3])
kinyoubi <- ratio_week_day[6]
bind_kinyoubi <- c(bind_kinyoubi, kinyoubi)
}
df<-data.frame(x=1:31,ratio=bind_kinyoubi)
ggplot(df,aes(x=x,y=ratio))+
geom_bar(stat="identity")
やっぱり均一っぽいぞ。
df[order(df$ratio,decreasing=T),]
x ratio
6 6 0.1433333
13 13 0.1433333
20 20 0.1433333
27 27 0.1433333
1 1 0.1431250
4 4 0.1431250
8 8 0.1431250
11 11 0.1431250
15 15 0.1431250
18 18 0.1431250
22 22 0.1431250
25 25 0.1431250
29 29 0.1429842
30 30 0.1429545
2 2 0.1427083
3 3 0.1427083
9 9 0.1427083
10 10 0.1427083
16 16 0.1427083
17 17 0.1427083
23 23 0.1427083
24 24 0.1427083
5 5 0.1425000
7 7 0.1425000
12 12 0.1425000
14 14 0.1425000
19 19 0.1425000
21 21 0.1425000
26 26 0.1425000
28 28 0.1425000
31 31 0.1425000
同率一位がいっぱい。
ということでどの日にちも金曜日を迎える回数は同じくらいである!
#では13日に絞ったら?
ratio_week_day_2 <- df_jason_3 %>% filter(only_day==13)
only_day week_day sum_day
1 13 Sun 687
2 13 Mon 685
3 13 Tue 685
4 13 Wed 687
5 13 Thu 684
6 13 Fri 688
7 13 Sat 684
金曜日が一位です!
400年間13日の曜日数をカウントしたら、他の曜日よりも3,4回くらいは金曜日が多い!
#ネット上の記事では・・・
【理系】『13日は金曜日になる確率が1番高い』という噂を理系が本気で証明してみた話
映画サマーウォーズでも出てきたモジュロ演算を使って金曜日の日数の総和を計算していらっしゃいます。(すごい!)
結果が一致してますね。
いつか入試で出てくるかもしれないので、ほかの日でも最も多い曜日を見てみましょうか!
#よろしくおねがいしまぁぁぁぁぁぁす!!(ctrl + R もしくはf5)
bind_wd3<-NULL
for(o in 1:31){
ratio_week_day_3 <- df_jason_3 %>%
filter(as.numeric(only_day)==o)
bind_wd3 <- rbind(bind_wd3, ratio_week_day_3[ratio_week_day_3$sum_day == max(ratio_week_day_3$sum_day),] )
}
only_day week_day sum_day
1 01 Sun 688
2 02 Mon 688
3 03 Tue 688
4 04 Wed 688
5 05 Thu 688
6 06 Fri 688
7 07 Sat 688
8 08 Sun 688
21 09 Mon 688
31 10 Tue 688
41 11 Wed 688
51 12 Thu 688
61 13 Fri 688
71 14 Sat 688
11 15 Sun 688
22 16 Mon 688
32 17 Tue 688
42 18 Wed 688
52 19 Thu 688
62 20 Fri 688
72 21 Sat 688
12 22 Sun 688
23 23 Mon 688
33 24 Tue 688
43 25 Wed 688
53 26 Thu 688
63 27 Fri 688
73 28 Sat 688
13 29 Sun 644
34 29 Tue 644
24 30 Mon 631
44 30 Wed 631
54 31 Thu 402
さて、日付それぞれの一番確率の高い曜日が分かりました。
上司から「今日何曜日だっけ?」と聞かれたら「400年周期で考えたら最も出現頻度が高いのは金曜日なので金曜日だと思います!」とバリバリの頻度観測主義で答えてやりましょう!
え?日曜日が終わったばかりだから今日は月曜日?
いつだって気分は金曜日で行きましょう!飲みに行きましょう!
#蛇足
せっかく13日の金曜日なのでもうちょっとジェイソンさんにまつわる"何か"をやっておこうかと。
#jsonデータで13日のデータを吐き出す
駄洒落です。
library(jsonlite)
jason_is_god <- "C:\\Users\\Documents\\jason.json"
write_json(ratio_week_day_2, jason_is_god)
書きだせましたか?
読み込みはこうです
read_json(jason_is_god)
#ジェイソンをopenCVは人だと見分けられるか?
マスクですからね。顔じゃないですからね。
どうなんでしょう?
library(opencv)
jason = ocv_read("jason_1.jpg")
ocv_face(jason)
ocv_display(jason)
うーむ、ダメですなぁ。
さすがにマスクは認識せんですか。
ほかのジェイソンなら?
認識してますね。
目や鼻、口がはっきりしていなければ見つけられないみたいですかね。
#まぁ映画みたことないんですけどね
実はチェーンソーよりもマチェッタを使うらしいですよ。
今日は「FRIDAY THE 13TH」をみんなで見よう!
#おわりっ!