例として,Rに組み込まれているcarsデータを使ってみよう.
head(cars)
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
2つの変数のうちspeed変数を使ってみる.
cars$speed
## [1] 4 4 7 7 8 9 10 10 10 11 11 12 12 12 12 13 13 13 13 14 14 14 14
## [24] 15 15 15 16 16 17 17 17 18 18 18 18 19 19 19 20 20 20 20 20 22 23 24
## [47] 24 24 24 25
平均は以下のように定義される. \[\bar{x}=\frac{\sum_{i=1}^nx_i}{n}=\frac{x_1+x_2+\cdots +x_n}{n}\] では,計算してみよう.
mean_speed<-mean(cars$speed)
mean_speed
## [1] 15.4
sum(cars$speed)/length(cars$speed)
## [1] 15.4
ヒストグラム上の平均は赤色縦線.
hist(cars$speed,breaks = 10, col="skyblue")
abline(v = mean_speed,col="red",lty=1,lwd=2)
データを昇順に並べてプロットしてみる.赤色横線が平均である
barplot(sort(cars$speed), col="skyblue", ylim = c(0,max(cars$speed)))
abline(h = mean_speed,col="red",lty=1,lwd=2)
平均からの偏差\(d_i=x_i-\bar{x}\)を計算してみる.
dist_from_mean<-cars$speed-mean_speed
barplot(sort(dist_from_mean), col="skyblue")
偏差の+部分とマイナス部分の合計の絶対値は等しくなる.つまり,偏差和\(\sum_i d_i = \sum_i(x_i-\bar{x})\)はゼロになる.
sum(dist_from_mean[dist_from_mean>0]) ## プラス部分の合計
## [1] 108.4
sum(dist_from_mean[dist_from_mean<0]) ## マイナス部分の合計
## [1] -108.4
round(sum(dist_from_mean),digit=6) ## 偏差和
## [1] 0
このことは常に成立する.
\[\begin{align} \sum_i d_i = \sum_i(x_i-\bar{x}) &= \sum_ix_i-n \bar{x} \\ &= n \bar{x} - n \bar{x} =0 \end{align}\]つまり,平均は,平均より大きい部分の棒グラフをけずって,平均より小さい部分に埋めてやることで,グラフを「平らに均す」働きをする.
under_mean<-sort(cars$speed)
under_mean[under_mean>mean_speed]<-mean_speed ## 平均より大きい部分をけずる
comp_by_mean<-(-dist_from_mean)
comp_by_mean[comp_by_mean<0]<-0 ## 平均より小さい部分を埋める
barplot(rbind(under_mean, comp_by_mean), col=c("skyblue","red"),ylim = c(0,max(cars$speed)))
abline(h = mean_speed,col="red",lty=1,lwd=2)
cars$speedについて\(g(a)\)のグラフを書く.
g<-function(a) sum((cars$speed-a)^2)
xx<-seq(5,25,0.1)
yy<-apply(as.matrix(xx),1,g)
plot(xx,yy,type="l",xlab = "a", ylab = "g(a)")
optimize関数でこれを最小化.
optimize(g,c(5,25))$minimum
## [1] 15.4
一般的に最小化問題をとく.
\[\begin{align}
\frac{dg}{da}&=-2\sum_ix_i+2na = 0 \Longleftrightarrow a=\frac{\sum_ix_i}{n}=\bar{x} \\
\frac{d^2g}{da^2}&=2n >0
\end{align}\]
平均からの偏差和\(\sum_i d_i\)は,定義上ゼロになるが,偏差を2乗した偏差平方和\(\sum_i d_i^2\)は,平均から各データのばらつきを示すのに都合がよいかもしれない.実際,偏差平方の平均\(\sum_i d_i^2/n\)が分散である.
ちなみに,絶対偏差和\(g(a)=\sum_i |x_i - a|\)を最小化する指数は中央値である(「中央値を実感する」 参照).