No.16224 glmでNAが返される場合  【波音】 2012/01/15(Sun) 12:15

Rのglm()でロジスティック回帰をやるとき,推定値が「NA」となることがあります。これは自由度が足りない(説明変 数に投入されているカテゴリカル型変数の水準数が多かったり,あるいは変数の数が多すぎて求めるパラメータの数がデータ数に対して多すぎる)という理解で あっているでしょうか?

例えば以下のような無茶なデータで試した場合↓

> y <- as.factor(sample(0:1, 20, replace=TRUE))
> x <- as.factor(sample(1:20, 20, replace=TRUE))
> x2 <- as.factor(sample(1:20, 20, replace=TRUE))
> summary(glm(as.factor(y) ~ x + x2, binomial))

Coefficients: (6 not defined because of singularities)
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.557e+01 5.715e+05 0 1
x2 -5.113e+01 5.291e+05 0 1
x3 -5.113e+01 6.109e+05 0 1
x4 -2.213e-06 6.109e+05 0 1
x5 -5.113e+01 4.320e+05 0 1
x6 -2.308e-06 6.109e+05 0 1
x9 5.751e-10 6.109e+05 0 1
x10 -5.113e+01 6.109e+05 0 1
x11 -2.211e-06 6.109e+05 0 1
x12 -5.113e+01 5.291e+05 0 1
x13 -1.023e+02 4.320e+05 0 1
x18 -2.211e-06 6.109e+05 0 1
x19 -5.113e+01 3.055e+05 0 1
x22 -6.419e-10 3.055e+05 0 1
x24 5.113e+01 4.320e+05 0 1
x25 5.113e+01 5.291e+05 0 1
x26 NA NA NA NA
x28 -6.856e-14 3.055e+05 0 1
x29 -1.390e-13 5.291e+05 0 1
x210 -1.431e-13 4.320e+05 0 1
x211 NA NA NA NA
x212 NA NA NA NA
x216 NA NA NA NA
x217 NA NA NA NA
x219 NA NA NA NA
x220 5.113e+01 4.320e+05 0 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 2.7526e+01 on 19 degrees of freedom
Residual deviance: 3.1540e-10 on 0 degrees of freedom

No.16227 Re: glmでNAが返される場合  【青木繁伸】 2012/01/15(Sun) 17:35

> これは自由度が足りない(説明変数に投入されているカテゴリカル型変数の水準数が多かったり,あるいは変数の数が多すぎて求めるパラメータの数がデータ数に対して多すぎる)という理解であっているでしょうか?

そういうことです。ちょうど20個のパラメータが推定されています。そして,完全に当てはまっています。
そ れは,直線回帰式 y=ax+b*x というモデルにあてはめるとき,2組のデータ(x1, y1),(x2, y2) しかなければ,完全にあてはまりますよね(二点を通る直線はただ一つ)ということと同じ。データ数以上の変数は互いに従属になる。Rはそれを自動的に検出 して,求めることの出来ないパラメータは NA にする。

No.16234 Re: glmでNAが返される場合  【波音】 2012/01/15(Sun) 22:02

回答ありがとうございます。

> 2組のデータ(x1, y1),(x2, y2) しかなければ,完全にあてはまりますよね(二点を通る直線はただ一つ)ということと同じ。データ数以上の変数は互いに従属になる。

なるほど,分かりやすい例示をありがとうございます。納得できました。

● 「統計学関連なんでもあり」の過去ログ--- 045 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る