(ハンバーガー統計学にようこそ!をRでやってみたものです。)
1.1 ポテトの長さの平均は
# ワクワクバーガーのポテトの長さデータ waku <- c(3.5, 4.2, 4.9, 4.6, 2.8, 5.6, 4.2, 4.9, 4.4, 3.7, 3.8, 4.0, 5.2, 3.9, 5.6, 5.3, 5.0, 4.7, 4.0, 3.1, 5.8, 3.6, 6.0, 4.2, 5.7, 3.9, 4.7, 5.3, 5.5, 4.7, 6.4, 3.8, 3.9, 4.2, 5.1, 5.1, 4.1, 3.6, 4.2, 5.0, 4.2, 5.2, 5.3, 6.4, 4.4, 3.6, 3.7, 4.2, 4.8) # 総和を求める sum(waku) # 平均を求める sum(waku)/49 # 平均を関数で求める mean(waku) # モグモグバーガーのポテトの長さデータ mogu <- c(4.5, 4.2, 3.9, 6.6, 0.8, 5.6, 3.2, 6.9, 4.4, 4.7, 3.8, 3.0, 3.2, 4.9, 7.6, 3.3, 7.0, 3.7, 3.0, 4.1, 5.8, 4.6, 4.0, 2.2, 7.7, 3.9, 6.7, 3.3, 7.5, 2.7, 5.4, 5.8, 5.9, 3.2, 5.1, 3.1, 6.1, 4.6, 2.2, 4.0, 6.4, 5.2, 3.3, 6.4, 6.4, 2.6, 2.6, 5.2, 5.8) # 平均値を求める mean(mogu)
1.2 度数分布
実はhist()
の戻り値の中に度数分布表は含まれていたりするのだけれど、このタイミングでそれもどうかなと思うので別解。
table(cut(waku, breaks = 0:8)) table(cut(mogu, breaks = 0:8))
cut()
はnumeric
を指定の区間で区切ったfactor
に変換する。これをtable()
で集計すれば度数分布表が得られる。結果を見たほうが早いだろう。
> table(cut(waku, breaks = 0:8)) (0,1] (1,2] (2,3] (3,4] (4,5] (5,6] (6,7] (7,8] 0 0 1 14 19 13 2 0 > table(cut(mogu, breaks = 0:8)) (0,1] (1,2] (2,3] (3,4] (4,5] (5,6] (6,7] (7,8] 1 0 7 13 8 9 8 3
1.4 分散と標準偏差
標準のvar()
とsd()
は不偏分散に基づいた標本分散と標本標準偏差を計算するので、テキストに沿った値が欲しければ関数を定義する必要がある。
my_var <- function(x){mean((x - mean(x))^2)} my_sd <- function(x){sqrt(my_var(x))} # 組み込みのvar(), sd()は不偏分散に基づくので計算結果が異なる # ワクワクバーガーの分散と標準偏差 my_var(waku) my_sd(waku) # モグモグバーガーの集計 my_var(mogu) my_sd(mogu)
1.5 チキンで行こう
waku_c <- c(135, 142, 149, 146, 149, 144, 136, 138, 156, 153, 150, 147, 136, 160, 142, 157) mogu_c <- c(144, 143, 139, 166, 169, 144, 147, 138, 176, 133, 170, 137, 146, 140, 122, 177) # 平均、分散、標準偏差の計算 mean(waku_c); my_var(waku_c); my_sd(waku_c) mean(mogu_c); my_var(mogu_c); my_sd(mogu_c)
1.9 通過テスト
score <- data.frame( 桜組 = c(78, 62, 81, 59, 72, 68, 75, 65, 80, 60, 78, 62, 70), 桃組 = c(70, 72, 68, 75, 65, 71, 69, 76, 64, 80, 60, 73, 67), 柳組 = c(57, 59, 55, 62, 52, 58, 56, 63, 51, 67, 47, 60, 54) ) my_summary <- function(x){ data.frame( 平均 = round(mean(x), 2), 分散 = round(my_var(x), 3), 標準偏差 = round(my_sd(x), 3) ) } apply(score, 2, my_summary)