So-net無料ブログ作成
検索選択

過分散データへのGLM適用時のAICによるモデル選択 [統計]

こんどは、過分散データにGLMを適用して、AICでモデル選択するとどうなるかをためしました。前提として、「AICは正しいモデルを選ぶためのものではない」ことに注意。

以下のような関数を定義しました。

test3.f <- function(N = 200, NB = 10,
                    m1 = 0, m2 = 0,
                    sd1 = 0.2, sd2 = 0.3, sd.B = 0.8,
                    intercept = 1, coef.X1 = 1) {
    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))

    g <- vector("list", 4)
    g[[1]] <- glm(Y ~ 1, family = poisson)
    g[[2]] <- glm(Y ~ X1, family = poisson)
    g[[3]] <- glm(Y ~ X2, family = poisson)
    g[[4]] <- glm(Y ~ X1 + X2, family = poisson)
    aic.min <- which.min(sapply(1:4, function(i) AIC(g[[i]])))
    return(aic.min)
}

結果です。

> set.seed(123)
> test3 <- replicate(2000, test3.f())
> summary(as.factor(test3))
   1    2    3    4 
  19 1113   17  851 

43%くらいで、実際にはモデルに含まれないX2を説明変数に含めたモデル4が選択されました。

一方、ランダム効果が小さい場合は以下のようになりました。

> set.seed(123)
> test3.1 <- replicate(2000, test3.f(sd.B = 1e-5))
> summary(as.factor(test3.1))
   1    2    4 
   1 1706  293 

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

nice! 3

コメント 0

コメントを書く

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

Facebook コメント

トラックバック 0