www.crosshyou.info

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

読書記録 - 「戦国日本と大航海時代 秀吉・家康・政宗の外交戦略」平川新 著 中公新書

 

 日本な何故、植民地にならなかったのか?

それは、当時の日本がスペイン・ポルトガルと比較して遜色ない軍事力と政治力を持っていたからだということです。

戦国大名が覇権を争ったのが結果的に日本の軍事力を高め、ちょうど良いタイミングで秀吉・家康が日本を統一した、ということですね。

日本が当時、ヨーロッパからは「帝国」とみなされ、秀吉、家康は「皇帝」と呼ばれていたことが当時の日本の凄さを示しているそうです。当時のヨーロッパで、「皇帝」と呼ばれていたのはローマ皇帝だけで、スペインもポルトガルも「国王」だったそうです。そして、日本の大名たちもヨーロッパからは「国王」と呼ばれていたそうです。政宗は「奥州の国王」、鍋島は「肥前の国王」などと。

各地の気温と降水量の分析4 - クラスター分析をしてみる。

今回は、各地の気温と降水量のデータを使ってクラスター分析をしてみたいと思います。

まずは、データをR言語に読込みます。read.csv関数ですね。

f:id:cross_hyou:20181006155738j:plain

まずは、階層的クラスター分析をしてみます。

 

現場ですぐに使える! R言語プログラミング逆引き大全 350の極意

現場ですぐに使える! R言語プログラミング逆引き大全 350の極意

 

 この本「現場ですぐに使える!R言語プログラミング逆引き大全350の極意」を参考にやってみます。

まず、距離(または類似度)を求めるデータを行列にします。

f:id:cross_hyou:20181006160351j:plain

as.matrix関数でdataを行列に変換し、rownames関数で行列の列名を都市の名前にして、head関数で行列の始めの6行を表示しています。

こうして作成した行列の距離(類似度)を計算した結果を別の行列にまとめます。

f:id:cross_hyou:20181006160921j:plain

dist関数で距離の行列ができます。例えば、札幌と青森の距離(類似度)は211で、札幌と盛岡の距離(類似度)は236ですから札幌には青森のほうが似ているとわかります。

こうして作成した距離(類似度)行列をhclust関数で処理するとクラスター分析できます。

f:id:cross_hyou:20181006161645j:plain

plot関数で結果が樹形図で表示されます。

f:id:cross_hyou:20181006162113j:plain

樹形図の左端を拡大したところですが、岡山と高松、札幌と青森、水戸と千葉などと近接する県どうしがつながっているのがわかります近接する県は気温や降水量が似ていますからね。

いままでのクラスター分析は階層的クラスター分析と呼ばれるものです。

それとは違う、非階層的クラスター分析をしてみます。階層的クラスター分析は分析するデータの数が多いと計算量が膨大になることから、大量のデータ解析には向いていないそうです。そういうときは、非階層的クラスター分析をするそうです。

kmeans関数を使います。

f:id:cross_hyou:20181006163351j:plain

kmeans(行列, X)でXがクラスターの数です。樹形図を見ると大きくわけて3つに分かれるので3にしてみました。関数の結果は$clusterでわかります。札幌や青森、秋田は3のグループ、宮崎、鹿児島、那覇は1のグループと分類されます。

f:id:cross_hyou:20181006163709j:plain

$centersでクラスターの中心を、$sizeで各クラスター内のデータ数を表示します。

plot関数で散布図を描きましょう。

f:id:cross_hyou:20181006164440j:plain

f:id:cross_hyou:20181006164523j:plain

なんかわかりにくいですが、左下が緑、右上が黒の〇が多くプロットされています。

以上、クラスター分析でした。

 

各地の気温と降水量の分析3 - 寒暖差および、最大降水量と最小降水量の差を求める。

今回は各地の寒暖差及び、最大降水量の差を求めようと思います。

まずは、R言語にデータを読込みます。read.csv関数を使います。データを読み込んだら、summary関数でデータの基本記述統計値を表示しましょう。

f:id:cross_hyou:20181006125136j:plain

前回は各地の平均気温、最高気温、最低気温、年間降水量、最大降水量、最小降水量をapply関数とmax関数およびmin関数を使って作成しました。

作成手順は割愛して、結果だけを表示するとこうなります。

f:id:cross_hyou:20181006125908j:plain

f:id:cross_hyou:20181006125920j:plain

f:id:cross_hyou:20181006125932j:plain

f:id:cross_hyou:20181006125946j:plain

あ、年間降水量だと数値が大きくなってしまうので、平均降水量というベクトルを作成しましょう。

f:id:cross_hyou:20181006130220j:plain

