等级缺陷警告混合模型lmer

时间:2016-08-04 11:30:14

标签: r rank lme4 mixed-models

我有一个包含142个数据条目的数据集:两次测量121个人(两年,治疗前后,年份= 0或1),第二年46个人处理地块,其余人处于控制状态图(治疗= 0或1)。这是一些示例数据:

ID <- c("480", "480", "620", "620","712","712")
Year <- c("0", "1", "0", "1","0", "1")
Plot <- c("14", "14", "13", "13","20","20")
Treat <- c("0", "0", "0", "1", "0", "1")
Exp <- c("31", "43", "44", "36", "29", "71")
ExpSqrt <- c("5.567764", "6.557439", "6.633250", "6.000000", "5.385165", "8.426150")

Winter <- data.frame(ID, Year, Plot, Treat,
                  Exp, ExpSqrt,
                  stringsAsFactors = TRUE) 

情节和个体是随机因素,我正在尝试使用混合模型来确定年份,治疗及其相互作用的影响:

model_Exp <- lmer(ExpSqrt~Year+Treat+Year*Treat+(1|ID)+(1|Plot),data=Winter)

但我一直收到警告信息:

"fixed-effect model matrix is rank deficient so dropping 1 column / coefficient"

这将删除交互。

我的数据集中没有NA值,而且Exp总是正数但是由于分布是非正态的,我将sqrt转换为了这个值。它不是一个特别小的数据集,我尝试使用插入包中的函数findLinearCombos,但它没有返回结果。

我的理解是存在一些问题,因为治疗1仅在条件年= 1时发生(但并非在所有情况下:年= 1也包含75个对照个体)。

我不确定a)如何解决这个问题? 或b)如果无法解决如何解释这个?

我已经阅读了一些关于此警告的回复,但已经完成了我发现建议解决它的所有内容,我也读过一些关于Hauck-Donner效应的内容,但我不确定这是否是我的问题并且是相对的新的统计数据我不能承认我完全理解它。

1 个答案:

答案 0 :(得分:4)

这并非特别是线性混合模型问题。

如果您在“之前”期间(第0年)没有进行任何治疗,则无法估计相互作用。

最简单的例子:

(dd <- data.frame(y=1:3,treat=c(0,0,1),year=c(0,1,1)))

##   y treat year
## 1 1     0    0
## 2 2     0    1
## 3 3     1    1

适合模特:

lm(y~treat*year,dd) ## == year+treat+year:treat
## Call:
## lm(formula = y ~ treat * year, data = dd)
## 
## Coefficients:
## (Intercept)        treat         year   treat:year  
##           1            1            1           NA  

lm并未向您发出警告,但它通过删除额外的共线列并为其参数赋予lmer值,实际上与NA完全相同。如果您尝试caret::findLinearCombos(dd[c("year","treat")]),您将无法获得任何结果(yeartreat并非完全共线),但如果您查看R构造的模型矩阵以包含治疗列,你会得到一些东西:

X <- model.matrix(~year*treat,dd)
caret::findLinearCombos(X)
## $linearCombos
## $linearCombos[[1]]
## [1] 4 3
## $remove
## [1] 4

此实验设计不允许您估计相互作用。如果您从公式中删除它(使用year+treat而不是year*treat),您将获得相同的答案,但没有消息。或者,在典型的“控制前后影响”设计(环境影响评估)中,您会将获得治疗的个人标记为“影响”或“治疗”个体甚至在第0年;那么相互作用将是你实际估计的治疗效果。