【问题标题】:rank deficiency warning mixed model lmer秩不足警告混合模型 lmer
【发布时间】:2016-08-04 11:30:14
【问题描述】:

我有一个包含 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 但它没有返回任何结果。

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

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

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

【问题讨论】:

  • 1) 您是否真的将所有变量都视为因素,或者这只是您示例中的疏忽?即使没有其他错误,这也可能导致此问题。 2)我假设你的意思是 242 个数据点,而不是 142 个。

标签: r rank lme4 mixed-models


【解决方案1】:

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

归结为,如果您在“之前”期间(第 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 年;那么相互作用将是您实际估计的治疗效果。

【讨论】:

  • 太棒了,这已经为我解决了,我需要将处理前一年的处理地块表示为这样,非常感谢
猜你喜欢
  • 2023-03-12
  • 2012-03-07
  • 2017-07-29
  • 2019-05-08
  • 2021-10-04
  • 2014-12-20
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多