更新:因为我现在知道我的问题被称为准完全分离,所以我更新了问题以反映这一点(感谢 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
一个假设是有 的影响validity
,但是初步分析表明可能有 的影响counterexamples
。由于我有相关数据(每个参与者都参与了所有试验),我想对数据使用 GLMM。不幸的是,counterexamples
准完全分离数据(至少在一个级别):
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
参数的标准错误简直是疯了。由于我的最终目标是评估某些影响是否显着,因此标准误差并非完全不重要。
- 如何处理准完全分离?我想要的是获得估计值,我可以从中判断某种影响是否显着(例如,使用
PRmodcomp
from packagepkrtest
,但这是此处未描述的另一个步骤)。
使用其他包的方法也很好。