【问题标题】:Drawing a quadratic function in mixed effect model在混合效应模型中绘制二次函数
【发布时间】:2017-09-03 06:16:12
【问题描述】:

这是一个有点长的问题,所以感谢您的耐心。

这是我的数据

https://www.dropbox.com/s/jo22d68a8vxwg63/data.csv?dl=0

我构建了一个混合效应模型

library(lme4)
mod <- lmer(sqrt(y) ~ x1 + I(x1^2) + x2 + I(x2^2) + x3 + I(x3^2) + x4 + I(x4^2) + x5 + I(x5^2) + 
      x6 + I(x6^2) + x7 + I(x7^2) + x8 +  I(x8^2) + (1|loc) + (1|year), data = data)

所有的预测变量都是标准化的,我很想知道y如何随着x5的变化而变化,同时保持其他变量的平均值(等于0,因为所有变量都是标准化的)。

我就是这样做的。

# make all predictors except x5 equal to zero 

data$x1<-0
data$x2<-0
data$x3<-0
data$x4<-0
data$x6<-0
data$x7<-0
data$x8<-0

# Use the predict function 
 library(merTools)
fitted <- predictInterval(merMod = mod, newdata = data, level = 0.95, n.sims = 1000,stat = "median",include.resid.var = TRUE)

现在我想将拟合绘制为x5 的二次函数。我这样做:

i<-order(data$x5)  

plot(data$x5[i],fitted$fit[i],type="l")

我希望这会生成y 的图,作为x5 的二次函数。但正如您所看到的,我得到以下没有任何二次曲线的图。谁能告诉我我在这里做错了什么?

【问题讨论】:

  • 是的。我有。
  • 我刚刚修改了我的问题以反映我过去使用 merTools 预测的内容
  • 这让我有点困惑。如果我从 mod 中提取 x5 的系数并自己绘制二次方,是否可以解释其他预测变量保持不变的事实。对不起,我的数学/统计有点弱。因此混乱。
  • 您是否可以将此作为解决方案发布,以便我可以标记它,看看我是否做对了。谢谢
  • plot(data$x5, 49.59507 + data$x5 * -1.09963 + data$x5^2 * -1.28696)

标签: r regression lme4 quadratic


【解决方案1】:

我不确定predictInterval 的来源,但您可以使用predict 来做到这一点。诀窍就是确保您将随机效果设置为 0。以下是您可以这样做的方法

newdata <- data
newdata[,paste0("x", setdiff(1:8,5))] <- 0
y <- predict(mod, newdata=newdata, re.form=NA)
plot(data$x5, y)

re.form=NA 部分丢弃了随机效应

【讨论】:

  • 谢谢。 predictInterval 来自库(merTools)
猜你喜欢
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
相关资源
最近更新 更多