LoginSignup
1
2

More than 5 years have passed since last update.

読書ノート:現代数理統計学の基礎(その3)

Last updated at Posted at 2018-06-08

はじめに

  • 現代数理統計学の基礎 (共立講座 数学の魅力)
  • 2018/5/6、amazonで購入。
  • 第6章「統計的推定」演習問題の問16に関するメモ
  • 求まった最尤推定量が一致性を持つと記述されているが、実際は一致性を持たない。
  • 自分の計算が本当に正しいかどうか不安だったので、Rプログラムを作成して検証してみた。

問題の内容

$(X_1,Y_1),\dots,(X_n,Y_n)\ $を互いに独立な確率変数のペアとし、$X_i$と$Y_i$も独立でともに$N(\mu_i,\sigma^2)$に従うものとする。
(1) $\mu_i,\dots,\mu_n,\sigma^2$の最尤推定量を求めよ。
(2) $\sigma^2$の最尤推定量が一致性を持つことを示せ。
(3)【略】

回答例

(1) 対数尤度を求めて最大化するパラメータを求める。

\begin{align}
f(x_i,y_i|\mu_i,\sigma^2)&=\frac{1}{2\pi\sigma^2}
\exp\left(-\frac{(x_i-\mu_i)^2+(y_i-\mu_i)^2}{2\sigma^2}\right)\\
\log\prod_{i=1}^n f(x_i,y_i)&=-n\log(2\pi)-n\log \sigma^2
-\frac{1}{2\sigma^2}\sum_{i=1}^n((x_i-\mu_i)^2+(y_i-\mu_i)^2)\\
\frac{\partial}{\partial \mu_i}\log\prod_{i=1}^n f(x_i,y_i)&=
\frac{1}{\sigma^2}(x_i-\mu_i+y_i-\mu_i)=0
\Rightarrow \mu_i=\frac{x_i+y_i}{2}\\
\therefore \quad T_i(X,Y)&=\frac{X_i+Y_i}{2}\quad{\mu_iの最尤推定量}\\
\log\prod_{i=1}^n f(x_i,y_i)&=-n\log(2\pi)-n\log \sigma^2
-\frac{1}{4\sigma^2}\sum_{i=1}^n(x_i-y_i)^2\\
\frac{\partial}{\partial \sigma^2}\log\prod_{i=1}^n f(x_i,y_i)&=
-\frac{n}{\sigma^2}+\frac{1}{4\sigma^4}\sum_{i=1}^n(x_i-y_i)^2=0
\Rightarrow \sigma^2=\frac{1}{4n}\sum_{i=1}^n(x_i-y_i)^2\\
\therefore \quad S(X,Y)&=\frac{1}{4n}\sum_{i=1}^n(X_i-Y_i)^2\quad{\sigma^2の最尤推定量}
\end{align}

演習問題の略解では、分母が4ではなく2となっている。何度も計算を確認したがやはり4だと思う。

(2) 得られた最尤推定量の収束値を求めてみる。

\begin{align}
X_i-Y_i&\sim N(0,2\sigma^2)\Rightarrow \frac{X_i-Y_i}{\sqrt{2}\sigma}\sim N(0,1)\\
\left(\frac{X_i-Y_i}{\sqrt{2}\sigma}\right)^2&\sim \chi^2_1
\Rightarrow E\left[\left(\frac{X_i-Y_i}{\sqrt{2}\sigma}\right)^2\right]=1\\
\therefore \quad S(X,Y)&\to_p\frac{\sigma^2}{2}(n\to\infty)\quad{大数の法則}
\end{align}

従って最尤推定量は一致性を持たない。真値の半分となっている。
期待値も$\frac{\sigma^2}{2}$であり、$n\to\infty$としても半分のままである。
分母が2なら一致性と不偏性を持つが、最尤推定量とは異なっている。

プログラムによる検証

対数尤度を最大化するパラメータ$\sigma^2$が$\frac{1}{4n}\sum_{i=1}^n(x_i-y_i)^2$となることを確認する。

  • 平均値$\mu_i$は一様乱数で生成。
  • optim関数に渡すパラメータは、$n$個の平均値$\mu_i$と$\sigma^2$から成る配列。
  • dnorm関数には標準偏差を指定する必要があるため、絶対値にしてから平方根とする。
  • optim関数は最小化するので、対数尤度の符号を変えることで最大化する。
set.seed(1)

sd = 2
n = 5
mu = runif(n)
xi = rnorm(n,mean=mu,sd=sd)
yi = rnorm(n,mean=mu,sd=sd)
mu_mle = (xi+yi)/2
s2_mle = sum((xi-yi)^2)/4/n

my_logLik = function(pa){
  mn = pa[1:n]
  s1 = sqrt(abs(pa[n+1]))
  -sum(dnorm(x=xi,mean=mn,sd=s1,log=T)+dnorm(x=yi,mean=mn,sd=s1,log=T))
}

par = rep(1,n+1)
rt = optim(par,my_logLik,control=list(maxit=10000))

結果は以下の通り。

> c(s2_mle,rt$par[n+1])
[1] 2.328907 2.328533
> 
> data.frame(mu_mle,par=rt$par[1:n])
      mu_mle        par
1  1.5321708  1.5321919
2  3.1914187  3.1910387
3 -0.2035032 -0.2028649
4 -0.8193685 -0.8192448
5 -1.2406955 -1.2406410

対数尤度を最大化するパラメータとして、$\sigma^2$は$\frac{1}{4n}\sum_{i=1}^n(x_i-y_i)^2$、$\mu_i$は$\frac{x_i+y_i}{2}$とほぼ一致する値が得られた。

おわりに

  • 【注意事項】本メモの内容が本当に正しいかどうかは分かりません。
1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2