ロジスティックGLMMで準完全分離を処理する方法


8

更新:私の問題が準完全分離と呼ばれていることがわかったので、これを反映するように質問を更新しました(Aaronに感謝)。


私は29人の人間の参加者(因子code)が一連の試行に取り組みresponse、1または0 であった実験からのデータセットを持っていp.validityます。type(肯定と拒否)、およびcounterexamples(少数と多数):

d.binom <- read.table("http://pastebin.com/raw.php?i=0yDpEri8")
str(d.binom)
## 'data.frame':   464 obs. of  5 variables:
##      $ code           : Factor w/ 29 levels "A04C","A14G",..: 1 1 1 1 1 1 1 1 1 1 ...
##      $ response       : int  1 1 1 1 0 1 1 1 1 1 ...
##      $ counterexamples: Factor w/ 2 levels "few","many": 2 2 1 1 2 2 2 2 1 1 ...
##      $ type           : Factor w/ 2 levels "affirmation",..: 1 2 1 2 1 2 1 2 1 2 ...
##      $ p.validity     : Factor w/ 2 levels "invalid","valid": 1 1 2 2 1 1 2 2 1 1 ...

全体として、少数の0のみがあります。

mean(d.binom$response)
## [1] 0.9504

仮説の1つは、の影響があるということですvalidityが、予備分析では、の影響がある可能性があることが示唆されていcounterexamplesます。従属データがあるので(各参加者がすべての試験に取り組みました)、データにGLMMを使用したいと思います。残念ながら、counterexamples(少なくとも1つのレベルについて)データを準完全に分離します。

with(d.binom, table(response, counterexamples))
##         counterexamples
## response few many
##        0   1   22
##        1 231  210

これはモデルにも反映されています。

require(lme4)
options(contrasts=c('contr.sum', 'contr.poly'))


m2 <- glmer(response ~ type * p.validity * counterexamples + (1|code), 
            data = d.binom, family = binomial)
summary(m2)
## [output truncated]
## Fixed effects:
##                                      Estimate Std. Error z value Pr(>|z|)
##   (Intercept)                            9.42     831.02    0.01     0.99
##   type1                                 -1.97     831.02    0.00     1.00
##   p.validity1                            1.78     831.02    0.00     1.00
##   counterexamples1                       7.02     831.02    0.01     0.99
##   type1:p.validity1                      1.97     831.02    0.00     1.00
##   type1:counterexamples1                -2.16     831.02    0.00     1.00
##   p.validity1:counterexamples1           2.35     831.02    0.00     1.00
##   type1:p.validity1:counterexamples1     2.16     831.02    0.00     1.00

パラメータの標準エラーは非常に異常です。私の最終的な目標は特定の影響が重要かどうかを評価することなので、標準誤差はまったく重要ではありません。

  • 準完全分離をどのように処理できますか?私が欲しいのは、特定の効果が重要であるかどうかを判断できる見積もりを取得することです(たとえば、PRmodcompfrom package を使用しますpkrtestが、これはここで説明されていない別のステップです)。

他のパッケージを使用するアプローチも問題ありません。


2
作業を開始するには、これを試してください:ats.ucla.edu/stat/mult_pkg/faq/general/...
アーロンは、スタックオーバーフロー左

@アーロン素晴らしいですね。答えにこれを置くことは、少なくとも...あなたは1つのupvoteを持っているだろう
ヘンリック

本当に答えではありませんが、ありがとうございます!
アーロンがスタックオーバーフローを去った

@ヘンリックあなたもコメントに賛成投票できます。
Peter Flom

Paul Allisonによるこの論文を参照してください。彼はSASを強調していますが、同じ点が他の言語にも当てはまります。
Peter Flom

回答:


8

タイトルにタイプミスがあるのではないかと思います:クラスターが30個しかない非線形混合モデルはもちろんのこと、混合モデルにも当てはまらないでください。測定誤差、非線形性、およびほぼ完全な分離(別名完全な予測)によって妨げられた30点に正規分布を当てはめることができると思わない限り、そうではありません。

ここで私がすることは、これをFirthの修正を伴う通常のロジスティック回帰として実行することです。

library(logistf)
mf <- logistf(response ~ type * p.validity * counterexamples + as.factor(code),
      data=d.binom)

ファースの修正は、可能性にペナルティを追加することで構成され、収縮の形式です。ベイズの用語では、結果の推定は、ジェフリーズが事前に存在するモデルの事後モードです。頻度論的に言えば、ペナルティは単一の観測に対応する情報行列の決定要因であり、したがって漸近的に消えます。


4
実際、私 30未満のクラスターで混合モデルをフィッティングすると信じいます。しかし、それでも分析は有望なようです(+1)。それともGLMMのためのファースの方法はありますか?
Henrik

2
そうです、あなたは最小サンプルサイズ要件の熱狂者です...ファースの修正はiidデータのみで機能します。何かを信じることはできますが、シミュレーションを実行して、特定の信念が特定のデータ状況で正当化されるかどうかを確認した方がよいでしょう。完全にバランスのとれたデータセットと継続的な応答により、問題なく動作する場合があります。応答に関して、非常に不均衡なデータセットを使用すると、変量効果の正規分布の左端の尾のみが表示され、この尾に1点ラプラスで近似されていることに賭けてもよろしいです*lmerか??? :-\
StasK 2012年

5

ほぼ同じ効果を得るには、固定効果に弱い事前分布を使用したベイジアン最大事後確率アプローチを使用できます。特に、blmeパッケージ(薄いラッパであるR用lme4パッケージ)がこれを行いますが、例のように、固定効果のための事前確率を指定した場合、ここで(「完全分離」を検索):

cmod_blme_L2 <- bglmer(predation~ttt+(1|block),data=newdat,
                       family=binomial,
                       fixef.prior = normal(cov = diag(9,4)))

tttβΣ=9IN(μ=0,σ2=9)σ=3

リンクされた例はMCMCglmm、完全なベイジアンに行きたい場合は、パッケージでそれを行うこともできることを示しています...

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