crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

植生自然度のデータ分析1 - 市街地の割合が一番高いのは大阪府、一番低いのは高知県。

今回はe-Stat(政府統計の総合窓口)から取得した、全国の植生自然度のデータを分析しようと思います。

f:id:cross_hyou:20190518091647j:plain

これがe-Statのサイトの画像ですね。このデータをダウンロードすると、

f:id:cross_hyou:20190518091735j:plain

こうなります。9行目は私が挿入した変数名です。

そもそも、植生自然度ってなんでしょうか?

B 自然環境 | 政府統計の総合窓口

ここをクリックすると定義がありました。

f:id:cross_hyou:20190518092009j:plain

人間の影響がどの程度あるかどうかを示す指標のようです。現在は収集中止だそうです。

早速、データをR言語で読み込んで分析(の真似事)をしてみましょう。

f:id:cross_hyou:20190518093024j:plain

str関数でデータの構造を確認します。

f:id:cross_hyou:20190518093138j:plain

144の観測と13の変数です。Skipする変数があるので、実質は12の変数です。

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

f:id:cross_hyou:20190518093358j:plain

北海道を見るとL9が46.5%となっています。L1が一番人間の手が入っていて、L10が一番自然に近いということが推察されます。

f:id:cross_hyou:20190518094032j:plain

f:id:cross_hyou:20190518094047j:plain

と定義にありました。やっぱりそうですね。

まず、Skip行を削除しましょう。subset関数を使いました。

f:id:cross_hyou:20190518094321j:plain

summary関数でデータの要約統計値を表示します。

f:id:cross_hyou:20190518094558j:plain

Yearを見ると、1988年、1992年、1997年の3つの調査年があることがわかります。もう20年以上も前なんですね。年毎の平均値を見てみましょう。aggregate関数を使いましょう。

f:id:cross_hyou:20190518095122j:plain

L1は1988年度は6.85が1997年度は7.23と増加していますが、その他はそれほど変動が無いように感じます。

次は、各都道府県ごとの平均値を見てみましょう。同じくaggregate関数を使います。

f:id:cross_hyou:20190518095819j:plain

L1、市街地、造成地の割合が一番大きい都道府県はどこでしょうか?rev関数とorder関数をつかってデータフレームを並び替えます。

f:id:cross_hyou:20190518100112j:plain

大阪ですね。東京、神奈川、愛知、埼玉、福岡と続きます。

その反対にL1の割合が一番小さい都道府県はどこでしょうか?

f:id:cross_hyou:20190518100521j:plain

高知が一番、市街地が少ないですね。徳島、北海道、山形、宮崎、島根と続きます。

定義を見ると、L6が植生地、L9が自然林、L10が自然草原でこの三つが人間の手が加わってない場所のようです。この3つを合わせた値が一番大きい都道府県はどこでしょうか?

まず、L6+L9+L10を計算します。

f:id:cross_hyou:20190518101826j:plain

それでは、この新しく作成した変数、L6910の大きい都道府県はどこか調べてみましょう。

f:id:cross_hyou:20190518101708j:plain

北海道が一番です。奈良、宮崎、鹿児島、和歌山、高知と続きます。

反対に小さい都道府県はどこでしょうか?

f:id:cross_hyou:20190518102505j:plain

広島が一番です。大阪、香川、岡山、滋賀、神奈川と続きます。東京が入ってないのと広島が一番というのは意外でした。

今回は以上です。

今回のR言語のコードです。


# データファイル(shokusei_shizendo.csv)の読込み
df <- read.csv("shokusei_shizendo.csv", skip = 8, na.strings = c("***", "-", "X") )

# str関数でデータ構造の確認
str(df)

# head関数で始めの数行を表示
head(df)

# Skip列を削除
df <- subset(df, select = -Skip)

# summary関数でデータの要約統計値を表示
summary(df)

# aggregate関数で年度ごとの平均値
aggregate(df[ , -c(1,2)], list(年度 = df$Year), mean)

# aggregate関数で各都道府県ごとの平均値
df_Pref <- aggregate(df[ , -c(1, 2)], list(地域 = df$Pref), mean)
head(df_Pref)

# L1の大きい都道府県はどこか?
head(df_Pref[rev(order(df_Pref$L1)), ])

# L1の小さい都道府県はどこか?
head(df_Pref[order(df_Pref$L1), ])

# L6+L9+L10の作成
df_Pref$L6910 <- df_Pref$L6 + df_Pref$L9 + df_Pref$L10

# L6910の大きい都道府県はどこか?
head(df_Pref[rev(order(df_Pref$L6910)), c("地域", "L6910", "L6", "L9", "L10")])

# L6910の小さい都道府県はどこか?
head(df_Pref[order(df_Pref$L6910), c("地域", "L6910", "L6", "L9", "L10")])