最大降水量、最小降水量は以下のようになります。

f:id:cross_hyou:20181006130527j:plain

f:id:cross_hyou:20181006130541j:plain

鹿児島は最大降水量は452ミリ(月間)で最小降水量は71ミリですから雨の降る月と降らない月では差が大きいですね。

以上は前回の分析でした。今回は寒暖差と降水量差を計算してみましょう。

f:id:cross_hyou:20181006130918j:plain

寒暖差が大きいのは札幌、長野、山形、盛岡と北のほうの都市ですね。降水量差が大きいのは鹿児島、宮崎、熊本と南のほうの都市ですね。寒暖差と降水量差は逆相関の関係になっているようですね。plot関数で散布図を描いてみましょう。

f:id:cross_hyou:20181006131532j:plain

f:id:cross_hyou:20181006131544j:plain

一番左のプロット、寒暖差が12℃、降水量差が約150ミリの点は沖縄ですね。

試しに沖縄を除外して散布図を描いてみましょう。沖縄は47番目の要素なので、V寒暖差[-47]とすれば沖縄を除外できます。

f:id:cross_hyou:20181006132004j:plain

f:id:cross_hyou:20181006132019j:plain

逆相関という感じですね。cor.test関数で相関係数とその相関が有意かどうかの検定をしましょう。

f:id:cross_hyou:20181006132733j:plain

沖縄も含んだ場合には、相関係数は、-0.4146364で、p-value = 0.003759 < 0.05 ですから、有意に逆相関です。

f:id:cross_hyou:20181006132912j:plain

沖縄を含まない場合には、相関係数は、-0.666116で、p-value = 4.362e-07 < 0.05 ですから、有意に逆相関です。逆相関の度合いが高まっていますね。

これまでに作成した平均気温、最高気温、最低気温、寒暖差、平均降水量、最大降水量、最小降水量、降水量差の8つのデータを結合して新しいデータフレームを作成しましょう。data.frame関数で作成します。head関数で始めの6行を表示しています。

f:id:cross_hyou:20181006134020j:plain

こうしてデータフレームを作成すると、cor関数で相関マトリックスが作成できます。

f:id:cross_hyou:20181006134328j:plain

寒暖差は他のデータとは全てマイナス相関ですね。plot関数で散布図マトリックスが作成できます。

f:id:cross_hyou:20181006134618j:plain

f:id:cross_hyou:20181006134638j:plain

このような散布図のマトリックスができます。

 

各地の気温と降水量の分析2 - 一番気温の高い都市・一番降水量の高い都市はどこか?

今回も前回に引き続き、「日本の統計」の各地の気温と降水量のデータを使って、R言語の操作の練習をします。

まずは、read.csv関数でCSVファイルに保存してあるデータを読込みます。そして、それをsummary関数で基本統計量を算出します。

f:id:cross_hyou:20181006095821j:plain

このsummary関数の結果を見ると、平均気温が一番低い月は2月などとわかります。

今回は、都市ごとに一番平均気温が高い都市、一番降水量が多い都市がどこかを調べてみましょう。

まずは簡単に年間平均気温の高いところはどこか調べましょう。

f:id:cross_hyou:20181006101619j:plain

まず、平均気温のベクトルを作り、names関数でそれぞれの要素に都市名を付与しました。あとは、sort関数で並び替えるだけです。

f:id:cross_hyou:20181006101854j:plain

平均気温の低い順に並び替えました。札幌が一番低く、8.9℃です。那覇が一番高く23.1℃です。

年間降水量も同じようにやってみましょう。

f:id:cross_hyou:20181006102410j:plain

長野が一番雨が少ないのですね。一番多いのは高知だとわかります。

平均気温の棒グラフ、年間降水量の棒グラフを作成してみましょう。barplot関数です。

f:id:cross_hyou:20181006103601j:plain

f:id:cross_hyou:20181006103612j:plain

f:id:cross_hyou:20181006103625j:plain

f:id:cross_hyou:20181006103635j:plain

ヒストグラムを作ってみましょう。hist関数です。

f:id:cross_hyou:20181006103917j:plain

f:id:cross_hyou:20181006103928j:plain

f:id:cross_hyou:20181006104125j:plain

f:id:cross_hyou:20181006104153j:plain

hist関数で、labels=TRUEを加えると、このように度数も表示されます。

箱ひげ図を作成しましょう。boxplot関数です。

f:id:cross_hyou:20181006104443j:plain

f:id:cross_hyou:20181006104453j:plain

外れ値が上に一つ、下に三つありますね。上の外れ値は那覇、下の外れ値は札幌、盛岡、青森ですね。

年間降水量の箱ひげ図も作ります。

