atsuryoku <- c(1051, 1337, 1389, 1921, 1942, 2322, 3629, 4006, 4012, 4063, 4921, 5445, 5620, 5817,
5905, 5956, 6068, 6121, 6473, 7501, 7886, 8108, 8546, 8666, 8831, 9106, 9711, 9806,
10205, 10396, 10861, 11026, 11214, 11362, 11604, 11608, 11745, 11762, 11895, 12044,
13520, 13670, 14110, 14496, 15395, 16179, 17092, 17568, 17568)
hist(atsuryoku)
関数\(t\)がx軸と交わる\(t(x) = 0\)となる\(x\)を見つけたい。
値\(x^{(m-1)}\)での\(t\)の傾きは、距離\(x^{(m)}-x^{(m-1)}\)が小さければ、 \[\biggl[\frac{dt}{dx}\biggr]_{x = x^{(m-1)}} = t'(x^{(m-1)}) = \frac{t(x^{(m)})-t(x^{(m-1)})}{x^{(m)}-x^{(m-1)}}\] もし、\(x^{(m)}\)が\(t(x)=0\)を満たすとすれば、 \[x^{(m)} = x^{(m-1)}-\frac{t(x^{(m-1)})}{t'(x^{(m-1)]})} \tag{4.2.6}\] であり、式(4.2.6)はニュートン・ラプソンの公式である。
\(\hat{\theta}\)の分散は\(\Im = E(-U')\)に反比例し、\(\hat{\theta}\)の標準誤差は、近似的に \[SE(\hat{\theta}) = \sqrt{1/\Im}\]
\[w_{ii} = \frac{1}{var(Y_i)}\biggl(\frac{\delta \mu_i}{\delta \eta_i}\biggr)^2 \tag{4.4.1}\] \[z_i = \sum^P_{k=1}x_{ik}b_k^{(m-1)}+(y_i-\mu_i)\biggl(\frac{\delta \eta_i}{\delta \mu_i}\biggr) \tag{4.4.2}\] \[\boldsymbol{X}^T\boldsymbol{WXb}^{(m)} = \boldsymbol{X}^T\boldsymbol{Wz} \tag{4.4.3}\]
data <- tibble(y = c(2, 3, 6, 7, 8, 9, 10, 12, 15),
x = c(-1, -1, 0, 0, 0, 0, 1, 1, 1))
ggplot(data, aes(x = x, y = y)) + geom_point()
図を見ればわかるように、xの値が大きくなるに連れて、yの平均値が大きくなり、分散も大きくなっている。
この観察は、ポアソン分布の以下の性質を満たす。 \[E(Y_i) = var(Y_i) \tag{4.4.4}\]
\(Y_i\)と\(x_i\)に関係を以下の直線でモデル化してみる。 \[\begin{align} E(Y_i) &= \mu_i = \beta_1 + \beta_2 x_i \\ &= \boldsymbol{x}_i^T\boldsymbol{\beta} \end{align}\]
ここで、\(i = 1, ..., N\)で \[\boldsymbol{\beta} = \begin{bmatrix} \beta_1 \\ \beta_2 \end{bmatrix}, \;\;\; \boldsymbol{x}_i = \begin{bmatrix} 1 \\ x_i \end{bmatrix}\] であり、リンク関数は\(g(\mu_i)\)は恒等関数とする(identity)。 \[g(\mu_i) = \mu_i = \boldsymbol{x}_i^T\boldsymbol{\beta} = \eta_i\] \(\frac{\delta \mu_i}{\delta \eta_i}=1\)となり、式(4.4.1)と(4.4.2)は簡単な形になる。
式(4.4.1)とポアソン分布の性質から、 \[w_{ii} = \frac{1}{var(Y_i)} = \frac{1}{\beta_1 + \beta_2x_i}\] となり、\(\beta\)に対する推定値\(\boldsymbol{b} = \begin{bmatrix} b_1 \\ b_2 \end{bmatrix}\)を用いると、式(4.4.2)は、 \[z_i = b_1 + b_2x_i + (y_i - b_1 - b_2x_i) = y_i\] となるので、式(4.4.3)の係数と右辺は、 \[\boldsymbol{\Im} = \boldsymbol{X}^T\boldsymbol{WX} = \begin{bmatrix} \sum^N_{i=1}\frac{1}{b_1 + b_2x_i} & \sum_{i=1}^N\frac{x_i}{b_1+b_2x_i} \\ \sum^N_{i=1}\frac{x_i}{b_1+b_2x_i} & \sum^N_{i=1}\frac{x_i^2}{b_1+b_2x_i} \end{bmatrix}\] \[\boldsymbol{X}^T\boldsymbol{Wz} = \begin{bmatrix} \sum_{i=1}^N\frac{y_i}{b_1+b_2x_i} \\ \sum_{i=1}^N \frac{x_iy_i}{b_1+b_2x_i} \end{bmatrix}\] と表され、最尤推定料は、以下の式を反復計算することによって得られる。 \[(\boldsymbol{X}^T\boldsymbol{WX})^{(m-1)}b^{(m)} = (\boldsymbol{X}^T\boldsymbol{Wz})^{(m-1)}\]
dataのような\(N = 9\)のデータの場合、 \[\boldsymbol{y} = \boldsymbol{z} = \begin{bmatrix} 2 \\ 3 \\.\\.\\.\\15 \end{bmatrix} \;\;\; , \;\;\; \boldsymbol{X} = \begin{bmatrix} \boldsymbol{x}^t_1 \\ \boldsymbol{x}^T_2 \\ .\\.\\.\\ \boldsymbol{x}_9^T \end{bmatrix}=\begin{bmatrix} 1&-1\\1&-1\\.&.\\.&.\\.&.\\1&1\end{bmatrix}\] である。dataを使って、スコア法による最尤推定を手計算風にRでやってみる。# 関数を定義しておく
XWX <- function(x, b1, b2){
element_11 <- sum(1/(b1+(b2*x)))
element_12 <- sum(x/(b1+(b2*x)))
element_21 <- sum(x/(b1+(b2*x)))
element_22 <- sum(x^2/(b1+(b2*x)))
xwx <- matrix(c(element_11, element_12, element_21, element_22), ncol = 2, byrow = TRUE)
return(xwx)
}
XWz <- function(x, y, b1, b2){
upper <- sum(y/(b1+(b2*x)))
lower <- sum((y*x)/(b1+(b2*x)))
xwz <- matrix(c(upper, lower), ncol = 1)
return(xwz)
}
b_new <- function(mat1, mat2){
b_new = solve(mat1) %*% mat2
return(b_new)
}
# b_newを収束するまで反復計算
# 初期値を与える
b1 <- 7
b2 <- 5
N <- 1000 # 適当な数字(反復計算の最大回数)
# 反復計算
for(i in 1:N){
mat1 <- XWX(data$x, b1 = b1, b2 = b2)
mat2 <- XWz(data$x, data$y, b1 = b1, b2 = b2)
bnew <- b_new(mat1, mat2)
if(abs(b1-bnew[1,]) <= 0.00001 & abs(b2-bnew[2,]) <= 0.00001) break
b1 <- bnew[1, ]
b2 <- bnew[2, ]
}
# 結果を見てみる
bnew
## [,1]
## [1,] 7.451633
## [2,] 4.935300