アイスクリームの売れ方

問題

2016年1月17日の入試センター試験「数学①」の「数学I」(全問必答)の第4問および「数学I・数学A」の第2問(必答問題)で,2003〜2012年の120か月の各世帯の1日あたりアイスクリーム平均購入額と,東京の月別気象データの相関を調べる問題が出題された。

入試センター試験数学I第4問

データを調べる

アイスクリーム平均購入額については,「総務省統計局(2013)『家計調査年報』」が出典と書かれているが,Googleで検索して出てきた家計調査年報(家計収支編)平成25年(2013年)を見てもどこにあるのかわからない。

そこで,e-Stat のキーワード検索で「アイスクリーム」を入れる。一覧から「家計調査」→「家計収支編」をクリック,左で「データベース」を選び「表題一覧表示」をクリック,「月次」があるのは上の三つだけなので,最新のもの(一番上)の「DB」を選ぶ。

「1/5 表章項目」で「選択」をクリック,「金額」しかないのでそれを選択し,「選択項目表示」をクリックすると,下に入る。これで「OK」をクリック。

「2/5 品目分類(27年改定)」で「選択」をクリック,たくさんあるので右で「アイスクリーム」を検索。「356 アイスクリーム・シャーベット」が見つかるので,それを選択し,「選択項目表示」をクリックすると,下に入る。これで「OK」をクリック。

同様に,「3/5 世帯区分」で「二人以上の世帯(2000年〜)」,「4/5 地域区分」で「全国」,「5/5 時間軸(月次)」では「全項目表示」。

「表示位置」については,「品目分類」を「列1」,「時間軸(月次)」を「行1」にし,「レイアウトイメージの確認」をクリックして確認。

「ダウンロード」をクリックし,CSV形式でダウンロードする。

東京の気象データについては,気象庁Webページ『過去の気象データ』が出典と書かれているので,検索して過去の気象データ・ダウンロードのページに行く。

「地点を選ぶ」で「東京」を選ぶ。

「項目を選ぶ」で,データの種類「月別値」,項目「日最高気温の月平均」「降水量の月合計」「月平均相対湿度」「日最高気温25℃以上の日数(月)」を選ぶ。

「期間を選ぶ」で2003年1月〜2012年12月を選ぶ。

「CSVファイルをダウンロード」をクリックする。

CSVファイルはRでもExcelで開ける。Excelのほうが慣れている人は,Excelで使いやすいように整形するのがわかりやすいであろう。

念のため,このようにして得た世帯あたりアイスクリーム・シャーベットの消費金額を icecream.csv,東京の気象を tokyo-weather-2003-2012.csv として置いておいた(いずれもShift JIS)。いずれもRで読みやすいように整形してある。

グラフを描く

ここでは整形したデータを読む方法を書いておく:

icecream = read.csv("http://oku.edu.mie-u.ac.jp/~okumura/stat/data/icecream.csv", comment.char="#")
tokyo = read.csv("http://oku.edu.mie-u.ac.jp/~okumura/stat/data/tokyo-weather-2003-2012.csv")

データによっては日あたりの量に直す必要があるので,年・月を与えるとその月の日数を求める関数が必要になる。例えば次のようにすればよい。

days = function(year, month) {
    m = c(31,28,31,30,31,30,31,31,30,31,30,31)
    m[month] + ((month == 2) && ((year %% 4 == 0) && (year %% 100 != 0) || (year %% 400 == 0)))
}

プロットは例えば次のようになる。

plot(tokyo[,3], icecream[,3]/days(icecream$年,icecream$月),
     pch=16, xlab="平均最高気温(℃)", ylab="アイスクリーム購入額(円)")
平均最高気温・アイスクリーム購入額

ダウンロードしたファイルをRで直接読むこともできる。これが本来は望ましい(手作業が入らないので)。おおよそ次のようにすればよい(ファイル名はご自分のものに直してください)。fileEncoding="SJIS" はWindowsではデフォルトなので省略可。

x = read.csv("気象.csv", header=FALSE, fileEncoding="SJIS", skip=7)
y = read.csv("アイスクリーム.csv", header=FALSE, fileEncoding="SJIS", skip=11)
y$V1 = NULL
y$V2 = NULL
y$V3 = gsub("月", "", gsub("年", "/", y$V3))
y$V4 = as.numeric(gsub("[,*]", "", y$V4))
z = merge(x, y, by.x="V1", by.y="V3")
z$年 = gsub("/.*", "", z$V1)
z$月 = gsub(".*/", "", z$V1)