Rコード
Rエディタ上にコピペして実行してみてください。作中でキャラクターがやっていたことと同じことができます。
install.packages(tidyverse) #パッケージのインストール、読み込み
library(tidyverse) #パッケージの読み込み
## 第一話 ##
x <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13)
# 平均 mean
mean(x) ##毎月一人死んでいる?
# 中央値 median
median(x)
# 最頻値は省略
## 第四話 ##
# それぞれの平均・分散
f <- c(157, 167, 147, 167, 160, 161, 163, 167, 154, 169) # フリクエント族
h <- c(159, 170, 157, 159, 158, 173, 155, 145, 147, 157) # ヘイズ族
## 平均
mean(f)
mean(h)
## 分散
var(f)
var(h)
# 一万人の身長ヒストグラム
d <- rnorm(10000, 150, 10)
## 乱数を使ってデータを作成するのでその都度微妙に形状は変わります
Sam <- list()
for(i in 1:1000){
Sam[[i]] <- sample(d, 10) # 一万人から10人取り出す作業を1000回繰り返す。
}
Sam #千回分の身長のデータ
# 千個の平均のヒストグラム
map_df(Sam, function(z) {
data.frame(m=mean(z))
}) %>%
ggplot() + geom_histogram(aes(m)) +
labs(x = "x:身長の平均",y = "y:頻度")
# サンプルが10づつしかないのであまりきれいな釣り鐘型にならないかも...
# 千個の平均の確率分布
map_df(Sam, function(z) {
data.frame(m=mean(z))
}) %>%
ggplot() + geom_density(aes(m)) +
labs(x = "x:身長の平均",y = "f(x):確率密度")
# フリクエント族とヘイズ族の平均の分布
x <- c(seq(from = 140, to = 180, by = 0.1))
d1 <- data.frame(x = x, q = dnorm(x, mean(f), sd(f)/sqrt(10)), id = rep("フリクエント", length(x)))
d2 <- data.frame(x = x, q = dnorm(x, mean(h), sd(h)/sqrt(10)), id = rep("ヘイズ", length(x)))
d <- bind_rows(d1,d2)
ggplot(d, aes(x = x, y = q,color = id)) + geom_line() +
labs(x = "身長の平均",y = "確率密度", color = "民族")
# t検定
result <- t.test(f, h, var.equal = FALSE)
result
result$p.value ## p値




