20130921Fuji

Rによる気象データ解析 7


富士山の気圧と東京の気温

 前回は、二つの変数の散布図を描き、それらの変数の相関係数を計算した。これまで東京の2013年8月の日々の平均気温、最高気温、最低気温という小さなデータを扱ってきたが、ここで少し大きなデータを扱ってRの様子を調べた。その結果、小さなデータでは気が付かなかったR側とエクセル側の取扱い上の問題点に気が付いた。

 これまでデータの作成はエクセルで行い、それをテキスト(スペース区切り)(*.prn)形式で保存し、そのファイルをRのread.tableコマンドで読み込んできた。エクセルでテキスト(スペース区切り)(*.prn)形式で保存しようとすると、複数シートは保存できないという警告メッセージが表示されるが、その他の制約についての説明は表示されてこなかった。ところがいざ作成したテキストファイルをRに読み込ませようとしたら、様々なエラーメッセージが表示されてしまった

 その一つは「列名よりも列数のほうが多いです」というものだった。そこで分かったことは、複数のデータ系列名が合体してしまっているということだった。エクセルでテキスト形式保存すると、英数字8文字以上のデータはスペース区切りされずに結合されてしまっていた。テキスト形式に保存してから、データ系列行を編集することもできるが、無用な作業を増やさないためには、データ系列名は英数字7文字以下にした方が賢明だ。しかし、系列名が短すぎると内容が分かりにくくなるため、今回は一旦テキスト形式に保存してから、系列名を編集した。

 一方、R側の問題として、データ系列名の先頭は英文字でなければならないようで、数字は許されないようだ。「2013」のような数字の系列名だと、先頭に「X」が追加されてしまう。namesコマンドで系列名を確認しておかないと、系列名をうまく指定できないことになる。これも無用な作業を増やさないためには、系列名を英数字にするときは、先頭の文字は数字でなく英文字にしておくべきだ。

 データを読み込む際に、「 12 行目には 4 個の要素がありません」というエラーも発生した。これもエクセルでテキスト形式保存する際に、有効桁数の多いデータがスペース区切りされずに、隣の列と合体していたために発生したエラーだった。

 ちなみに、Rでは欠測値を空白にしておくと、読み込み時にこれと同じエラーが発生する。欠測値は空白にせず、必ず「NA」を入れておく必要がある。ただ、大きなデータのの中に欠測値が1か所あるだけで、相関係数の計算結果は「NA」となってしまう。エクセルでも、欠測値に対しては、一つずつ対応が必要な場合があった。Rには、大きなデータの途中の欠測値に対するよい対応法があるかもしれないが、当面は欠測値があると結果が得られない状態である。

 気象庁のホームページのデータを利用して、富士山の気圧(富士山頂の現地気圧)と東京の平均気温の日々の値の表をエクセルで作成した。2012年と2012年の1月1日から10月31日までのデータを利用した。なお、2月29日のでーたは省いて、データの行数をそろえた。そのデータを以下のコマンドでデータフレームに読み込み、アタッチし、データ系列名を確認した。

Fuji.Tokyo <- read.table("t:\\r\\2012-2013Fuji-Tokyo.txt",header=T)
attach(Fuji.Tokyo)
names(Fuji.Tokyo)


すると、

[1] "Date2012" "Fuji.P2012" "Tokyo.T2012" "Date2013" "Fuji.P2013"
[6] "Tokyo.T2013"


と打ち返された。データ系列はそれぞれ、2012年の日付、2012年の富士山の気圧、2012年の東京の平均気温、2013年の日付、2013年の富士山の気圧、2013年の東京の平均気温である。

 それでは、2012年の富士山の気圧と2012年の東京の平均気温の相関関係を示す散布図をプロットしてみよう。

plot(Fuji.P2012,Tokyo.T2012)

と、打ち込むと、以下のグラフが描かれる。

Fuji2012P-Tokyo2012T.jpg"

相関係数は、

cor(Fuji.P2012,Tokyo.T2012)

と打ち込むと、
[1] 0.8726579

が得られる。

plot(Fuji.P2013,Tokyo.T2013)

と、打ち込むと、以下のグラフが描かれる。
Fuji2012P-Tokyo2012T.jpg"

相関係数は、

cor(Fuji.P2013,Tokyo.T2013)

と打ち込むと、
[1] 0.8481117

が得られる。なお、このように一部の数字などのみが変化したコマンドを打ち込むときは、上向き矢印を使って、以前打ち込んだコマンドをコンソールに呼び出し、その一部を変更すると手間が省ける。

日付をデータ系列から外して、相関行列を求めると、次のような結果が得られた。

        Fuji.P2012  Tokyo.T2012 Fuji.P2013 Tokyo.T2013
Fuji.P2012  1.0000000  0.8726579  0.7487514  0.8144523
Tokyo.T2012  0.8726579  1.0000000  0.8193896  0.9203631
Fuji.P2013   0.7487514  0.8193896  1.0000000  0.8481117
Tokyo.T2013  0.8144523  0.9203631  0.8481117  1.0000000


 この結果は、個人的には面白く思っており、一番相関が高いのは東京の今年の気温と昨年の気温の間の関係であり(相関係数0.92)、一番相関が低いのは富士山の今年の気圧と昨年の気圧の関係である(相関係数0.75)。富士山の気圧と東京の気温との相関はその中間にあり、昨年の富士山の気圧と東京の気温との関係の相関が最も高く(相関係数0.87)、次いで今年の富士山の気圧と東京の気温との関係の相関が高い(相関係数0.85)。年度の異なる富士山の気圧と東京の気温との相関は相関係数が0.81から0.82であるが、それでも富士山の今年の気圧と昨年の気圧の相関係数よりは高い。このことから、富士山の気圧は年による変化は、東京の気温の年による変化より大きいといえる。

 たった2年間の比較でそのようなことを言ってよいのかといわれそうである。そこで、1965年から2012年までのデータで検証することにした。その作業には思いのほか手こずった。それは、エクセルの表をテキスト形式にするところと、Rが計算した相関行列の表を整えるところだった。まず、エクセルがテキスト形式で保存するとき不具合が生じたり、欠測値があったりで手間がかかった。Rの相関行列は7列単位で出力され、縦に長い表となっていた。それをテキストコピーし、エクセルの上で表の体裁を整えた。作業を行った証拠として、得られた相関行列の一部を示す。 なお、富士山の測定値は、最近欠測値が多い。推定値を丁寧に求めれば、欠測値を減らすこともできるのだが、その作業を行わなかったため、2000年以降は欠測が目立つ。

Fuji-TokyoCorTable.jpg"

 この相関行列の対角線の片側について集計したところ、東京の気温同士の相関係数の平均は0.894、富士山の気圧と東京の気温の相関係数の平均は0.782、富士山の気圧同士の相関係数の平均は0.705となった。

 今回は、少し量の多いデータを実際に入力し、散布図を描き、二つの変数の間の相関係数の計算、複数の変数行列から相関行列の計算法を学んだ。データの変換やRの計算結果の利用についてはさらに勉強する必要を感じた。なお、今回用いた2012年と2013年の10月までの富士山の気圧と東京の気温のテキストデーターはFuji-Tokyo2012-2013.txtに置いた。

(2013.11.1)
 



ホームに戻る << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 >>