1.3 可視化で読み取れるロジック
この記事はR言語 Advent Calendar 2023 シリーズ2の3日目の記事です。
qiita.com
1.3.2 変数間の関係
##### 1.3.2 ##### library(tidyverse) library(patchwork) set.seed(0) # データ生成 df <- tibble( x1 = runif(50), y1 = runif(50), x2 = runif(50), y2 = 0.8 * (x2 - 0.5) + 0.5 + 0.1 * rnorm(50) ) p1 <- df |> ggplot(aes(x=x1, y=y1)) + geom_point(color="blue") + geom_smooth(method=lm, color="blue") + labs(x = "変数X", y = "変数Y", title = "相関のない二つの変数") + coord_fixed() p2 <- df |> ggplot(aes(x=x2, y=y2)) + geom_point(color="forestgreen") + geom_smooth(method=lm, color="forestgreen") + labs(x = "変数X", y = "変数Y", title = "相関のある二つの変数") + coord_fixed() p1 + p2
1.3.4 性質の異なる分布の例
##### 1.3.4 ##### library(tidyverse) # 平均0、標準偏差1の正規分布から10000個のサンプルを生成 set.seed(0) mu <- 0 sigma <- 1 p1 <- data.frame(val = rnorm(10000, mean = mu, sd = sigma)) |> ggplot(aes(x=val)) + geom_histogram(aes(y=after_stat(density)), bins=30, color = "black", fill = "gray") + stat_function(fun = dnorm, args = list(mean=mu, sd=sigma), colour="red") + coord_cartesian(ylim = c(0, 0.45)) + labs(title = "正規分布", x = "", y = "相対度数") + theme(aspect.ratio = 3/5) #縦横比 # 標準コーシー分布から10000個のサンプルを生成 p2 <- data.frame(val = rcauchy(10000)) |> dplyr::filter(val > -10 & val < 10) |> # 外れ値を捨てる ggplot(aes(x=val)) + geom_histogram(aes(y=after_stat(density)), bins=50, color = "black", fill = "gray") + stat_function(fun = dcauchy, colour="blue") + coord_cartesian(ylim = c(0, 0.45)) + labs(title = "コーシー分布", x = "", y = "相対度数") + theme(aspect.ratio = 3/5) #縦横比 p1 + p2
1.3.5 初期の感染症の拡大
##### 1.3.5 ##### library(tidyverse) library(patchwork) # データフレームの生成 set.seed(0) df <- tibble( x = seq(0, 30, 1),# 0から30までの範囲で等間隔に30個の数を生成 y = exp(0.1 * x) * 100 * (1 + rnorm(31, 0, 0.08)) # 指数関数にランダムなノイズを付加する ) p1 <- df |> ggplot(aes(x = x, y = y)) + geom_point() + labs(x="経過日数", y="新規感染者数", title="リニアスケールでの表示") + theme(aspect.ratio = 1) #縦横比 p2 <- df |> ggplot(aes(x = x, y = y)) + geom_point() + scale_y_log10() + labs(x="経過日数", y="新規感染者数(対数軸)", title="片対数での表示") + theme(aspect.ratio = 1) #縦横比 p1 + p2
第1章3節は以上。