f:id:cross_hyou:20181006104803j:plain

f:id:cross_hyou:20181006104815j:plain

年間降水量には外れ値は無いですね。

では、それぞれの都市の最高気温、最低気温、最大降水量、最小降水量を調べてみましょう。

max関数で最大値、min関数で最小値がわかりますので、apply関数と組み合わせて算出します。

f:id:cross_hyou:20181006105344j:plain

dataのデータフレームでは、3列目が1月の平均気温で14列目が12月の平均気温なのでdata( , c(3:14)]としてその列だけで計算するようにしています。那覇が最高気温でも一番高いですが、注目はその次の大阪です。やっぱり大阪の夏って暑いんですね。

最低気温はどうでしょうか?同じようにやりましょう。

f:id:cross_hyou:20181006105911j:plain

札幌の平均気温が-3.6℃で一番低いですね。盛岡、青森、長野と続きます。

最大降水量の都市はどこでしょうか?

f:id:cross_hyou:20181006110411j:plain

鹿児島が最大降水県ですね、宮崎、熊本と九州が続きます。九州は台風がよく来るし雨が多いですね。

最小降水量の都市はどこでしょうか?

f:id:cross_hyou:20181006110852j:plain

前橋は雨が降らない月は23ミリしか降らないんですね。熊谷、岡山、甲府と続きます。

 

 

 

各地の気温と降水量の分析1 - 基本統計量(summary関数, apply関数, sd関数, mean関数)

いつものように、e-Stat(政府統計の総合窓口)のウェブサイトを見ていたら、総務省統計局のホームページに迷い込んで、「日本の統計」というページにアクセスしました。

f:id:cross_hyou:20181004184242j:plain

こういう画面です。総務省統計局のホームページから、「統計データ」>>> 「日本の統計」 >>> 「本書の内容」 >>> 「第1章 国土・気象」の画面です。

ここから、気温(平年値)のエクセルファイルを開いてみました。

f:id:cross_hyou:20181004184542j:plain

こういうファイルでした。よさそうですね。

降水量(平年値)のファイルも開いてみました。

f:id:cross_hyou:20181004184709j:plain

同じ形式ですね。

そこで今回はこの気温と降水量のデータを結合させて、R言語で分析(のまねごと)をしてみたいと思います。

f:id:cross_hyou:20181004190119j:plain

このように気温データと降水量データを合わせたCSVファイルを作りました。

これをread.csv関数でR言語に読込みます。

f:id:cross_hyou:20181004190215j:plain

年間平均気温の一番低い値は、8.90℃です。一番高い値は、23.10℃です。14℃ぐらい差があります。日本は南北に長いんですね。

年間降水量が一番少ない値は、933ミリです。多いのは2548ミリです。

最近、1時間に100ミリの猛烈な雨、とテレビでよく聞きましたが、年間降水量の多いところでも2548ミリですから1時間に100ミリの雨っていかに猛烈な雨なのかなんとなくわかりますね。

summary関数を使うと最小値、第1分位値、中央値、平均値、第3分位値、最大値がわかります。標準偏差はsd関数で求めることができます。apply関数と組み合わせて使いましょう。

f:id:cross_hyou:20181004190915j:plain

round関数で小数点2桁にしています。

気温の中で標準偏差が一番大きいのは、2月ですね。一番小さいのは8月ですね。

降水量の中で標準偏差が一番大きいのは6月ですね。一番小さいのは10月ですね。

平均値も計算しましょう。apply関数とmean関数です。

f:id:cross_hyou:20181004191526j:plain

気温が一番低い月は2月で、高いのは8月です。

降水量が一番少ない月は12月で多いのは7月です。

標準偏差を平均値で割った値、変動係数(CV)も計算しましょう。

f:id:cross_hyou:20181004191853j:plain

気温の変動係数が一番小さいのは8月、一番大きいのは1月ですね。

降水量の変動係数が一番小さいのは9月、一番大きいのは12月ですね。

こうしてみると月ごとに特徴があるのがわかりますね。

 

 

生産者の米穀在庫等調査の分析3 - 全国平均よりも多い・少ないで二分してクロス表分析をしてみる

今回は、生産者の米穀在庫調査のデータを、全国平均よりも多い・少ないで二つに分けてクロス表分析をしてみたいと思います。まずは、read.csv関数でCSVファイルに保存してあるデータを読込みます。summary関数で要約統計量も表示してみましょう。

f:id:cross_hyou:20181003124054j:plain

head関数で始めの6行を表示してみます。

f:id:cross_hyou:20181003124224j:plain

このデータフレームは、1行目が全国平均ですね。この数字よりも多いか少ないかでデータを多・少の2値をとるカテゴリカルデータに変換したいと思います。

