R packages
library(DT)
library(gapminder)
library(gghighlight)
library(ggrepel)
library(stargazer)
library(tidyverse)
scatter plot
) は 2
つの連続変数(=間隔尺度、比率尺度で測定された変数)間の関係を調べる代表的な可視化方法ggplot()
と
geom_point()
幾何オブジェクト | 意味 |
ggplot() |
図を描くキャンバスを用意する |
geom_point() |
散布図を描く |
1996-2021年総選挙データから、2014年データを抜き出し「選挙費用」と「得票率」の散布図を描いてみる
必要なデータは次の 2 つ:
exp
)voteshare
)<- read_csv("data/hr96-21.csv",
df na = ".")
df09
と名前を付ける<- df %>%
df09 filter(year == 2009)
x
に、縦軸上の位置は y
にマッピングするx
軸に設定(ここでは「選挙費用
exp
」)y
軸に設定(ここでは「得票率
voteshare
」)%>%
df09 ggplot() +
geom_point(aes(x = exp,
y = voteshare))
exp
,
votehsare
x
軸と y
軸にラベルを付けるggtitle()
関数を使ってメインタイトルを付ける%>%
df09 ggplot() +
geom_point(aes(x = exp,
y = voteshare),
color = "royalblue") +
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3")
shape = 番号
でドットの形を指定できる△
) に指定してみる%>%
df09 ggplot() +
geom_point(aes(x = exp,
y = voteshare),
color = "royalblue",
shape = 2) +
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3")
●
」0 〜 14
の場合・・・中身が透明で枠線のみの形color
引数で調整15 〜 20
の場合・・・中身が埋まり枠線のない形15 〜 25
の場合・・・枠線は
color
、内側の色塗りは fill
で調整shape = 22
を使い「内側がバイオレット」で「枠線がアクアマリン」の「□
」を表示させてみる %>%
df09 ggplot() +
geom_point(aes(x = exp,
y = voteshare),
color = "violet", # 枠線の色を指定
fill = "aquamarine", # 内側の色塗り指定
shape = 22) + # ドットの形を指定
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3")
exp
と votehsare
という 2 つの情報 (= 2 次元) をもつif_else()
関数を使って民主党ダミー
dpj
を作成し、散布図に次元を追加してみるaes()
関数の内側に shape = dpj
と指定してみるaes()
の内側に shape = dpj
と指定%>%
df09 mutate(dpj = if_else(seito == "民主", "民主党", "非民主党")) %>%
ggplot() +
geom_point(aes(x = exp,
y = voteshare,
shape = dpj)) + # dpj をドットの形で区別
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3")
shape = dpj
と指定すると、Rが自動的に「●
」と「▲
」を割り当てる○
」(空っぽのマル)×
」scale_shape_manual()
を使う%>%
df09 mutate(dpj = if_else(seito == "民主", "民主党", "非民主党")) %>%
ggplot() +
geom_point(aes(x = exp,
y = voteshare,
shape = dpj)) + # dpj をドットの形で区別
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3") +
theme(legend.position = "bottom") + # レジェンドの位置を下に
scale_shape_manual(values = c("民主党" = 1, # 「○」は 1
"非民主党" = 4)) # 「×」は 4
●
」と「▲
」よりずっと見やすくなったaes()
関数の内側に color = dpj
と指定してみる%>%
df09 mutate(dpj = if_else(seito == "民主", "民主党", "非民主党")) %>%
ggplot() +
geom_point(aes(x = exp,
y = voteshare,
color = dpj, # dpj を色分け
alpha = 0.5)) + # 透明度を追加
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3") +
theme(legend.position = "bottom") # レジェンドの位置を下に
scale_color_manual()
レイヤーを追加values
c("値1" = "色1", "値2" = "色2", ...)
のように名前を付けcharacter
型ベクトルを指定%>%
df09 mutate(dpj = if_else(seito == "民主", "民主党", "非民主党")) %>%
ggplot() +
geom_point(aes(x = exp,
y = voteshare,
color = dpj, # dpj を色分け
alpha = 0.5)) + # 透明度を追加
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3") +
theme(legend.position = "bottom") + # レジェンドの位置を下に
scale_color_manual(values = c("民主党" = "blue",
"非民主党" = "gold"))
自民党から民主党に政権交代が起こった 2009 年総選挙では、民主党候補者の方がより多く得票している傾向がよく分かる
ggplot2
で使える色は 657 種類!
"red"
、"skyblue"
、"royalblue"
のように文字で指定できる
Rで使用可能な色のリストはコンソール上で colors()
と打ち込むと確認できる
ここでは最初の 6 色を示す
head(colors())
[1] "white" "aliceblue" "antiquewhite" "antiquewhite1"
[5] "antiquewhite2" "antiquewhite3"
RGB
カラー(HEmathコード;
16進数)で指定することもできる"#FF0000"
、ロイヤルブルーなら
"#4169E1"
と表記geom_smooth(method = lm)
を加えるggplot()
の内側に aes()
関数を指定し、そこに x
軸、y
軸、color
の設定をする<- df09 %>%
plot_vs_09 ggplot(aes(x = exp,
y = voteshare,
color = seito,
alpha = 0.5)) + # ドットの透明度を指定
geom_point() +
geom_smooth(method = lm) + # 回帰直線を引く
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3")
plot_vs_09
facet_wrap()
関数を使って、政党ごとに見やすく表示してみる+
plot_vs_09 facet_wrap(~seito) # 政党ごとに facet する
x
軸のラベルが長く、左右でオーバーラップしているx
軸のラベルを 40度回転させてみるtheme()
レイヤーを追加し、axis.text.x
を指定+
plot_vs_09 facet_wrap(~seito) + # 政党ごとに facet する
theme(legend.position = "none") + # レジェンドを非表示
theme(axis.text.x = element_text(angle = 40, vjust = 1, hjust = 1)) # 35度回転
ggplot()
に渡す前に seito
を
factor
化して、順番を変える%>%
df09 mutate(seito = factor(seito,
levels = c("民主", "自民", "公明", "みんな",
"共産", "国民新党", "幸福", "新党日本",
"無所", "社民"))) %>%
ggplot(aes(x = exp,
y = voteshare,
color = seito,
alpha = 0.5)) + # ドットの透明度を指定
geom_point() +
geom_smooth(method = lm) + # 回帰直線を引く
labs(x = "選挙費用",
y = "得票率") +
ggtitle("選挙費用と得票率の散布図: 2009年総選挙") +
theme_bw(base_family = "HiraKakuProN-W3") +
facet_wrap(~seito, ncol = 4) + # 4 列表示にする
theme(legend.position = "none") + # レジェンドを非表示
theme(axis.text.x = element_text(angle = 40, vjust = 1, hjust = 1)) # 35度回転
group_by()
関数を使って、政党ごとの得票率を計算する<- df09 %>%
df09_ave group_by(seito) %>%
summarise(ave_vs = mean(voteshare,
na.rm = TRUE))
::datatable(df09_ave) DT
「GDP」と「寿命」の散布図
ここでは R が備えている {gapminder}
というデータを使って、 2
次元平面で表現できる散布図に、もう一つ次元を加えて 3
次元以上の情報を可視化する方法を紹介する
{gapminder}
パッケージをダウンロードする
library(gapminder)
{gapminder}
には次の変数が含まれている変数名 | 詳細 |
---|---|
country | 国名 |
continent | 大陸名 |
year | 年 |
lifeExp | 寿命 |
pop | 人口 |
gdpPercap | 一人あたり GDP, 2005年の時点での米ドルで表示 |
library(stargazer)
{r, results = "asis"}
と指定するstargazer(as.data.frame(gapminder),
type ="html",
digits = 2)
Statistic | N | Mean | St. Dev. | Min | Max |
year | 1,704 | 1,979.50 | 17.27 | 1,952 | 2,007 |
lifeExp | 1,704 | 59.47 | 12.92 | 23.60 | 82.60 |
pop | 1,704 | 29,601,212.00 | 106,157,897.00 | 60,011 | 1,318,683,096 |
gdpPercap | 1,704 | 7,215.33 | 9,857.45 | 241.17 | 113,523.10 |
::datatable(gapminder) DT
{gapminder}
)gdpPercap
)」を x
軸、「平均寿命 (lifeExp
)」を y
軸に指定して散布図を描いてみるggplot()
に渡す前に、人口を「百万人単位に換算した」変数
pop_m
を作成する%>%
gapminder mutate(pop_m = pop / 1000000) %>% #人口を百万人単位に換算した変数 pop_mを作成
ggplot() +
geom_point(aes(x = gdpPercap,
y = lifeExp)) +
labs(x = "一人あたりGDP (USD)",
y = "寿命") +
theme_bw(base_family = "HiraKakuProN-W3")
GDP
」の記述統計を見ると、データの範囲が
241米ドル(最低額)から 113,523
米ドル(最高額)まで非常に広範囲に及ぶx
軸を log 変換
するx = log(gdpPercap)
と指定%>%
gapminder mutate(pop_m = pop / 1000000) %>%
ggplot() +
geom_point(aes(x = log(gdpPercap), # gdpPercap を log 変換
y = lifeExp)) +
labs(x = "一人あたりGDP (USD)の対数値",
y = "寿命") +
theme_bw(base_family = "HiraKakuProN-W3")
gdpPercap
を対数化したら、かなり綺麗な線形関係が確認できた
ちなみに、画面の右端にある「一人あたり GDP」 が抜きん出て高い超リッチ国を確かめてみる
%>%
gapminder ::filter(gdpPercap > 60000) %>%
dplyr::select(year, country, gdpPercap) dplyr
# A tibble: 5 × 3
year country gdpPercap
<int> <fct> <dbl>
1 1952 Kuwait 108382.
2 1957 Kuwait 113523.
3 1962 Kuwait 95458.
4 1967 Kuwait 80895.
5 1972 Kuwait 109348.
aes()
内に color = countinent
を加えて、大陸別に色分けしてみるaes()
内にsize = pop_m
と指定して、人口の多寡とドットのサイズをシンクロさせる(alpha = 0.5)
coord_trans(x = "log10")
%>%
gapminder mutate(pop_m = pop / 1000000) %>%
ggplot() +
geom_point(aes(x = log(gdpPercap),
y = lifeExp,
color = continent,
size = pop_m),
alpha = 0.5) +
labs(x = "一人あたりGDP (USD)の対数値",
y = "寿命",
size = "人口",
color = "大陸") +
theme_bw(base_family = "HiraKakuProN-W3")
geom_smooth()
を入れて
fit 線
を描いてみる%>%
gapminder mutate(pop_m = pop / 1000000) %>%
ggplot(aes(x = log(gdpPercap),
y = lifeExp,
col = continent,
size = pop_m)) +
geom_point(alpha = 0.5) +
labs(x = "一人あたりGDP (USD)の対数値",
y = "寿命",
size = "人口",
color = "大陸") +
theme_bw(base_family = "HiraKakuProN-W3") +
geom_smooth()
geom_smooth(method = lm)
と指定してリニアな線を引いてみる%>%
gapminder mutate(pop_m = pop / 1000000) %>%
ggplot(aes(x = log(gdpPercap),
y = lifeExp,
col = continent,
size = pop_m)) +
geom_point(alpha = 0.5) +
labs(x = "一人あたりGDP (USD)の対数値",
y = "寿命",
size = "人口",
color = "大陸") +
theme_bw(base_family = "HiraKakuProN-W3") +
geom_smooth(method = lm)
facet_wrap(~continent)
を指定して、大陸ごとに散布図を別々に描く%>%
gapminder mutate(pop_m = pop / 1000000) %>%
ggplot(aes(x = log(gdpPercap),
y = lifeExp,
col = continent,
size = pop_m)) +
geom_point(alpha = 0.5) +
labs(x = "一人あたりGDP (USD)の対数値",
y = "寿命",
size = "人口",
color = "大陸") +
theme_bw(base_family = "HiraKakuProN-W3") +
geom_smooth(method = lm) +
facet_wrap(~continent)
1979年から2007年までの
{gapminder}
のデータからわかること
・アフリカ大陸、アジア大陸、そしてヨーロッパ大陸では、「一人あたりGDP」が「寿命」に同程度影響している
・「一人あたりGDP」が「寿命」に大きく影響しているのは(つまり、傾きが大きいのは)アメリカ大陸とオセアニア大陸
{gghighlight}
パッケージを使うlibrary(gghighlight)
%>%
gapminder mutate(pop_m = pop / 1000000) %>%
ggplot(aes(x = log(gdpPercap),
y = lifeExp,
col = country,
size = pop_m)) +
geom_point(alpha = 0.5) +
gghighlight(country %in% c("Japan", "China", "United States"),
label_params = list(size = 3)) +
labs(x = "一人あたりGDP (USD)の対数値",
y = "寿命",
size = "人口",
color = "大陸") +
theme_bw(base_family = "HiraKakuProN-W3")
結論 ・いずれの国も、一人あたり
GDP
が大きくなるにつれて、寿命も大きくなっている
・中国は GDP が 6%-7% の頃に急激に寿命が伸び、その後ののびは緩やか
・アメリカ(青のドット)も一人あたり GDP
が大きくなるにつれて、寿命も大きくなっているが、寿命は日本よりも短い
vote_18.csv
をダウンロード → RProject
フォルダに保存<- read_csv("data/vote_18.csv") hc2016
変数名 | 詳細 |
---|---|
pref | 都道府県 |
age18 | 18歳有権者の投票率 |
age19 | 19歳有権者の投票率 |
age1819 | 18歳と19際有権者の投票率 |
all | 都道府県の投票率 |
did | 都道府県の人口密度 |
注意:チャンク・オプションには{r, results = "asis"
と入力すること
stargazer(data.frame(hc2016),
type = "html")
Statistic | N | Mean | St. Dev. | Min | Max |
serial | 47 | 24.000 | 13.711 | 1 | 47 |
age18 | 47 | 48.389 | 5.307 | 35.290 | 62.230 |
age19 | 47 | 38.419 | 6.033 | 26.580 | 53.800 |
age1819 | 47 | 43.446 | 5.558 | 30.930 | 57.840 |
all | 47 | 54.968 | 3.887 | 45.520 | 62.860 |
did | 47 | 655.374 | 1,194.258 | 68.650 | 6,168.040 |
::datatable(hc2016) DT
knitr::kable(hr2005)
というコマンドを入力データの出典:
第24回参議院議員通常選挙における18歳と19歳の投票率のデータ:
総務省 2016年(平成28年)7月10日実施
人口密度データ (did
) の出典はこちら:
2016年4月1日の時点のデータ
「都市度」と「全有権者の投票率」
did
)」を x 軸、「全有権者の投票率
(all
)」を y 軸に指定して散布図を描くgeom_text()
関数を使って、都道府県を表示させる%>%
hc2016 ggplot(aes(did, all)) +
geom_point() +
stat_smooth(method = lm) +
geom_text(aes(y = all + 0.5,
label = pref),
size = 2,
family = "HiraKakuPro-W3") +
labs(x = "都市度", y = "都道府県の投票率") +
ggtitle("2016年参院選における投票率(都道府県別)") +
theme_bw(base_family = "HiraKakuProN-W3")
「都市度 」と「18歳の投票率」の散布図
did
)」を x 軸、「18歳の投票率
(age18
)」を y 軸に指定して散布図を描くgeom_text()
関数を使って、都道府県を表示させる%>%
hc2016 ggplot(aes(did, age18)) +
geom_point() +
stat_smooth(method = lm) +
geom_text(aes(y = age18 + 0.7,
label = pref),
size = 2,
family = "HiraKakuPro-W3") +
labs(x = "都市度", y = "18歳の投票率") +
ggtitle("2016年参院選における投票率(都道府県別)") +
theme_bw(base_family = "HiraKakuProN-W3")
解決策:
(1) 外れ値(この場合だと、東京、大阪、神奈川)をデータに含めない
(2) 値の差が大きい変数(この場合だと、都市度
did
)を対数変換する
dplyr::filter(did < 2000)
と指定{ggrepel}
:{ggrepel}
パッケージを使って都道府県名の表示を読みやすくばらつかせることができる%>%
hc2016 filter(did < 2000) %>% # 東京、大阪、神奈川を除外する設定
ggplot(aes(did, age18)) +
geom_point() +
stat_smooth(method = lm) +
::geom_text_repel(aes(label = pref),
ggrepelsize = 2,
family = "HiraKakuPro-W3") +
labs(x = "都市度", y = "18歳の投票率") +
ggtitle("2016年参院選における投票率(東京・大阪・神奈川を除く)") +
theme_bw(base_family = "HiraKakuProN-W3")
did
)」 を対数変換した散布図→ 見やすくするため、x 軸の「都市度 (did
)」を
log 変換
する
x = log(did)
と指定%>%
hc2016 ggplot(aes(log(did), age18)) +
geom_point() +
stat_smooth(method = lm) +
geom_text(aes(y = age18 + 0.7,
label = pref),
size = 2,
family = "HiraKakuPro-W3") +
labs(x = "都市度(対数変換済み)", y = "18歳の投票率") +
ggtitle("2016年参院選における投票率(都市度を対数変換)") +
theme_bw(base_family = "HiraKakuProN-W3")
geom_text_repel()
関数を使って、都道府県名を枠に入れる方法もある%>%
hc2016 ggplot(aes(log(did), age18)) +
geom_point() +
stat_smooth(method = lm) +
::geom_label_repel(aes(label = pref),
ggrepelsize = 2,
family = "HiraKakuPro-W3") +
labs(x = "都市度(対数変換済み)", y = "18歳の投票率") +
ggtitle("2016年参院選における投票率(都市度を対数変換)") +
theme_bw(base_family = "HiraKakuProN-W3")
第24回参議院議員選挙データ (2016) まとめ 都道府県別に分析すると
・「都道府県の投票率」と「都市度」には極めて弱い負の相関がある
→ ほとんど無相関
・しかし「18歳の投票率」と「都市度」には正の相関がある!
%>%
hc2016 ggplot(aes(log(did), age18)) +
geom_point() +
geom_text(aes(y = age18 + 0.7,
label = pref),
size = 2,
family = "HiraKakuPro-W3") +
labs(x = "都市度(対数変換済み)", y = "18歳の投票率") +
ggtitle("2016年参院選における投票率(都市度を対数変換)") +
theme_bw(base_family = "HiraKakuProN-W3") +
::gghighlight(
gghighlight== "青森"|
pref == "秋田"|
pref == "岩手"|
pref == "山形"|
pref == "宮城"|
pref == "福島") pref
stat_smooth(method = lm)
を追加すれば、全都道府県の回帰直線と東北六県だけの回帰直線を同時に表示することもできる%>%
hc2016 ggplot(aes(log(did), age18)) +
geom_point() +
stat_smooth(method = lm) +
geom_text(aes(y = age18 + 0.7,
label = pref),
size = 2,
family = "HiraKakuPro-W3") +
labs(x = "都市度(対数変換済み)", y = "18歳の投票率") +
ggtitle("2016年参院選における投票率(都市度を対数変換)") +
theme_bw(base_family = "HiraKakuProN-W3") +
::gghighlight(
gghighlight== "青森"|
pref == "秋田"|
pref == "岩手"|
pref == "山形"|
pref == "宮城"|
pref == "福島") pref
第80回 (1947-1948) 〜第112回 (2011-2012) 米国下院における法案に関する全ての議員の理想点に関するデータを使う
DW-NOMINATE score
dwnom1(x 軸)
:経済問題 - - - -1(リベラル) 〜
1(保守的)
dwnom1(y 軸)
:人種問題 - - - -1(リベラル) 〜
1(保守的)
Sample size: 14552
米国下院議員を対象とした実施したサーベイデータ( congress.csv) をダウンロードする
データを読み込み congress
と名前をつける
<- read_csv("data/congress.csv") congress
names(congress)
[1] "congress" "district" "state" "party" "name" "dwnom1" "dwnom2"
head(congress)
# A tibble: 6 × 7
congress district state party name dwnom1 dwnom2
<dbl> <dbl> <chr> <chr> <chr> <dbl> <dbl>
1 80 0 USA Democrat TRUMAN -0.276 0.0160
2 80 1 ALABAMA Democrat BOYKIN F. -0.0260 0.796
3 80 2 ALABAMA Democrat GRANT G. -0.0420 0.999
4 80 3 ALABAMA Democrat ANDREWS G. -0.00800 1.00
5 80 4 ALABAMA Democrat HOBBS S. -0.0820 1.07
6 80 5 ALABAMA Democrat RAINS A. -0.170 0.870
tail(congress)
# A tibble: 6 × 7
congress district state party name dwnom1 dwnom2
<dbl> <dbl> <chr> <chr> <chr> <dbl> <dbl>
1 112 4 WISCONS Democrat MOORE -0.538 -0.458
2 112 5 WISCONS Republican SENSENBR 1.20 -0.438
3 112 6 WISCONS Republican PETRI 0.776 -0.00300
4 112 7 WISCONS Republican DUFFY 0.781 -0.270
5 112 8 WISCONS Republican RIBBLE 0.886 -0.193
6 112 1 WYOMING Republican LUMMIS 0.932 -0.211
filter()
関数を使って、議会ごとにデータを抜き出す<- congress %>%
eighty filter(congress == 80) # 第80回議会
<- congress %>%
twelve filter(congress == 112) # 第112回議会
head(eighty)
# A tibble: 6 × 7
congress district state party name dwnom1 dwnom2
<dbl> <dbl> <chr> <chr> <chr> <dbl> <dbl>
1 80 0 USA Democrat TRUMAN -0.276 0.0160
2 80 1 ALABAMA Democrat BOYKIN F. -0.0260 0.796
3 80 2 ALABAMA Democrat GRANT G. -0.0420 0.999
4 80 3 ALABAMA Democrat ANDREWS G. -0.00800 1.00
5 80 4 ALABAMA Democrat HOBBS S. -0.0820 1.07
6 80 5 ALABAMA Democrat RAINS A. -0.170 0.870
%>%
eighty ggplot(aes(x = dwnom1, y = dwnom2)) +
geom_point(aes(color = party)) +
labs(x = "経済問題(dwnom1)",
y = "人種問題(dwnom2)") +
ggtitle("US 80th Congress") +
theme_bw(base_family = "HiraKakuProN-W3")
%>%
twelve ggplot(aes(x = dwnom1, y = dwnom2)) +
geom_point(aes(color = party)) +
labs(x = "経済問題(dwnom1)",
y = "人種問題(dwnom2)") +
ggtitle("US 112th Congress") +
theme_bw(base_family = "HiraKakuProN-W3")
第80回/121回米国下院サーベイデータ
(1947-2012) 分析結果
第80回議会と比較すると、第121回議会では
・人種問題(y 軸)に関して、民主党議員と共和党議員が 0
周辺に集中して分布
・人種問題(y 軸)に関して、民主党議員と共和党議員の間の差が消えた
→ 民主党と共和党の違いを説明する上で、人種問題の見解の違いは意味をなさなくなった
・経済問題に(x 軸)に関して、共和党議員の方が保守的 =
グラフの右側(+)に集中
→ 民主党と共和党の違いを説明する上で、経済問題の見解の違いがより重要になった
Q7.1:
「1.3 ドットの形をカスタマイズ」
を参考にして、2009年衆院選における「選挙費用」と「得票率」の散布図を描きなさい
・その際、shape = 23
を使い「内側が
yellow
」で「枠線が
magenta
」の「◇
」を表示させなさい
Q7.2:
「2.2 ドットの色を変えて次元追加」
を参考にして、2009年衆院選における「選挙費用」と「得票率」の散布図を描きなさい
・その際、自民党候補者とそれ以外の候補者を色分けして表示させなさい
Q7.3:
「2.4 ドットの色を指定する」
を参考にして、2009年衆院選における「選挙費用」と「得票率」の散布図を描きなさい
・その際、自民党候補者を red
、それ以外の候補者を
grey
に色分けして表示させなさい
Q7.4:
・Q1:「3. 回帰直線を加えた散布図 (1)」
を参考にして、2005年衆院選における「選挙費用」と「得票率」の散布図を描きなさい
・その際、facet_wrap()
関数を使って政党ごとに散布図を表示させ、自民党と民主党が隣同士になるよう留意しなさい
・Q2::group_by()
関数を使って、政党別の得票率を計算し DT::datatable()
関数を使って結果を表示させなさい
Q7.5:
・Q1:「4.5 特定の国をハイライトして表示」
を参考にして、{gapminder}
を使って「一人あたりGDP (USD)の対数値」と
「寿命」の散布図を表示させなさい
・その際、自分が興味ある国を 3 つ選び、色別に表示させなさい
・Q2:
上のグラフからわかることを簡潔にまとめなさい
Q7.6:
・Q1:「5.2 次元を加えた散布図(都道府県)」
を参考にして、第24回
(2016) 参議院議員選挙において、「都道府県の人口密度
(did
)」を x
軸、「19歳有権者の投票率
(age19
)」を y
軸とした散布図を描きなさい
・必要に応じて変数を対数変換すること
・Q2:
上のグラフからわかることを簡潔にまとめなさい
参考文献
宋財泫 (Jaehyun Song)・矢内勇生 (statuki statanai)「私たちのR: ベストプラクティスの探究」
浅野正彦, 矢内勇生.『Rによる計量政治学』オーム社、2018年
浅野正彦, 中村公亮.『初めてのRStudio』オーム社、2018年
Winston Chang, R Graphics Coo %>%kbook, O’Reilly Media, 2012.
Kieran Healy, DATA VISUALIZATION, Princeton, 2019
Kosuke Imai, Quantitative Social Science: An Introduction, Princeton University Press, 2017