以下の指標の中から、二つ以上(複数)を選択して、データの概要(description)を記録し、データを WDI で取得し、以下の分析をする。
それぞれについて考察(気づいたこと、疑問など)を記す
2023.2.10.23:59 までに Moodle の課題2提出ボックスに提出してください。
できたグラフだけでも構いませんから、期限までに提出してください。解説を加え、課題2再提出ボックスを作成する予定です。
CO2 emissions (metric tons per capita) :EN.ATM.CO2E.PC [Link]
Forest area (% of land area):AG.LND.FRST.ZS [Link]
Renewable electricity output (% of total electricity output):EG.ELC.RNEW.ZS [Link]
Electricity production from oil, gas and coal sources (% of total):EG.ELC.FOSL.ZS [Link]
Electricity production from nuclear sources (% of total):EG.ELC.NUCL.ZS [Link]
Access to electricity, urban (% of urban population):EG.ELC.ACCS.UR.ZS [Link]
Access to electricity, rural (% of rural population):EG.ELC.ACCS.RU.ZS [Link]
People using at least basic drinking water services, urban (% of urban population):SH.H2O.BASW.UR.ZS [Link]
People using at least basic drinking water services, rural (% of rural population):SH.H2O.BASW.RU.ZS [Link]
People using at least basic sanitation services, urban (% of urban population):SH.STA.BASS.UR.ZS [Link]
People using at least basic sanitation services, rural (% of rural population):SH.STA.BASS.RU.ZS [Link]
女性の失業率:Unemployment, female (% of female labor force) (modeled ILO estimate):SL.UEM.TOTL.FE.ZS [Link]
男性の失業率:Unemployment, male (% of male labor force) (modeled ILO estimate):SL.UEM.TOTL.MA.ZS [Link]
失業率とは、労働人口のうちで、失業しており、かつ仕事に就くことを求めている者の率をいう。Unemployment refers to the share of the labor force that is without work but available for and seeking employment.
これまでとも同じように二つのパッケージを読み込み(load)ます。
library(tidyverse)
library(WDI)
WDI パッケージを使って、直接データをダウンロードし、変数名を、under_6.85 に指定。
この変数名は、今後使いますから、重要です。一応、例として、わたしが使った、変数名を書いてあります。他の変数名を使っても構いません。
df_unemploy <- WDI(indicator = c(female_unemploy = "SL.UEM.TOTL.FE.ZS",
male_unemploy = "SL.UEM.TOTL.MA.ZS"),
extra = TRUE)
data ディレクトリに書き込んでおきます。
write_csv(df_unemploy, "data/unemploy.csv")
data ディレクトリから読み出します。Run All や、Run All Chunks Above をする時は、上の二つをスキップする設定にしてあります。
df_unemploy <- read_csv("data/unemploy.csv")
Rows: 16758 Columns: 14── Column specification ─────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): country, iso2c, iso3c, region, capital, income, lending
dbl (5): year, female_unemploy, male_unemploy, longitude, latitude
lgl (1): status
date (1): lastupdated
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
データ名で、中身を表示できます。head(df_unemploy)
とすると、6行表示されます。
df_unemploy
変数の情報を得ることができます。
str(df_unemploy)
spc_tbl_ [16,758 × 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
$ country : chr [1:16758] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
$ iso2c : chr [1:16758] "AF" "AF" "AF" "AF" ...
$ iso3c : chr [1:16758] "AFG" "AFG" "AFG" "AFG" ...
$ year : num [1:16758] 2014 1971 2006 2013 1995 ...
$ status : logi [1:16758] NA NA NA NA NA NA ...
$ lastupdated : Date[1:16758], format: "2023-12-18" "2023-12-18" ...
$ female_unemploy: num [1:16758] 10.3 NA 10.6 10.4 10.8 ...
$ male_unemploy : num [1:16758] 7.34 NA 7.54 7.4 7.73 ...
$ region : chr [1:16758] "South Asia" "South Asia" "South Asia" "South Asia" ...
$ capital : chr [1:16758] "Kabul" "Kabul" "Kabul" "Kabul" ...
$ longitude : num [1:16758] 69.2 69.2 69.2 69.2 69.2 ...
$ latitude : num [1:16758] 34.5 34.5 34.5 34.5 34.5 ...
$ income : chr [1:16758] "Low income" "Low income" "Low income" "Low income" ...
$ lending : chr [1:16758] "IDA" "IDA" "IDA" "IDA" ...
- attr(*, "spec")=
.. cols(
.. country = col_character(),
.. iso2c = col_character(),
.. iso3c = col_character(),
.. year = col_double(),
.. status = col_logical(),
.. lastupdated = col_date(format = ""),
.. female_unemploy = col_double(),
.. male_unemploy = col_double(),
.. region = col_character(),
.. capital = col_character(),
.. longitude = col_double(),
.. latitude = col_double(),
.. income = col_character(),
.. lending = col_character()
.. )
- attr(*, "problems")=<externalptr>
df_unemp <- df_unemploy |>
select(country, iso2c, year, female_unemploy, male_unemploy, region, income)
df_unemp
データには country
のところに、国だけでなく、地域も入っているので、地域のリストを、iso2c
で REGION
に入れておきます。
REGION <- c("1A", "1W", "4E", "6F", "6N", "6X", "7E", "8S", "A4", "A5",
"A9", "B1", "B2", "B3", "B4", "B6", "B7", "B8", "C4", "C5", "C6",
"C7", "C8", "C9", "D2", "D3", "D4", "D5", "D6", "D7", "EU", "F1",
"F6", "M1", "M2", "N6", "OE", "R6", "S1", "S2", "S3", "S4", "T2",
"T3", "T4", "T5", "T6", "T7", "V1", "V2", "V3", "V4", "XC", "XD",
"XE", "XF", "XG", "XH", "XI", "XJ", "XL", "XM", "XN", "XO", "XP",
"XQ", "XT", "XU", "XY", "Z4", "Z7", "ZB", "ZF", "ZG", "ZH", "ZI",
"ZJ", "ZQ", "ZT")
地域名にはどのようなものがあるか見ておきます。
df_unemp |> filter(iso2c %in% REGION) |> distinct(country, iso2c)
国名も、地域(region)と、所得レベル(income)と共に、表示しておきます。
df_unemp |> filter(!(iso2c %in% REGION)) |> distinct(country, iso2c, region, income)
自分で分析したい国のリストを作ってください。ここでは、ASEAN を iso2c で設定します。国名で選択しても構いません。
ASEAN <- c("BN", "KH", "ID", "LA", "MY", "MM", "PH", "SG", "VN")
asean <- c("Brunei Darussalam", "Cambodia", "Indonesia", "Lao PDR", "Malaysia", "Myanmar", "Philippines", "Singapore", "Viet Nam")
まずは、NA
の値を削除します。そのあとで、国の情報の数を数えたいので、!(iso2c %in% REGION)
で、上でおいた、地域の iso2c を選択し、!
は否定でしたから、地域ではないものを選択し、その数を棒グラフにしています。
df_unemp |> drop_na(female_unemploy, male_unemploy) |> filter(!(iso2c %in% REGION)) |>
ggplot(aes(year)) + geom_bar()
気づいたこと・疑問
df_unemp |> filter(country == "Japan") |> drop_na(female_unemploy) |>
ggplot(aes(year, female_unemploy)) + geom_line() +
labs(title = "日本の女性労働者失業率")
df_unemp |> filter(country == "Japan") |> drop_na(male_unemploy) |>
ggplot(aes(year, male_unemploy)) + geom_line() +
labs(title = "日本の男性労働者失業率")
気づいたこと・疑問
ASEAN は、iso2c ですから、下のようにします。
df_unemp |> filter(iso2c %in% ASEAN) |> drop_na(female_unemploy) |>
ggplot(aes(year, female_unemploy, col = country)) + geom_line() +
labs(title = "ASEAN の女性労働者失業率")
asean は、国名でしたから、下のようにします。今度は、男性の失業率です。
df_unemp |> filter(country %in% asean) |> drop_na(male_unemploy) |>
ggplot(aes(year, male_unemploy, col = country)) + geom_line() +
labs(title = "ASEAN の男性労働者失業率")
気づいたこと・疑問
cols = c(female_unemploy, male_unemploy)
と、一つの指標にまとめるものをリストすると、name
に指標名が入り、value
に、その値が入る。書式は、pivot_longer(cols = ..., names_to = ..., values_to = ...)
で、初期設定では、names_to = "name", values_to = "value"
となっているので、指定しないと、下のようになる。Help 参照。
df_unemp_long <- df_unemp |> pivot_longer(cols = c(female_unemploy, male_unemploy))
df_unemp_long
col = name
と指定すると、色で区別して、一つのグラフに描ける
df_unemp_long |> filter(country == "Japan") |> drop_na(value) |>
ggplot(aes(year, value, col = name)) + geom_line() +
labs(title = "日本の男女別失業率")
気づいたこと・疑問
df_unemp_long |> filter(iso2c %in% ASEAN) |> drop_na(value) |>
ggplot(aes(year, value, col = country, linetype = name)) + geom_line() +
labs(title = "ASEAN の男女別失業率")
気づいたこと・疑問
df_unemp |> filter(!(iso2c %in% REGION)) |> drop_na(female_unemploy, male_unemploy) |>
ggplot(aes(female_unemploy, male_unemploy)) + geom_point() +
labs(title = "失業率:男女別相関")
気づいたこと・疑問
df_unemp |> filter(!(iso2c %in% REGION)) |> drop_na(female_unemploy, male_unemploy) |>
ggplot(aes(female_unemploy, male_unemploy)) + geom_point() +
geom_smooth(formula = 'y~x', method = "lm", se = FALSE) +
labs(title = "失業率:男女別相関(回帰直線付)")
気づいたこと・疑問
df_unemp |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |>
drop_na(female_unemploy, male_unemploy) |>
ggplot(aes(female_unemploy, male_unemploy)) + geom_point() +
labs(title = "2022年の失業率:男女別相関")
気づいたこと・疑問
df_unemp |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |>
drop_na(female_unemploy, male_unemploy) |>
ggplot(aes(female_unemploy, male_unemploy)) + geom_point() +
geom_smooth(formula = 'y~x', method = "lm", se = FALSE) +
labs(title = "失業率:男女別相関(回帰直線付)")
気づいたこと・疑問
df_unemp |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |>
drop_na(female_unemploy, male_unemploy) |> select(female_unemploy, male_unemploy) |> cor()
female_unemploy male_unemploy
female_unemploy 1.0000000 0.8675475
male_unemploy 0.8675475 1.0000000
相関係数が、0.87 で、強い正の相関があることが見て取れる。
df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |>
drop_na(value) |>
ggplot(aes(name, value)) + geom_boxplot() +
labs(title = "労働者失業率:男女別箱ひげ図")
気づいたこと・疑問
女性の失業率の方が、分布から見ても、高い値になっている。
非常に高いあたいも、特に女性の失業率に存在する。
df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |>
drop_na(value, region) |>
ggplot(aes(region, value, fill = name)) + geom_boxplot() + coord_flip() +
labs(title = "労働者失業率:男女・地域別箱ひげ図")
気づいたこと・疑問
df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |>
drop_na(value, income) |> filter(income != "Not classified") |>
ggplot(aes(income, value, fill = name)) + geom_boxplot() + coord_flip() +
labs(title = "労働者失業率:男女・収入レベル別箱ひげ図")
気づいたこと・疑問
df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year %in% c(1991, 2001, 2011, 2021)) |>
drop_na(value) |>
ggplot(aes(factor(year), value, fill = name)) + geom_boxplot() +
labs(title = "労働者失業率:男女別・10年ごとの箱ひげ図")
気づいたこと・疑問
この期間では、あまり大きな変化はないように見える。
一般的に、女性の失業率の方が高い。
df_unemp_long |> filter(iso2c %in% ASEAN) |> drop_na(value) |>
ggplot(aes(country, value, fill = name)) + geom_boxplot() + coord_flip() +
labs(title = "ASEAN の労働者失業率:男女別箱ひげ図")
気づいたこと・疑問
それぞれの国のデータは、データのある年の中での、値である。
国によって、さまざまである。個別に調べた方がよいように見える。