ifeslse関数を使ってカテゴリカルデータを作りたいと思います。

f:id:cross_hyou:20181003130101j:plain

data$年度初.在庫量[-1]は1行目を除いた年度初.在庫量のデータで、

data$年度初.在庫量[1]は1行目の年度初.在庫量のデータ、つまり全国平均の540です。

クロス表はtable関数で簡単に作成できます。

f:id:cross_hyou:20181003130641j:plain

年度在庫量と供給計 <- table関数 を( )でくくってやると、「年度在庫量と供給計」というクロス表が作成されるのと同時にコンソール画面にも表示されます。在庫量と供給計には関連があるのでしょうか?chisq.test関数でカイ自乗検定をしてみます。

f:id:cross_hyou:20181003131132j:plain

p-value = 0.3457 > 0.05 なので、在庫量と供給計に関連は無い、という帰無仮説を棄却できません。

他の組み合わせはどうでしょうか?例えば、脱穀量と販売量はどうでしょうか?

f:id:cross_hyou:20181003131522j:plain

あ、これは完璧に関連していますね。カイ自乗検定をしてみます。

f:id:cross_hyou:20181003131647j:plain

p-value = 9.667e-11 < 0.05 ですから、関係ないという帰無仮説は棄却されます。ただ、クロス表に0という値の組み合わせがあるので、「カイ自乗近似は不正確かもしれません」と警告メッセージが出ました。こういうときは、フィッシャーの正確確率検定をします。fisher.test関数です。

f:id:cross_hyou:20181003132205j:plain

p-value = 1.914e-11 < 0.05 ですので、「脱穀量と販売量は関係無い」という帰無仮説が棄却され、「脱穀量と販売量は関係している」という結論になります。

 

生産者の米穀在庫等調査の分析2 - 飯用で消費する比率の高い都道府県は?

今回は、前回に引き続き、生産者の米穀在庫等調査のデータの分析をします。前回の調査で、長崎県の農家は飯用で消費、つまり自分で消費してしまう量が多いことがわかりました。そこで今回は、飯用で消費する量と販売する量比率を各都道府県で計算したいと思います。

まずは、CSVファイルに保存してあるデータをread.csv関数でR言語に読込みます。summary関数で要約統計値を表示します。

f:id:cross_hyou:20181002123019j:plain

早速、消費量 / 販売量 を計算したいと思います。

f:id:cross_hyou:20181002123401j:plain

最小値は、0.79%です。最大値は23.69%です。平均値は7.18%、中央値は6.20%です。

ヒストグラムで分布を見てみましょう。hist関数です。

f:id:cross_hyou:20181002123658j:plain

f:id:cross_hyou:20181002123714j:plain

10%以下の都道府県が大半ですね。

小さい順に並び替えて棒グラフを作ってみましょう。sort関数とbarplot関数です。

f:id:cross_hyou:20181002124219j:plain

f:id:cross_hyou:20181002124242j:plain

barplot関数で棒グラフを作成した直後に、abline(h=10)と入力して、10の水準に水平線を引いています。

どこが飯比率が高いのか、並び替えてみましょう。order関数を使ってデータフレームを並び替えます。

f:id:cross_hyou:20181002124726j:plain

東京の農家が一番、飯比率が高いですね。神奈川や大阪も飯比率は高いです。

長崎の飯比率は2番目ですね。

逆に低いところはどこでしょうか?

f:id:cross_hyou:20181002125139j:plain

北海道が一番、飯比率は低く、山形、秋田、青森、新潟と米どころが並びますね。

販売量と飯比率は逆相関のような気がします。plot関数で散布図を描いてみます。

f:id:cross_hyou:20181002125458j:plain

f:id:cross_hyou:20181002125507j:plain

一番左上の点が北海道ですね。北海道を除いてやってみましょう。

f:id:cross_hyou:20181002125828j:plain

f:id:cross_hyou:20181002125838j:plain

こちらのほうが逆相関という感じでしょうか。。それぞれの相関係数を計算してみましょう。cor関数を使います。

f:id:cross_hyou:20181002130151j:plain

北海道も含めたデータの相関係数は、-0.468です。北海道を除いたデータの相関係数は、-0.733です。やはり、北海道を除いたほうが相関係数の絶対値は大きくなりますね。これらの相関が有意かどうかcor.test関数で確認します。

f:id:cross_hyou:20181002130607j:plain

北海道を含むデータのp-vaueは0.0007944 < 0.05 です。

北海道を含まないデータのp-valueは4.622e-09 < 0.05 です。

どちらも0.05より小さいp-valueなので逆相関であることは有意と言えます。