0

我使用带有 lmer 函数的 lme4 和 lsmeans 包计算了一个线性混合模型,其中我有一个因变量 rv 和交互因素处理、时间、年龄和种族。我对响应变量随时间的变化感兴趣,这就是我使用 lstrends 函数的原因。到目前为止,一切都很好。问题是,我必须对响应变量进行平方根才能正确拟合模型。但是pairs-function只给出对rv的平方根的响应,很难解释!

所以我尝试在对之后对响应变量进行反向转换:

model.lmer <- lmer(sqrt(rv) ~ treat*time*age*race + (1|individual), data=mydata)
model.lst <- lstrends(model.lmer, ~treat | age*race , var = "time", type="response")
pairs(mouse.lst, type="response")

正如包本身所述,这显然不起作用:

# Transformed response
sqwarp.rg <- ref.grid(update(warp.lm, sqrt(breaks) ~ .))
summary(sqwarp.rg)

# Back-transformed results - compare with summary of 'warp.rg'
summary(sqwarp.rg, type = "response")

# But differences of sqrts can't be back-transformed
summary(pairs(sqwarp.rg, by = "wool"), type = "response")

# We can do it via regrid
sqwarp.rg2 <- regrid(sqwarp.rg)
summary(sqwarp.rg2)  # same as for sqwarp.rg with type = "response"
pairs(sqwarp.rg2, by = "wool")

它可能类似于以下代码:

summary(pairs(lsmeans(rg.regrid, ~ treat | race*age, trend="time")), type="response")

问题是,我不能只为 lsmeans 更改 lstrends 的参考网格,因为 lstrends 或 lsmeans 中的第一个参数带有 trend="time" 需要线性混合效应模型 (model.lmer) 而不是参考网格就像在 lsmeans 中一样,没有趋势参数......这可能就是为什么我不能用

这里很好地总结了我的问题:

model.sqrt <- lmer(sqrt(rv) ~ time*treat*race*age, data=mydata)
rg <- ref.grid(model.sqrt)
rg.regrid <- regrid(rg)
summary(pairs(lsmeans(rg.regrid, ~treat | race*age*time), type = "response"))

完美运行。

summary(pairs(lsmeans(rg.regrid, ~treat | race*age, trend="time"), type = "response"))

给出以下错误:

Error in summary(pairs(lsmeans(rg.regrid, ~vns | gen * age, trend = "time"),  : 
error in evaluating the argument 'object' in selecting a method for function 'summary': Error in data[[var]] : subscript out of bounds

如何避免错误并仍然能够对我的数据进行反向转换?

4

1 回答 1

0

这似乎根本不可能——反向转换将是一个复杂的过程,没有任何明显的模式。这就是包的创建者所说的。

于 2016-08-11T13:12:59.503 回答