変量効果を含む場合と含まない場合の二項回帰の推定値の大きな違い


7

2つのグループの学生の平均スコアを推定しようとしています。私は二項回帰モデルを使用しています。これtotal_ansは、回答した質問の合計であり、生徒によって異なる場合があります。

モデル1は直接推定

model <- glm(cbind(total_correct, total_ans-total_correct) ~ student_type,family= binomial, data = df)

Call:  glm(formula = cbind(total_correct, total_ans - total_correct) ~ student_type, family = binomial, data = df)

Coefficients:
                  (Intercept)  student_group_2  
                      -1.9684           0.2139  

Degrees of Freedom: 1552 Total (i.e. Null);  1551 Residual Null
Deviance:       1480  Residual Deviance: 1477   AIC: 1764


lsmeans(model,~ student_type, type="response")

 student_type           prob         SE df asymp.LCL asymp.UCL
 student_group_1   0.1225627 0.00654160 NA 0.1103074 0.1359715
 student_group_2   0.1474774 0.01275231 NA 0.1241918 0.1742602

モデル2では、ランダム効果を使用して、個々の分散をより適切に説明します。

model <- glmer(cbind(total_correct, total_ans-total_correct) ~ (1|student)  + student_type, family= binomial, data = sub_df, control=glmerControl(optimizer = "nloptwrap", calc.derivs = FALSE))

Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: cbind(total_correct, total_ans - total_correct) ~ (1 | student) +  
    student_type
   Data: sub_df
      AIC       BIC    logLik  deviance  df.resid 
1653.9049 1669.9488 -823.9525 1647.9049      1550 
Random effects:
 Groups Name        Std.Dev.
 student (Intercept) 1.881   
Number of obs: 1553, groups:  author, 1553
Fixed Effects:
                  (Intercept)  student_group_2  
                      -3.0571   0.3915  


lsmeans(model,~ student_type, type="response")

 student_type            prob          SE df  asymp.LCL asymp.UCL
 student_group_1   0.04491007 0.004626728 NA 0.03666574 0.0549025
 student_group_2   0.06503249 0.015117905 NA 0.04097546 0.1017156

2つのグループの結果に大きな違いがあることに驚いています。これの理由は何でしょうか?

詳細:グループ1の生徒数は1434人、グループ2の生徒数は119人です。これらは自然発生的なグループです


3
@PeterFlomは、glmで成功の数、失敗の数を指定する方法にすぎません。2つの合計が試行全体です
user926321

3
結果が大きく異なる主な理由は、2番目のモデルが最初のモデルが著しく間違っていることを示しているためです。最初のモデルは各グループ内で一定の確率の二項応答を想定していますが、2番目のモデルのランダム成分の標準偏差(1.8)が大きいため、データは一定の確率の想定と一致しません。グループごとに正しい比率のヒストグラムは、それを明確に示す必要があります。データのいくつかの適切に選択されたプロットは、この問題を解決するのに役立ちます。
whuber

2
興味深いスレッドですが、重要な情報の1つが欠落しているようです。各グループの学生が複数回テストに回答し、毎回、回答した質問の数に対する正解の数を記録しましたか?そうでない場合、モデルにランダムな学生効果を含める理由がわかりません。
Isabella Ghement

1
もう1つの問題は、これらは自然発生的なグループであるため、さまざまな点で異なる可能性が高いことです(グループ間で見られる違いを説明している可能性があります)。測定した可能性のある交絡変数を制御できる場合は、結果の解釈に役立つ可能性があります。
Isabella Ghement

2
短いコメント:lsmeansは非推奨です。に切り替える必要がありemmeansます。構文はほとんど同じです。
COOLSerdash 2018年

回答:


4

これを解決するのに十分な情報が質問にあります。lsmeansは、単純に係数を使用してグループ予測確率を取得します。

GLMの場合、OPの暗黙モデルは次のとおりです。

π^=11+e(1.9684+0.2139×d)

ここで、はグループ2のメンバーシップのインジケーターです。したがって、予測される確率はおよび、それぞれグループ1および2です。これらの結果は、それぞれ約および予測確率になります。d(1+e(1.9684))1(1+e(1.9684+0.2139))112.25%14.75%

マルチレベルモデル(またはGLMM)の場合、OPの暗黙モデルは次のとおりです。

π^=11+e(3.0571+0.3915×d+1.881×u^)

