1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【R】データの可視化(散布図)

Last updated at Posted at 2021-01-19

この記事のコードをまとめたものはGithubにあります。

使用するパッケージ

library(tidyverse)
library(magrittr)

2005年にデータを絞る

data_2005 <- data %>% 
  filter(year == 2005) %>%  # 2005年のデータに絞る
  drop_na()

上位4政党に絞る

今回は簡単のために上位4政党に絞る。

data_2005 %>% 
  ggplot(aes(x = party_jpn)) +
  geom_bar() +
  labs(x = "")

image.png

data_2005 %<>% filter(party_jpn %in% c("自民党", "民主党", "社民党", "共産党"))

散布図

何の変哲もない散布図

恐らく正の相関がみられる。ただ、左下の存在が気になる。
この記事を読んでいる人はこのクラスタがなにか知っていると思うが...)

data_2005 %>% 
  ggplot(aes(x = exppv, y = voteshare)) +
  geom_point() +
  labs(x = "有権者一人当たりの選挙費用", y = "得票率", title = "選挙費用と得票率の散布図")

image.png

回帰直線を引きたい(信頼区間あり)

とりま、どのような相関関係か知りたい場合は、回帰直線を引いてしまおう。

data_2005 %>% 
  ggplot(aes(x = exppv, y = voteshare)) +
  geom_point() +
  geom_smooth(method = "lm") +
  labs(x = "有権者一人当たりの選挙費用", y = "得票率", title = "選挙費用と得票率の散布図")

image.png

回帰直線を引きたい(信頼区間なし)

信頼区間を出力したくない場合は、se = Fを指定しよう。

data_2005 %>% 
  ggplot(aes(x = exppv, y = voteshare)) +
  geom_point() +
  geom_smooth(method = "lm", se = F) +
  labs(x = "有権者一人当たりの選挙費用", y = "得票率", title = "選挙費用と得票率の散布図")

image.png

多項式回帰の回帰直線を引く

今回は多項式回帰の回帰直線を引く有用性はなさそうだが...

もし、引きたくなったら、geom_smooth()formula =を使って、回帰直線の式を指定しよう。
とりあえず、2次式と3次式の回帰直線を引いた。

data_2005 %>% 
  ggplot(aes(x = exppv, y = voteshare)) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ poly(x, 2)) + # 二次式
  geom_smooth(method = "lm", formula = y ~ poly(x, 3)) + # 三次式
  labs(x = "有権者一人当たりの選挙費用", y = "得票率", title = "選挙費用と得票率の散布図")

image.png

クラスタごとに層化する

では実際に層化して散布図を作成する。
左下のクラスタは正の相関を見せているが、真ん中のクラスタでは無相関と小さな正の相関が見られる。
このことから、回帰分析をする際は交差項を含めた良さそうなことがわかる。(大政党ダミーと言ったところか...)

data_2005 %>% 
  ggplot(aes(x = exppv, y = voteshare, color = party_jpn)) +
  geom_point() +
  geom_smooth(method = "lm") +
  labs(x = "有権者一人当たりの選挙費用", y = "得票率", 
       title = "選挙費用と得票率の散布図", color = "政党") # labs()で"color = "hoge""を指定するとlegendのタイトルを変更できる

image.png

大政党ダミーを作成し、層化した散布図を作成する

実際に政党規模でダミー変数を作成し、層化した散布図を作成した。
大政党よりも小政党のほうが傾きが大きいとわかった。

data_2005 %>% 
  mutate("dummy" = if_else(party_jpn %in% c("自民党", "民主党"), "大政党", "小政党")) %>% 
  ggplot(aes(x = exppv, y = voteshare, color = dummy)) +
  geom_point() +
  geom_smooth(method = "lm") +
  labs(x = "有権者一人当たりの選挙費用", y = "得票率", 
       title = "選挙費用と得票率の散布図", color = "政党規模")

image.png

pointを工夫すると...

(2021年10月10日追記)あまり意味のある良い図形ではないと思うので、コードだけを参考にしてください。

alpha =size =に過去の当選回数を指定した。当選回数が多いとpointの色が濃くなり、大きな点となる。
また、geom_point()で点を出力すると点が見ずらい。そのため、geom_jitter()で点を散らして出力する。
これを見ると、当選する政治家はしっかりと金を使っていることが分かる。

set.seed(1) # geom_jitter()の散らばり方はランダムのため、散らばり方を固定する。

data_2005 %>% 
  ggplot(aes(x = exppv, y = smd)) +
  geom_smooth(method = "lm", se = F) +
  geom_jitter(aes(color = as.factor(smd), 
                  alpha = previous,
                  size = previous),
              show.legend = F) +
  labs(x = "有権者一人当たりの選挙費用", y = "当選したか否か", 
       title = "選挙費用と得票率の散布図")

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?