在r中的随机效应模型中求解y = 0的x值

时间:2017-12-07 05:27:48

标签: r lme4

我有一个随机效应模型,它根据参数变化,粗糙度来查看数值水温模型结果的平均偏差。粗糙度是x变量,mean_bias是y变量,流中的位置(1:9)是随机效应变量:

lmer_mb <- lmer(mean_bias ~ roughness + (1|location), data = W3T, REML=FALSE)

Plot of the lmer

我尝试使用approx()来找到mean_bias = 0时的粗糙度值:

xval <- approx(roughness = lmer_mb$fitted,  mean_bias = lmer_mb$roughness, xout = 0)$mean_bias

但我一直收到错误:

  

大约错误(粗糙度= lmer_mb $拟合,mean_bias =   lmer_mb $ roughness,:未使用的参数(rough = lmer_mb $,   mean_bias = lmer_mb $ roughness)

我还想在我的情节上绘制xval(一旦我弄明白),并且要调整我在stackoverflow上的另一个问题中找到的代码:

xval <- approx(x = fit$fitted.values, y = x, xout = 30)$y

我是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题所需的方法。我需要加载包

library(merTools)

然后我使用wiggle函数在我想要解决x的区域周围生成一个新的数据框:

 opt2 <- wiggle(data=W3T, var="roughness", values = seq(0.05,0.1,0.001))

然后,我过滤了opt2我想要的值并将它们变成了一个列表:

sub.opt2 <- filter(opt2,mean_bias == "0")
sub.opt3 <- list(sub.opt2)

最后,使用draw()函数找到平均粗糙度:

opt.roughness <- draw(lmer_mb, type = 'average', varList = sub.opt3)
opt.roughness

我的解决方案基于我在此处找到的代码: https://cran.r-project.org/web/packages/merTools/vignettes/merToolsIntro.html