在lme4中使用predict()函数时遇到问题。 更确切地说,我不太清楚如何声明要在newdata数据帧中使用的随机效果的名称,为了获得一些预测,我将其与prediction()函数一起使用。 我将尝试详细描述我的问题。
数据
我正在使用的数据是纵向的。我有119个观测值,每个观测值都有几个(6-7)个测量值,这些测量值代表蛋白质的大小,这些蛋白随时间聚集并变大(我们称其为LDL)。
模型
用于描述此过程的模型是Richard曲线(广义逻辑函数),可以写为
现在,我为每个观测值的测量组拟合一条单独的曲线,并具有以下固定的,随机的影响和变量:
alpha_fix -alpha的固定效果
alpha | Obs -对alpha的随机影响,随观察值而变化
gamma_fix -伽玛的固定效果
gamma | Obs -γ的随机效应,随观察值的不同而变化
delta_f -固定效果
时间-连续变量,以小时为单位
LDL -连续的响应变量,表示在时间点t处蛋白质的大小。
预测
一旦我对模型进行拟合,我想使用它来为每个观察值在特定时间点预测 LDL 的值。为此,我需要使用预测功能并为 newdata 分配一个数据框。阅读文档here时,内容如下:
如果re.form中包含任何随机效果(请参见下文),则为newdata 必须包含与所有分组变量相对应的列 和原始模型中使用的随机效果,即使不是全部 用于预测;但是,在这种情况下,可以将它们安全地设置为NA
现在,按照我的理解,我需要一个数据框newdata,在我的情况下,它包含以下列:“ Time”,“ Obs”,“ alpha_f”,“ gamma_f”,“ delta_f”,如下所示:以及两列分别表示alpha和gamma的随机效应。但是,我不确定应如何命名这两列具有随机效果的列,以使predict()函数能够理解它们。我尝试使用“ alpha | Obs”和“ gamma | Obs”,以及“ Obs $ alpha”,“ Obs $ gamma”,但是都抛出错误
FUN(X [[i]],...)中的错误:re.form中指定的随机效果 在原始模型中不存在。
我想知道是否有人知道这样做的正确方法是什么。
为完整起见,下面提供了用于拟合模型的代码:
ModelFunction = function (alpha, gamma, delta, Time) {
15 + (alpha-15) / (1 + exp ((gamma-Time) / delta))
}
ModelGradient = deriv(body(ModelFunction) [[2]], namevec = c ("alpha", "gamma", "delta"), function.arg = ModelFunction)
starting_conditions = c (alpha = 5000, gamma = 1.5, delta = 0.2) # Based on visual observation
fit = nlmer (
LDL ~
ModelGradient (alpha, gamma, delta, Time)
~ (gamma | Obs) + (alpha | Obs),
start = starting_conditions,
nlmerControl(optimizer="bobyqa", optCtrl = list(maxfun = 100000)),
data = ldlData)
如果有人能给我一些建议,我将不胜感激。
感谢您的时间!