ここで、は、標準法線であると想定されるランダムな切片です。lsmeansからの予測確率は、ランダムな切片値がゼロと想定し、結果はおよびグループ1と2のそれぞれ。これらの結果は、それぞれ約と予測確率になります。これらは、lsmeans GLMMの結果です。u^(u^=0)(1+e(3.0571))1(1+e(3.0571+0.3915))14.49%6.50%

問題は、GLMMのインターセプトが、他の人に比べて「平均的」である誰かに期待される成功の対数オッドです。したがって、モデル全体を報告するための基礎としてこれを使用することは問題です。他の係数について、グループ差係数が増加する理由の1つの提案は、モデルの品質が良いほど係数が増加すること、このWebサイトで折りたたみ可能を検索すること、またはオッズ比のメタ分析は基本的に期待できないことを参照してください

lsmeans GLMMの結果をlsmeans GLMの結果と比較できるようにするため。ランダムな切片の観測値を使用する必要があります。ランダムなインターセプトをシミュレートして、OPの特定のモデルに一致させることができます。u^

set.seed(12345)
u_hat <- rnorm(1553, 0, 1.881)
d <- c(rep(0, 1434), rep(1, 119))
# predicted log odds:
pred_log_odds <- -3.0571 + 0.3915 * d + u_hat
pred_prob <- plogis(pred_log_odds)
coef(lm(pred_prob ~ 0 + factor(d)))

factor(d)0 factor(d)1 
 0.1189244  0.1490395

このシミュレートされた例では、これらの値はlsmeans GLMの結果にかなり近くなっています。データに対して以下のような構文を実行すると、

lm(fitted(model) ~ 0 + df$student_type)

どこmodelGLMMがある、あなたは、LS平均値に非常に近い値を取得する必要があります。を呼び出すfitted()glmer()、ランダムインターセプトも含まれ、返される値は確率であると想定しています。


グループが自然に発生している状況で、データでさらに検討する必要があるのは、ランダムインターセプトの異なるグループ分散なので、次のようなモデルです。

glmer(cbind(total_correct, total_ans-total_correct) ~
  (0 + student_type || student) + student_type,
  family = binomial, data = sub_df,
  control = glmerControl(optimizer = "nloptwrap", calc.derivs = FALSE))

現時点では、ランダムな切片の分散がグループによって異ならないことを想定しているため、探索する価値があるかもしれません。私は||lme4が2つのランダムなインターセプトを相関させないように使用しました。


データの行が基本的に1つしかない場合、生徒ごとにランダムな切片を追加できることは知りませんでした。しかし、私はそれを合理化しています。行ごとの試行と失敗は、長い形式では数行になると想定しています。


1

モデル1、ランダムな影響のないロジスティック回帰:

Logit(Pr(Y=1))=Xβ

MLEは漸近的に偏りがないことを知っています。ただし 、ロジット関数の非線形性のため、はバイアス推定です。しかし、漸近的にそれは公平です。したがって、モデル1では、が許容されます。β^

P^r(Y=1)=Logit1(Xβ^)
Pr(Y=1)P^r(Y=1)=Logit1(Xβ^)

モデル2、ランダムな切片によるロジスティック回帰:

Logit(Pr(Yij=1))=Xijβ+γi
γN(0,σ2)

この状況では、よくある間違いは

Pr(Y=1|X)=E(Y|X)=E(Logit1(Xβ+γi))=Logit1(E(Xβ+γi))=Logit1(Xβ)

このプロセスでは、ロジット関数の非線形性は完全に無視されます。

したがって、次の出力は非常に誤解を招くものです。グループ1の学生の場合、修正の確率は4.5%であると考えられます。

    student_type            prob          SE df  asymp.LCL asymp.UCL
    student_group_1   0.04491007 0.004626728 NA 0.03666574 0.0549025
    student_group_2   0.06503249 0.015117905 NA 0.04097546 0.1017156

上記の間違いは、混合効果ロジスティック回帰に寄与することはできません。結果の誤った解釈に起因するはずです。

周辺平均を正しく導き出す方法を見てみましょう。 ここで、あり、はY

Pr(Y=1|X)=E(Y|X)=E(Logit1(Xβ+γi))=Logit1(z)ϕ(z)dz
z=Xβ+γiϕN(Xβ,σ2)

グループ1の学生の場合、結果は、ます。20ポイントのガウスエルミート求積法を使用して、 。同様に、です。Xβ=3.0571σ=1.881Pr(Y=1|X=0)=0.1172Pr(Y=1|X=0)=0.1492

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