今年の夏は暑かったか
今年の夏は暑かった。で、大人の間で、こういう時によく話題になるのは、「子供の頃って、こんなに暑くなかったよね?」ってハナシだ。印象としては、そうだが、それを統計的に検証してみよう。
データ収集
とりあえず、子供の頃=1980年ということにする。1980年の8月の気温の情報は、気象庁|過去の気象データ検索から取ってくる。1980年当時、岐阜県に住んでたけど、とりあえず現在住んでいる横浜のデータを使うことにしよう。気圧とか天気概況とか、いろいろな情報を取れるけど、ひとまず最高気温と、参考までに最低気温の情報を取ってくる。
日 | 最高気温 | 最低気温 |
---|---|---|
1 | 24.6 | 19.6 |
2 | 22.1 | 18.9 |
3 | 20 | 18.2 |
4 | 21.5 | 18.4 |
5 | 25.5 | 19.4 |
6 | 24.1 | 18.9 |
7 | 26.3 | 19.6 |
8 | 23.7 | 18.7 |
9 | 27 | 17.6 |
10 | 26.9 | 18.8 |
11 | 28.8 | 19.1 |
12 | 29.9 | 20.9 |
13 | 30.1 | 21.9 |
14 | 31.4 | 23.4 |
15 | 31.8 | 23.6 |
16 | 23.8 | 20.7 |
17 | 27.7 | 20.8 |
18 | 27.7 | 22.4 |
19 | 28.7 | 21.9 |
20 | 26.5 | 21.4 |
21 | 27.8 | 21.5 |
22 | 25.1 | 21.9 |
23 | 28.7 | 22.9 |
24 | 30.2 | 22.7 |
25 | 27.3 | 21.9 |
26 | 22.1 | 17.7 |
27 | 21.2 | 17.3 |
28 | 27 | 19.8 |
29 | 25.5 | 22.1 |
30 | 27.3 | 22.4 |
31 | 24.4 | 22.8 |
日 | 最高気温 | 最低気温 |
---|---|---|
1 | 33.1 | 25.9 |
2 | 31.3 | 26.8 |
3 | 32.6 | 26.3 |
4 | 32.3 | 26.3 |
5 | 33.3 | 26.8 |
6 | 32 | 26.5 |
7 | 32.7 | 25 |
8 | 30.5 | 24.2 |
9 | 27.8 | 23.6 |
10 | 30.9 | 24.5 |
11 | 31.8 | 26 |
12 | 30.2 | 26.1 |
13 | 30.7 | 26.4 |
14 | 32.2 | 25.9 |
15 | 33.7 | 27.8 |
16 | 35.5 | 27.3 |
17 | 35.4 | 27.6 |
18 | 34.1 | 27.5 |
19 | 32.2 | 26.5 |
20 | 30.6 | 25.9 |
21 | 32.5 | 25.1 |
22 | 33.9 | 25.9 |
23 | 34.1 | 26 |
24 | 33 | 26.7 |
25 | 33.2 | 26.1 |
26 | 33.3 | 26.7 |
27 | 33.4 | 26.3 |
28 | 33.5 | 26.3 |
29 | 33.7 | 25.2 |
30 | 34.8 | 26.1 |
31 | 35.5 | 26.6 |
Rに読み込む
とりあえず、Windows版のRなら、ExcelでA列に1980年、B列に2010年のそれぞれの最高気温を並べた表でも作って、
> temp <- read.delim("clipboard", header=T)
するだけで、OK。Macユーザーは、そういうCSVファイルを作ってから、ファイル指定で読み込めばいい。
とりあえず、こういう表ができたとする。
> temp X1980年8月 X2010年8月 1 24.6 33.1 2 22.1 31.3 3 20.0 32.6 4 21.5 32.3 (以下略)
ちなみに、検定するまでもなく、平均気温が5〜6℃違うんじゃないか?という気がする。
何はなくともt検定
とりあえず、気温は正規分布してるだろうという前提に基づき、t検定する。
帰無仮説は、1980年8月と2010年8月の気温は等しい、ということで。α=0.05とする。
> t.test(temp[,1], temp[,2], paired=F, var.equal=T) Two Sample t-test data: temp[, 1] and temp[, 2] t = -10.2508, df = 60, p-value = 8.299e-15 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -7.675855 -5.169307 sample estimates: mean of x mean of y 26.28065 32.70323
p-value < 0.05 ということで、「等しい」という帰無仮説は棄却されるんだけれど、これだけだと、「等しくない」というだけで、1980年と2010年とでは、どっちが暑かたのか、分からない。だから、本当にやりたいことは、「1980年の方が気温が低い」ということを検定したいということだった。
> t.test(temp[,1], temp[,2], paired=F, var.equal=T, alternative="less") Two Sample t-test data: temp[, 1] and temp[, 2] t = -10.2508, df = 60, p-value = 4.149e-15 alternative hypothesis: true difference in means is less than 0 95 percent confidence interval: -Inf -5.375846 sample estimates: mean of x mean of y 26.28065 32.70323
まあ、やってみるまでもないって感じではあるのだけれど、p-value < 0.05 であるので、やっぱり統計的にも2010年8月の方が暑かったと言えるということが示せたんじゃないかな。