Rの二項GLM:同じデータですが、2つの異なるモデル


8

これらのデータのロジスティック回帰を検討してください:

X1 X2 Y
1  0  0
1  0  1
0  1  0
0  1  0
0  1  0
0  1  1
1  1  1

Rは、データの3つの異なる表現を受け入れます。テーブルエントリごとに1行、および2つの圧縮表現(1つは重み付け、1つは成功と失敗)です。私の考えでは、これらの3つの仕様はすべて数学的に同じである必要があります。データは同じ7つの観測値であり、それらは異なる形式でRに提示されます。

data1 <- data.frame(x1=c(1,1,0,0,0,0,1), x2=c(0,0,1,1,1,1,1), y=c(0,1,0,0,0,1,1))
data2 <- data.frame(x1=c(0,1,0,1), x2=c(0,0,1,1), y=c(0,0.5,0.25,1), w=c(0,2,4,1))
data3x <- data.frame(x1=c(0,1,0,1), x2=c(0,0,1,1))
data3y <- cbind(c(0,1,1,1), c(0,1,3,0))

model1 <- glm(y~x1+x2, data=data1, family="binomial")
model2 <- glm(y~x1+x2, data=data2, family="binomial", weight=w)
model3 <- glm(data3y~data3x$x1+data3x$x2, family="binomial")

モデル2と3は同じです。しかし、モデル1はモデル2および3とは異なり、同じデータが他のモデル統計とは異なるモデル統計(係数、ヌルおよび残差逸脱)を返す理由を推測することはできません。モデル2と3は、同じデータの異なる表現を使用しています。

これはレッドニシンかもしれませんが、モデル1はモデル2と比較して係数が4単位シフトされています。これは、2の間の(移入された)行数/残りの自由度の違いです。

> model1

Call:  glm(formula = y ~ x1 + x2, family = "binomial", data = data1)

Coefficients:
(Intercept)           x1           x2  
     -19.66        19.66        18.57  

Degrees of Freedom: 6 Total (i.e. Null);  4 Residual
Null Deviance:      9.561 
Residual Deviance: 7.271    AIC: 13.27
> model2

Call:  glm(formula = y ~ x1 + x2, family = "binomial", data = data2, 
    weights = w)

Coefficients:
(Intercept)           x1           x2  
     -23.66        23.66        22.57  

Degrees of Freedom: 2 Total (i.e. Null);  0 Residual
Null Deviance:      2.289 
Residual Deviance: 3.167e-10    AIC: 9.112

Data2が正しく因数分解されます。[1, 0, .5]応答レベルと2つのを示す2つのレベルの重量を受けるy平均応答として0と1を取ります。ただし、[1,0,.5]表示するデータには応答レベルがありません。
AdamO 2016年

1
これらのモデルは、両方が爆発したという意味で同じ結果をもたらします:)
AdamO 2016年

1
@AdamOそれは公正です。投稿する前に、これらの結果についてもっと考えるべきだった。私はショックを受けたので、見積もりが非常に異なっていて、助けを求める必要がありました。
Sycoraxは2016

回答:


4

モデルは

EY=11+exp[(β0+β1x1+β2x2)]

&それは飽和しており、推定するパラメータの数はnoと同じです。異なる共変量パターン。したがって、解く方程式は次のとおりです。

ために x1=1x2=0EY=12

β0+β1=0

ために x1=0x2=1EY=14

β0+β2=log3

ために x1=1x2=1EY=1

β0+β1+β2=

準完全分離があります( x1+x2>1 その後 EY=1)、係数の最尤推定値には制限がありません。しかし、十分に大きな値c 無限大に代わることができ、ソリューションを提供します:

β0=(c+log3)

β1=c+log3

β2=c

なぜglm異なる値での可能性を最大化しようとあきらめるのか分かりませんc データ構造によって異なりますが、実際には影響はありません。予測と可能性の違いはほとんど同じです。


2

この例で示した収束の失敗にもかかわらず、これらのアプリケーションには確かにいくつかの重要な違いがあることに注意してください。加重GLMは、加重が周波数加重である場合でも、応答レベルの数に等しい観測数を持っています。一方、頻度の重みに従って因子水準を複製すると、観測数は重みの合計に等しくなります(適切に)。最終的に、それらは同じものに収束しますが、ワンステップ推定器のプロパティを検査すると、興味深い動作が観察されます。

set.seed(123)
x <- 0:2
y <- c(1,0,2)/2
w <- 1:3*10

## weighted and unweighted one step glms
summary(glm(y ~ x, family=binomial, weights=w, control=list(maxit = 1)))
summary(glm(y ~ x, family=binomial, data.frame('y'=rep.int(y, w), 'x'=rep.int(x,w)), control=list(maxit = 1)))

次の(異なる)結果を与えます。

Call:
glm(formula = y ~ x, family = binomial, weights = w, control = list(maxit = 1))

Deviance Residuals: 
      1        2        3  
 0.8269  -7.0855   2.3210  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -0.5260     0.6210  -0.847   0.3970  
x             1.4456     0.7484   1.932   0.0534 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 67.640  on 2  degrees of freedom
Residual deviance: 56.275  on 1  degrees of freedom
AIC: 63.079

Number of Fisher Scoring iterations: 1

Warning message:
glm.fit: algorithm did not converge 
> 

Call:
glm(formula = y ~ x, family = binomial, data = data.frame(y = rep.int(y, 
    w), x = rep.int(x, w)), control = list(maxit = 1))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.1496  -1.1496   0.5946   0.5946   0.8376  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -1.7747     0.5502  -3.226  0.00126 ** 
x             1.7089     0.3700   4.618 3.87e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 67.640  on 59  degrees of freedom
Residual deviance: 44.055  on 58  degrees of freedom
AIC: 44.171

Number of Fisher Scoring iterations: 1

Warning messages:
1: In eval(expr, envir, enclos) :
  non-integer #successes in a binomial glm!
2: glm.fit: algorithm did not converge 
> 

したがって、OPの質問に答えるために、これらが調整不可能な結果である(収束に失敗したにもかかわらず)理由は、フィッシャースコアリングの実際のトレースは、加重分析と非加重分析で異なるためです。サンプル、重み付けされていない場合、フィッシャー情報は60観測の重み付けされていない情報に基づいています。重み付けされた3つの観測値と重み付けされていない60の観測値の確率は、フィッシャースコアリングが実際に合計スコア0のソリューションを与えるベータ推定値を取得する場合にのみ一致します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.