※現在、ブログ記事を移行中のため一部表示が崩れる場合がございます。
順次修正対応にあたっておりますので何卒ご了承いただけますよう、お願い致します。

データ解析のための統計モデリング入門 一般化線形混合モデル(GLMM) 読書メモ8


2017年 06月 09日

このブログ記事は『データ解析のための統計モデリング入門』(久保拓弥 著、岩波書店)という、とても分かりやすい統計モデリングの入門書を、さらに分かりやすくするために読書メモをまとめたものです。 今回は第7章、一般化線形混合モデル(GLMM)についてのまとめの八回目です。 この章では複数の分布を混ぜて使う、一般化線形混合モデルついて説明がされています。 その中でポアソン分布と正規分布を混ぜた分布について説明されています。 なので、ポアソン分布と正規分布を混ぜ合わせた混合分布をグラフにしてくれるコードを用意しました。 コードはRで書きました。
linkFunction <- function(b1, b2, x) {
function(r) {
exp(b1 + b2 * x + r)
}
}

distribution <- function(s, linkFunction) {
l <- match.fun(linkFunction)
function(y) {
sum <- 0
for (r in seq(-100, 100, by = 0.1)) {
sum <- sum + dpois(y, l(r)) * dnorm(r, mean = 0, sd = s) * 0.1
}
sum
}
}

xl <- "y"
yl <- "Probability"
xs <- 1:5
ys <- 0:10
b1 <- 0.1
legends = paste0("x = ", xs)
for (b2 in seq(0.1, 0.5, by = 0.1)) {
for (s in c(0.5, 1.0, 1.5, 2.0)) {
title <- paste0("lambda = exp(", b1, " + ", b2, " * x + r, r ~ N(0, ", s, ")")
plot(0, 0, type = "n", xlim = c(0, 10), ylim = c(0.0, 0.5), main = title, xlab = xl, ylab = yl)
for (i in 1:5) {
l <- linkFunction(b1, b2, xs[i])
d <- distribution(s, l)
lines(ys, d(ys), type = "l")
points(ys, d(ys), pch = i)
}
legend("topright", legend = legends, pch = 1:5)
}
}
リンク関数は `λ = exp(b1 + b2 * x + r)` です。 `r` は平均 `0` 、標準偏差 `s` の正規分布から生成されます。 `r` を生成する正規分布の標準偏差が0に近い数の時は、これはポアソン回帰のリンク関数とほとんど同じです。 混合分布はポアソン分布と正規分布をかけて `r` で積分したものです。 コードを実行すると20枚のグラフがプロットされます。 例えば次のようなグラフが得られます。 mixture_poisson.png この図は `b1 = 0.1`、`b2 = 0.5`、`s = 1` の場合です。 ポアソン分布よりも広く分布した分布が得られているのが分かります。