我有一个随机效应模型,它根据参数变化,粗糙度来查看数值水温模型结果的平均偏差。粗糙度是x变量,mean_bias是y变量,流中的位置(1:9)是随机效应变量:
lmer_mb <- lmer(mean_bias ~ roughness + (1|location), data = W3T, REML=FALSE)
我尝试使用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
我是在正确的轨道上吗?
答案 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