2016-11-19 137 views
1

我对某些数据运行LMEM(线性混合效应模型),并将模型(成对)与anova函数进行比较。但是,在特定的数据子集上,我收到了无意义的结果。LMEM:卡方= 0,问题= 1 - 我的代码出了什么问题?

这是我的全部型号:

m3_full <- lmer(totfix ~ psource + cond + psource:cond + 
    1 + cond | subj) + (1 + psource + cond | object), data, REML=FALSE) 

这是我比较它的模型:(基本上辍学的主要影响之一)

m3_psource <- lmer (totfix ~ psource + cond + psource:cond - 
psource + (1 + cond | subj) + (1 + psource + cond | object), 
    data, REML=FALSE) 

运行anova()功能(anova(m3_full, m3_psource) returns Chisq = 0,pr>(Chisq)= 1

我对其他一些LMEMs也是这样做的,一切看起来都很好,只是这个特殊的resp这个值给我奇怪的卡方和概率值。任何人都有一个想法,为什么以及如何修复它?任何帮助都感激不尽!

回答

1

这实际上并不是一个混合模型特有的问题,而是与R从公式(以及可能与模型比较的逻辑)构建模型矩阵的方式有关。

让我们缩小它

form1 <- ~ psource + cond + psource:cond 

form2 <- ~ psource + cond + psource:cond - psource 

(其等同于~cond + psource:cond)之间的比较。这两个公式给出了等价的模型矩阵,即具有相同列数的模型矩阵,跨越相同的设计空间,并给出相同的整体拟合优度。

制作了一个最小数据集探索:

dd <- expand.grid(psource=c("A","B"),cond=c("a","b")) 

什么构造变量,我们会得到每个公式?

colnames(model.matrix(form1,data=dd)) 
## [1] "(Intercept)" "psourceB"  "condb"   "psourceB:condb" 

colnames(model.matrix(form2,data=dd)) 
## [1] "(Intercept)" "condb"   "psourceB:conda" "psourceB:condb" 

我们得到相同数量的对比。

对此问题有两种可能的答案。

  1. 有思想的一所学校(由内尔德,维纳布尔斯等:如看到代表维纳布尔斯著名的(?),但是未公布exegeses on linear models,在principle of marginality部分5,或维基百科),指出它不”在交互条件的存在下尝试测试主效应是有意义的,这就是你想要做的。

  2. 偶尔情况下(例如,在前后对照控制影响力的设计,其中“前”的控制和影响之间的差异被称为是零由于实验协议),您真的想这样做这个比较。在这种情况下,您必须制作自己的虚拟变量并将其添加到数据中,例如

## set up model matrix and drop intercept and "psourceB" column 
dummies <- model.matrix(form1,data=dd)[,-(1:2)] 
## d='dummy': avoid colons in column names 
colnames(dummies) <- c("d_cond","d_source_by_cond") 
colnames(model.matrix(~d_cond+d_source_by_cond,data.frame(dd,dummies))) 
## [1] "(Intercept)"  "d_cond"   "d_source_by_cond" 

这是一个麻烦。我猜测这很困难的原因是,R和S的原作者之前是来自思想学派#1,并认为通常当人们试图这样做时,这是一个错误;他们并没有做到不可能,但他们并没有竭尽全力让事情变得容易。

+0

谢谢!当我比较两个其他模型(没有一个主效应vs完整一个),来自同一个数据集的不同响应变量时,我没有得到同样的问题(chisq和概率是正常的)。当我取出任何主效应时,以及与只有随机效应的模型进行比较时,我只得到了chisq = 0和prob = 1,并且只对响应变量'totfix'进行了比较。我还应该补充说我已经对'psource'和'cond'因素做了偏差编码(不知道这有多相关)。任何想法,为什么这可能是?不过,我会尝试虚拟编码,希望它能解决问题! – Liritha

+0

嗯,不知道没有进入更多的细节。尽管......根据我的观点,你的评论的第一句话有点令人惊讶,应该仅仅依赖于预测变量(数字与因素,主要与交互)。 *如果*你手动编写你的交互,或者根据数字输入变量,我认为它应该工作。 (但请记住上面第1点中概括的想法......) –