1 これまでに学んだこと.

  • ヒストグラム:データの頻度をグラフ化したもの.
    (面積が確率を表すようにすると確率密度関数になる)
  • 累積相対度数折線:累積度数を確率グラフにしたもの.
    (縦軸が累積確率を表す)

2 最頻値.

  • ヒストグラムの山の最も高くなるところ.
  • 確率密度関数のグラフが最大となるx.

確率的に最も起こりやすいデータx であり、推測統計では最尤推定値と呼ばれ重要である。最頻値はグラフを見ればすぐ分かる。

3 中央値.

メジアン(median)と呼ばれ、大小の順に並べて中央に位置するxである。グラフ上では、.

  • 確率密度関数の面積を左右二等分するx.
  • 累積相対度数折線で確率が0.5となるx.
    (分布関数の値が0.5となるx と言ってもよい).

4 平均.

平均は期待値と呼ばれる。
確率密度関数を重さと解釈したとき、平均はグラフと横軸で囲まれる領域の重心を意味する。

重要な注意点として、

  • てこの原理で重心から離れたデータの影響が大きい.
  • 中央値はてこの原理の影響を受けないのでよく用いられる.

この2点は覚えておこう。

<注意>.
数理的・力学的理由は以下の通りですが、立ち入らなくてよいです。
わすれなぐさ 様 によれば、物理における重心の定義は

   \(\displaystyle x_G = \frac 1M \sum x_i m_i\)     \(\displaystyle x_G = \frac 1M \int x \ \mathrm dm\).
確率密度関数を \(f(x)\) とすると、
   \(\displaystyle x_G = \dfrac {1}{\displaystyle \int f(x)dx} \int xf(x)dx =\int xf(x)dx\).

重心は期待値の式に一致します。

5 問題.

例題2.

data <- data.frame(x=seq(22,30,by=2),y=c(1,2,10,5,2))
plot(data,type="l")

最頻値が26であることがわかる。

累積相対度数折線を用いて中央値を求めよう。

data1 <- data.frame(x=c(23,25,27,29,31),y=cumsum(c(1,2,10,5,2)))
#cumsum(c(1,2,10,5,2))#累積和
plot(data1,type="l")
abline(v = 26.4)
abline(h = 10)

累積度数がちょうど半分になるところが中央値であり、26.4 であることが分かる。
中央値のある区間の累積関数を直線で近似して求めている。
テキストp13に計算法があるが、直線の方程式の応用である。
簡便法としては、次のようにしてもよいことが、テキストの注に記されている。

x=seq(22,30,by=2)
X <- rep(x,c(1,2,10,5,2))
X
##  [1] 22 24 24 26 26 26 26 26 26 26 26 26 26 28 28 28 28 28 30 30
median(X)
## [1] 26

6 Advanced.

データが連続量の場合でも、関数を使えば簡単に求めることができる。

代表値をRで計算する

x <- rpois(1000, 3)
head(x)
## [1] 0 0 3 2 3 5
h <- hist(x)
abline(v = 3,col=2)

t <- table(x);t
## x
##   0   1   2   3   4   5   6   7   8   9  10 
##  45 131 219 231 174 112  50  25  10   2   1
which.max(t)
## 3 
## 4

which.max()は、最頻値とそれが頻度表の何番目にあるのかを出力します。

median(x)
## [1] 3
str(ecdf(x))
## function (v)  
##  - attr(*, "class")= chr [1:3] "ecdf" "stepfun" "function"
##  - attr(*, "call")= language ecdf(x)
plot(ecdf(x))
abline(v = 3,col=2)
abline(h = 0.5,col=2)

データが整数値の場合は、step関数になる.

x <- rnorm(1000,5,1)
head(x)
## [1] 4.747515 5.882999 4.076293 4.931263 5.211158 6.057304
h <- hist(x)
abline(v = 5,col=2)

median(x)
## [1] 5.006829
str(ecdf(x))
## function (v)  
##  - attr(*, "class")= chr [1:3] "ecdf" "stepfun" "function"
##  - attr(*, "call")= language ecdf(x)
plot(ecdf(x))
abline(v = 5,col=2)
abline(h = 0.5,col=2)