7.13 平均

改めて平均を定義する.

Definition 7.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)})

を平均ベクトルという.

7.13.1 Rでの計算

Rではmeanという関数を利用することで平均を計算することができる.

mean(iris$Sepal.Length)
## [1] 5.843333

例えば,irisには4つの量的変数があり,それぞれの平均を計算したいなどという場合, 最も簡単な方法はsummary関数を利用することである.

summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  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  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 

平均以外に多くの情報が得られるが,各列に対して平均をすぐに計算することができる.

7.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.L…¹ Petal…²
##   <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 
## # … with abbreviated variable names ¹​Petal.Length_mean,
## #   ²​Petal.Width_mean

tidyverseのライブラリ群の記法は,通常のRの記法とは異なるため,ややとっつきにくいが, 慣れると大変便利なので是非触れてみて欲しい.

Exercise 7.7 (平均の計算) 以下で利用するAirPassengers, airqualityはRのデフォルトで提供されているデータセットである.

  1. AirPassengersのデータセットについて各列に対する平均を計算せよ.
  2. airqualityのデータセットについてMonthごとにOzon, Solar.R, Wind, Tempの平均を計算せよ.