4.13 平均
改めて平均を定義する.
Definition 4.1 (平均) 平均とは,観測されたデータ\(x_{1},\ldots,x_{n}\)に対して,
x = 1n _{i=1}^{n}
で計算される量である. また,観測データの行列\(X= (\boldsymbol x^{(1)}, \boldsymbol x^{(2)}, \ldots, \boldsymbol x^{(m)})^\top\)に対して,それぞれの列に対する平均を計算したベクトル
X = (x^{(1)}, x^{(2)}, , x{(m)})
を平均ベクトルという.
4.13.1 Rでの計算
Rではmean
という関数を利用することで平均を計算することができる.
## [1] 5.843333
例えば,iris
には4つの量的変数があり,それぞれの平均を計算したいなどという場合,
最も簡単な方法はsummary
関数を利用することである.
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50
## Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
平均以外に多くの情報が得られるが,各列に対して平均をすぐに計算することができる.
4.13.2 グループ化された平均
次に,質的変数でグループ化した平均を計算する方法を紹介する.
tidyverse
を利用すると次のように実装できる.
iris %>%
as_tibble() %>%
group_by(Species) %>%
summarise(across(c(Sepal.Length, Sepal.Width), list(mean=mean)))
## # A tibble: 3 × 3
## Species Sepal.Length_mean Sepal.Width_mean
## <fct> <dbl> <dbl>
## 1 setosa 5.01 3.43
## 2 versicolor 5.94 2.77
## 3 virginica 6.59 2.97
また,列を全て指定したい場合はacross(everythingu(),...)
とするのが便利である.
iris %>%
as_tibble() %>% # tidyverseでより扱いやすい tibble という型に変換する
group_by(Species) %>%
summarise(across(everything(), list(mean=mean)))
## # A tibble: 3 × 5
## Species Sepal.Length_mean Sepal.Width_mean Petal.Length_mean Petal.Width_mean
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 setosa 5.01 3.43 1.46 0.246
## 2 versicolor 5.94 2.77 4.26 1.33
## 3 virginica 6.59 2.97 5.55 2.03
tidyverse
のライブラリ群の記法は,通常のRの記法とは異なるため,ややとっつきにくいが,
慣れると大変便利なので是非触れてみて欲しい.
Exercise 4.7 (平均の計算) 以下で利用するAirPassengers, airquality
はRのデフォルトで提供されているデータセットである.
AirPassengers
のデータセットについて各列に対する平均を計算せよ.airquality
のデータセットについてMonth
ごとにOzon, Solar.R, Wind, Temp
の平均を計算せよ.