今回は、コネティカット州ニューヘイブンの年平均気温のデータです。20世紀前半から中盤にかけての60年間のデータ。平均気温というとついつい地球温暖化が気になるのですが、まだこのころはそれほどシビアに考えられていなかった時代。それでもグラフを眺めてみると、なにやら増加傾向が見えるような見えないような。
※「データのお砂場」投稿順Indexはこちら
まあ、1か所の高々60年間の傾向から地球の温暖化を読み取るなど言語道断なので行いませぬ。年寄のおぼろげな記憶によるとこのデータセットの末尾付近の1960年代、70年代あたりは「そろそろ氷河期がくるんじゃないか」説が結構有力?で、学童だった私メは心配していたことを思い出します。いつの間に消えた(最近聞かない)のでせう?
グローバルな気候変動のxx年で0.y℃といった平均値のトレンドは私メのような一般の生活者には実感がわかず、どちらかというと最高値、最低値の振れ幅の拡大とか、異常気象など微分系のイベント発生で身に染みるのでありましょう。くわばらくわばら。
さてR言語付属のデータセットをアルファベット順(大文字優先)で眺めてます。今回のデータセットは nhtemp です。解説ページが以下に。
Average Yearly Temperatures in New Haven
コネティカット州ニューヘイブンは、イエール大学の所在地として有名みたいです。行ったことはありません。しかしかなり近づいたことはあり。ニューヘイブンの北方10マイルくらいのところにあるウオーターベリーという町まで行ったことがあります。木々に覆われた丘陵を上っていくと野生の七面鳥さんが群れをなしてやってきました。まあ、ニューヘイブンはそこそこ人口もいる海沿いの町みたいなので街中に七面鳥が闊歩しているとは思えないですが。
まずは生データ
いつものように生データを眺めてみます。そっけないです。素の時系列(ts)データ形式です。1912年から1971年までの60年間の年平均気温(華氏)の数値が並んでいるだけ。
処理例はあるのだけれども
上記の解説ページに処理例はあるのだけれども、時系列データをplotに与えてグラフ化しているだけです。こんな感じ。
せめてグラフをちょっとお化粧してみるか
上記処理例を実施で終わってしまうと何も進歩がないので、自主的に上記のグラフをお化粧してみることにいたしました。
まず、華氏(ファーレンハイト)表示を摂氏(セルシウス)に変換します。変換関数を自前定義してみました。やっぱり華氏より摂氏の方が体感的にわかりやすいし。なお、わたしゃ、米国でほぼ0Fの大寒波のボストンから、ほぼ120Fの夏至のデスバレーまで経験したので華氏スケールの約120F幅は体験あり~の。
また素のplotでなく 「いろいろお化粧ができる」ggplot2 を使ってプロットすることにいたしました。しかしggplot2はデータフレーム対象なので、タイムシリーズを渡してもプロットしてくれません。そのため、
タイムシリーズからデータフレームに変換
を試みました。一発で変換してくれる方法がわからなかった(data.frame関数にtsデータを渡すと、data.frameの1列にそのままtsデータが入ったものとなってしまいます)ので、以下のように力業で変換。
f2c <- function(fahrenheit) {return ((fahrenheit - 32.0)*5/9)} nhtempC <- f2c(nhtemp) year=start(nhtempC)[1]:end(nhtempC)[1] tempC=nhtempC[1:length(nhtempC)] nhtempC.df <- data.frame(year, tempC)
上記で、摂氏表現のデータフレーム化ができたので、ggplotしてみます。例によって「エコノミスト誌」風のグラフにしてみました。
library(ggplot2) library(ggthemes) p<-ggplot(data=nhtempC.df, aes(x=year, y=tempC))+geom_line(linewidth=2) p1<-p + labs(title="nhtemp") + ylab("Mean annual temperature in New Haven, CT (deg. C)") + theme_economist() p1
おんなじグラフなんだけれども。