秩缺失警告混合模型lmer

4

我有一个包含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转换。这不是一个特别小的数据集,我尝试使用caret包中的findLinearCombos函数,但它返回没有结果。

我的理解是,存在一些问题,因为只有在条件year=1下才会发生处理1(但并非在所有情况下:Year=1还包含75个对照个体)。

我不确定a)如何解决或是否可以解决? 或b)如果无法解决,则如何解释?

我已经阅读了一些关于此警告的响应,但已经尝试了建议解决方案中提到的所有内容,我也已经阅读了有关Hauck-Donner效应的一些内容,但我不确定这是否是我的问题,并且作为相对新手的统计学家,我不能完全理解它。


1
一个快速的谷歌搜索:http://stats.stackexchange.com/questions/35071/what-is-rank-deficiency-and-how-to-deal-with-it - NJBurgo
  1. 你是否真的将所有变量视为因子,还是这只是你示例中的疏忽?即使没有其他错误,这很可能会导致问题。
  2. 我假设你指的是242个数据点,而不是142个。
- mkt
1个回答

10

这并不是一个特定的线性混合模型问题。

它归结为这样一个事实:如果在“之前”时期(第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并不会警告你,但它通过删除额外的共线列并给其参数赋予NA值来实现与lmer相同的效果。如果您尝试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年,您也可以将那些可能接受治疗的个体标记为“影响”或“治疗”个体; 然后,交互作用就是您对治疗效果的实际估计效应。


太棒了,这解决了我的问题,我需要标注治疗前一年的处理过的图形,非常感谢。 - Felix25

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接