(自分のPCまたは教室のPCに)ログイン
ウェッブ・ブラウザー(Google Chrome など)を起動
(別のタブまたは ウィンドウで)PositCloud にログイン[Posit.cloud]
アカウントのない人はサイン・アップ [共有プロジェクト] から、Save a Permanent Copy)
RStudio を自分のコンピュータにインストールしている人は起動
リンクの右上の Raw ボタンの右の Copy a raw file からコピーして演習用 R Markdown ファイルを作成(あとで再度解説します)[Rmd]
Posit Cloud のときは、まず、Login し、intro2rj のプロジェクトに入り、 ファイルから、ges001 のフォルダーを選択して、移動します。この中に、data フォルダが作成されていることを確認し、このges001 に、新しく作成したファイルを保存します。新しく作成したファイルの入っているフォルダーの中に、data フォルダがあることが大切です。そこに、データを書き込みます。
RStudio の場合には、まずは、あたらしい Project を作成します。File > New Project から作成します。すでに、作成してある場合は、それを、Open Project や、Recent Project から開きます。その中に、新しいファイルを作成します。作成したフォルダーに、data フォルダがあることを確認してください。新しく作成したファイルの入っているフォルダーの中に、data フォルダがあることが大切です。そこに、データを書き込みます。
RStudio の場合には、自分の PC に作成したファイルがありますから、問題ないと思いますが、Posit Cloud で作成した場合には、提出したいファイルの左にあるチェックボックスをチェックします。Files の 右端にある、ギアマークの Export を押すと、ダウンロードできます。それを提出してください。末尾が、nb.html となっているものを提出していただくのがよいですが、よくわからないときは、nb.html ファイルと、Rmd ファイルと両方提出してください、
課題1追加提出ボックスをMoodle内に作成しました。そこに、課題1の解説や、11個の指標についての解答例もつけました。確認してください。
01/25(TH) 気候変動問題の原因:気候変動と経済活動1
気候変動問題の原因:気候変動と経済活2
第6週、第7週の講義では、気候変動が我々の生活にもたらす影響と対策を議論します。
基本的にIPCCの第6次評価報告書(https://www.data.jma.go.jp/cpdinfo/ipcc/index.html )
をテキストに使っています。
01/30(TU) Rでデータサイエンス6:気候変動 [Main]・[授業]
Environment-Climate
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]
IEA: Energy Statistics Data Browser データ元
library(tidyverse); library(WDI)
WDI(indicator(ed_exp = "SE.XPD.TOTL.GD.ZS"))
一つの指標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]
library(tidyverse)
library(WDI)
df_environment <- WDI(
indicator = c(co2pcap = "EN.ATM.CO2E.PC",
forest = "AG.LND.FRST.ZS",
renewable = "EG.ELC.RNEW.ZS",
fossil = "EG.ELC.FOSL.ZS",
nuclear = "EG.ELC.NUCL.ZS"
), extra = TRUE)
2回目からは、data
から読み込めるようにしておく
ファイル (Rmd) の保存場所に data
フォルダがあることを確認
write_csv(df_environment, "data/environment.csv")
df_environment <- read_csv("data/environment.csv")
Rows: 16758 Columns: 17── Column specification ─────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): country, iso2c, iso3c, region, capital, income, lending
dbl (8): year, co2pcap, forest, renewable, fossil, nuclear, 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.
df_environment
iso2c
コードcountry には、国と地域両方が入っています。地域の iso2c は以下のものです。
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_environment |> filter(iso2c %in% REGION) |> distinct(country, iso2c)
国名とその地域・所得レベルを表示
df_environment |> filter(!(iso2c %in% REGION)) |> distinct(country, iso2c,region,income)
df_env <- df_environment |>
select(country, iso2c, year, co2pcap, forest,
renewable, fossil, nuclear, region, income)
df_env
df_env |> filter(!(iso2c %in% REGION)) |> # 地域以外(国のみ選択)
drop_na(co2pcap, forest, renewable, fossil, nuclear) |>
select(co2pcap, forest, renewable, fossil, nuclear) |> cor()
co2pcap forest renewable fossil nuclear
co2pcap 1.0000000 -0.1832374 -0.4138267 0.3220169 0.1369711
forest -0.1832374 1.0000000 0.3683177 -0.4234481 0.1131410
renewable -0.4138267 0.3683177 1.0000000 -0.8784240 -0.1851655
fossil 0.3220169 -0.4234481 -0.8784240 1.0000000 -0.2354258
nuclear 0.1369711 0.1131410 -0.1851655 -0.2354258 1.0000000
値の正負:正の相関・負の相関、1に近いと強い正の相関、-1に近いと強い負の相関
相関係数:散布図の近似(回帰)直線の傾きが正なら正、負なら負、直線に近い程、1 または-1 に近い
基本的には、PositCloud(https://posit.cloud/)を使って実習
R Notebook のソースファイル(Rmd)を取得方法
以下の指標の中から、二つを選択して、データの概要(description)を記録し、データを WDI で取得し、以下の分析をする。
それぞれについて考察(気づいたこと、疑問など)を記す
Preview で確認。
Web Browser で、w5_c123456.nb.html など、R Notebook を見て確認。
もし、問題があれば、Run ボタンの右の三角から、Run All を選択し、エラーがでないか確認。
最初にもどる。
データ1:一人当たりの二酸化炭素排出量 (CO2 emissions (metric tons per capita))、“EN.ATM.CO2E.PC”、co2pcap [Link]
概要:Carbon dioxide emissions are those stemming from the burning of fossil fuels and the manufacture of cement. They include carbon dioxide produced during consumption of solid, liquid, and gas fuels and gas flaring.
データ2:森林面積(%)(Forest area (% of land area))、“AG.LND.FRST.ZS”、forest [Link]
概要:Forest area is land under natural or planted stands of trees of at least 5 meters in situ, whether productive or not, and excludes tree stands in agricultural production systems (for example, in fruit plantations and agroforestry systems) and trees in urban parks and gardens.
library(tidyverse)
library(WDI)
データのダウンロードと保存:コードと変数名を指定。
df_w6eda <- WDI(indicator = c(co2pcap = "EN.ATM.CO2E.PC",
forest = "AG.LND.FRST.ZS"),
extra = TRUE)
2回目からは、data から読み込めるようにしておく ファイル (Rmd) の保存場所に data フォルダがあることを確認
write_csv(df_w6eda, "data/w6eda.csv")
df_w6eda <- read_csv("data/w6eda.csv")
Rows: 16758 Columns: 14── Column specification ─────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): country, iso2c, iso3c, region, capital, income, lending
dbl (5): year, co2pcap, forest, 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.
df_w6eda
str(df_w6eda)
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" ...
$ co2pcap : num [1:16758] 0.2837 NA 0.0898 0.2981 0.0888 ...
$ forest : num [1:16758] 1.85 NA 1.85 1.85 1.85 ...
$ 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 = ""),
.. co2pcap = col_double(),
.. forest = col_double(),
.. region = col_character(),
.. capital = col_character(),
.. longitude = col_double(),
.. latitude = col_double(),
.. income = col_character(),
.. lending = col_character()
.. )
- attr(*, "problems")=<externalptr>
df_w6 <- df_w6eda |>
select(country, iso2c, year, co2pcap, forest, region, income)
df_w6
df_w6eda |> drop_na(co2pcap, forest) |>
ggplot(aes(year)) + geom_bar()
country には、国と地域両方が入っています。地域の iso2c は以下のものです。
REGION <- c("1A", "1W", "4E", "7E", "8S", "B8", "EU", "F1", "OE", "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", "ZF",
"ZG", "ZH", "ZI", "ZJ", "ZQ", "ZT")
df_w6eda |> filter(iso2c %in% REGION) |> distinct(country, iso2c)
df_w6eda |> filter(!(iso2c %in% REGION)) |> distinct(country, iso2c, region, income)
BRICS を選択します。
BRICS <- c("Brazil", "Russian Federation", "India", "China", "South Africa")
df_w6 |> drop_na(co2pcap) |> filter(country == "Japan") |>
ggplot(aes(year, co2pcap)) + geom_line() +
labs(title = "日本の一人当たりの二酸化炭素排出量")
df_w6 |> drop_na(forest) |> filter(country == "Japan") |>
ggplot(aes(year, forest)) + geom_line() +
labs(title = "日本の森林面積(%)")
df_w6 |> drop_na(co2pcap) |> filter(country %in% BRICS) |>
ggplot(aes(year, co2pcap, col = country)) + geom_line() +
labs(title = "BRICS の一人当たりの二酸化炭素排出量")
df_w6 |> drop_na(forest) |> filter(country %in% BRICS) |>
ggplot(aes(year, forest, col = country)) + geom_line() +
labs(title = "BRICSの森林面積(%)")
必要に応じて log10 スケール (+ scale_y_log10
)
df_w6 |> ggplot(aes(forest, co2pcap, col = region)) + geom_point()
df_w6 |> filter(co2pcap >0) |> ggplot(aes(forest, co2pcap, col = region)) +
geom_point() + scale_y_log10()
df_w6 |> drop_na(co2pcap, forest) |>
ggplot(aes(forest, co2pcap)) + geom_point(aes(col = region)) +
geom_smooth(formula = 'y~x', method = "lm", se = FALSE)
df_w6 |> filter(!(iso2c %in% REGION)) |> drop_na(co2pcap, forest) |>
ggplot(aes(forest, co2pcap)) + geom_point(aes(col = region)) +
geom_smooth(formula = 'y~x', method = "lm", se = FALSE)
df_w6 |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2pcap, forest) |>
ggplot(aes(forest, co2pcap)) + geom_point(aes(col = region)) +
geom_smooth(formula = 'y~x', method = "lm", se = FALSE)
気づいたこと・疑問
森林面積が10% よりも少ない国が多い
弱い負の相関があるようだ
授業で求めた相関係数は、-0.1832374。これは、四つの指標すべての値があり(NA ではなく)国地域も分けず、すべての年のデータでの相関をとったもの。傾向はある程度わかる。
df_w6 |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2pcap, forest) |>
select(co2pcap, forest) |> cor()
co2pcap forest
co2pcap 1.00000000 -0.09914706
forest -0.09914706 1.00000000
df_w6 |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2pcap, forest) |>
select(co2pcap, forest) |> lm(co2pcap ~ forest, data = _) |> summary()
Call:
lm(formula = co2pcap ~ forest, data = select(drop_na(filter(filter(df_w6,
!(iso2c %in% REGION)), year == 2020), co2pcap, forest), co2pcap,
forest))
Residuals:
Min 1Q Median 3Q Max
-4.306 -2.958 -1.105 1.216 27.315
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.41204 0.56135 7.86 2.84e-13 ***
forest -0.01897 0.01385 -1.37 0.172
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 4.598 on 189 degrees of freedom
Multiple R-squared: 0.00983, Adjusted R-squared: 0.004591
F-statistic: 1.876 on 1 and 189 DF, p-value: 0.1724
library(plotly)
df_w6_chart_f <- df_w6 |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(co2pcap, forest) |>
ggplot(aes(forest, co2pcap, text = country, colour = region)) + geom_point() +
labs(title = "Forest (%) vs CO2 per Capita (tons)") + theme(legend.position = "none")
df_w6_chart_f |> ggplotly()
基本的には、PositCloud(https://posit.cloud/)を使って実習
「みんなのデータサイエンス - Data Science for All」[はじめてのデータサイエンス]
Posit Recipes(旧 Posit Primers): The Basics 対話型の演習サイトの最初 [Link]
Posit Cheat Sheet. 早見表です。印刷して使うために、PDF も提供しています。[Site Link]
DataCamp Cheat Sheet: Tidyverse for Biginners. データサイエンスの教育をしている会社の早見表の一つです。基本が簡単にまとまっています。[Link]