Rで何かをしたり、読書をするブログ

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

都道府県別の電子レンジ所有数量のデータの分析3 - 各変数のヒストグラムと相関係数マトリックスを描く

www.crosshyou.info

の続きです。前回の操作でデータフレームが整いました。今回から実際の分析に入ります。

まず、電子レンジの所有の多いところ、少ないところを確認しておきましょう。

2014年度で見てみると、茨城県が1105台で一番多いです。徳島県、福井県、香川県と続きます。

反対に、電子レンジの所有が少ないところはどこでしょうか?

沖縄県が1004台で一番少なく、宮城県、東京都、福岡県と続きます。所有台数の少ないところには、東京都の他、神奈川県、大阪府などあります。都会の県のほうが電子レンジの所有が少ない感じですね。

それぞれの変数の分布をヒストグラムで見てみます。はじめはmicrowave: 電子レンジの所有台数です。

900台のところにもデータがありますが、概ね山型の分布ですね。

次は、mitsudo: 可住面積当たりの人口密度です。

多くの観測値が左側によっています。こういうときは、対数に変換してみましょう。

こちらのほうが、左右対称の山型の分布に近いですね。なので、対数変換したmitsudoをデータフレームに加えましょう。

次はconve: コンビニエンスストアの数です。

これは山型の分布ですね。

single: 単身世帯の割合はどうでしょうか?

singleは右側に外れ値がある感じですが、山型の分布ですね。

最後のヒストグラムはincome: 一人当たり県民所得です。

incomeも右側に外れ値がありますね。たぶん、東京都ですね。その他は山型の分布です。

一通り、変数のヒストグラムを確認しました。今度は変数同士の相関係数を確認します。

microwaveと他の変数との相関係数を見てみると、l_mitsudoとは逆相関、つまり人口密度が高いほど電子レンジの所有は少ない、conveとは逆相関、つまりコンビニエンスストアの数が多いほど電子レンジの所有は少ない、singleとは逆相関、つまり単身世帯の割合が高いほど電子レンジの所有は少ない、incomeとは順相関、つまり一人当たり県民所得が多いほど電子レンジの所有は多い、という関係になります。

その他の変数間で相関関係が一番強い組み合わせは、l_mitsudoとincomeで0.61です。0.61ならば、これから回帰分析するときに多重共線性は気にしなくてもよさそうです。

今回は最後に相関マトリックスのヒートマップを作成して終わりましょう。

まずは、相関係数マトリックスをロング型のデータフレームに変換します。

var1とvar2をファクター型にするのは、相関マトリックスの順番がアルファベット順でなく、このままの順番で表示するようにするためです。
そうしたら、ggplot2のgeom_tile()とgeom_text()を使います。

こうすると、よくわかりますね。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

はじめから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# microwaveの保有上位
df |> filter(year == "2014年度") |> 
  arrange(desc(microwave))
#
# microwaveの保有下位
df |> filter(year == "2014年度") |> 
  arrange(microwave)
#
# microwaveのヒストグラム
df |> 
  ggplot(aes(x = microwave)) +
  geom_histogram(bins = 20, color = "white")
#
# mitsudoのヒストグラム
df |> 
  ggplot(aes(x = mitsudo)) +
  geom_histogram(bins = 20, color = "white", fill = "pink")
#
# log(mitsudo)のヒストグラム
df |> 
  ggplot(aes(x = log(mitsudo))) +
  geom_histogram(bins = 20, color = "white", fill = "purple")
#
# log(mitsudo)を作る
df <- df |> 
  mutate(l_mitsudo = log(mitsudo))
#
# conveのヒストグラム
df |> 
  ggplot(aes(x = conve)) +
  geom_histogram(bins = 20, color = "white", fill = "blue")
#
# singleのヒストグラム
df |> 
  ggplot(aes(x = single)) +
  geom_histogram(bins = 20, color = "white", fill = "red")
#
# incomeのヒストグラム
df |> 
  ggplot(aes(x = income)) +
  geom_histogram(bins = 20, color = "white", fill = "green")
#
# 各変数の相関係数
cor_mat <- df |>
  select(microwave, l_mitsudo, conve, single, income) |> 
  cor()
cor_mat
#
# 相関係数マトリックスのヒートマップ
# Step 1. long 形式に変換
cor_long <- cor_mat |> 
  as_tibble() |> 
  mutate(var1 = colnames(cor_mat)) |> 
  pivot_longer(-var1, names_to = "var2", values_to = "correlation") |> 
  mutate(
    var1 = factor(var1, levels = colnames(cor_mat)),
    var2 = factor(var2, levels = colnames(cor_mat))
  )
cor_long
#
# Step 2. ヒートマップを描画
ggplot(cor_long, aes(x = var1, y = var2, fill = correlation)) +
  geom_tile(color = "white") +
  geom_text(aes(label = sprintf("%.2f", correlation)), size = 6) +
  scale_fill_gradient2(low = "blue", high = "red", mid = "white",
                       midpoint = 0, limit = c(-1, 1)) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
#

 

(冒頭の画像は、Bing Image Creatorで生成しました。プロンプトは、natural wild land, a few trees, close up of white cosmos flowers, photographです。)