SSブログ

過分散データへのGLM適用時のp値 [統計]

つづいて、過分散データにGLM(誤差構造はポアソン分布、リンク関数はlog)を適用したときの検定はどうなるか、をやってみます。

きのうと同様に関数を定義しますが、返り値は切片および係数のp値としています。

test2.f <- function(N = 200, NB = 10,
                    m1 = 0, m2 = 0,
                    sd1 = 0.2, sd2 = 0.3, sd.B = 0.8,
                    intercept = 1, coef.X1 = 0.3,
                    summary = FALSE) {
    X1 <- rnorm(N, m1, sd1)
    X2 <- rnorm(N, m2, sd2)
    B <- rep(rnorm(NB, 0, sd.B), each = N / NB)
    Y <- rpois(N, exp(intercept + coef.X1 * X1 + B))

    g1 <- glm(Y ~ X1 + X2, family = poisson)
    if (summary) print(summary(g1))
    return(summary(g1)$coefficients[, "Pr(>|z|)"])
}

X2の係数は0ですので、危険率5%で、p < 0.05となるのは5%のはずです。

> set.seed(123)
> test2 <- replicate(2000, test2.f())
> sum(test2["X2", ] < 0.05) / 2000
[1] 0.2525

しかし、25%ほど「有意」になってしまいます。

ランダム効果の大きさを小さくすると、5%に近づきます。

> set.seed(123)
> test2 <- replicate(2000, test2.f(sd.B = 1e-6))
> sum(test2["X2", ] < 0.05) / 2000
[1] 0.055

タグ:GLM
nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0