11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RAdvent Calendar 2019

Day 13

13日は金曜日である確率が一番高いのか?-fRiday the 13th

Posted at

R Advent Calendar 2019の13日目の記事です。

ネタ記事なのでお酒でも飲みながらユルーくお付き合いください。

#今日は何の日?
今日12月13日はwikiを見るとフランシス・ドレークが出港した日とか、ヨウスコウカワイルカが絶滅宣言された日と載っています。

#今日は何曜日?
今日は金曜日です。花金です。
ブラックフライデーもサイバーマンデーも終わりましたが、日本には花金があります!
飲んで食ってお金を使いましょう!

#今日は何日?
13日です。
13という数字は西洋での忌み数です。
日本に住んでいるのであまり実感しません。素数だなぁ・・・くらいです。
キリストが磔にされたのも13日です。
しかも金曜日です。

今日13日で金曜日!

#13日の金曜日なんです!

13日の金曜日といえばチェーンソーを持った大男!
ジェイソン・ボーヒーズの日です。

images.jpg

#結構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))

image.png

均一っぽいぞ?

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")

image.png

やっぱり均一っぽいぞ。

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)

image.png

うーむ、ダメですなぁ。
さすがにマスクは認識せんですか。

ほかのジェイソンなら?

image.png

認識してますね。
目や鼻、口がはっきりしていなければ見つけられないみたいですかね。

#まぁ映画みたことないんですけどね

実はチェーンソーよりもマチェッタを使うらしいですよ。
今日は「FRIDAY THE 13TH」をみんなで見よう!

#おわりっ!

キャプチャ.PNG

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?