如何在预测()函数中使用的newdata data.frame中指定随机效果名称? -lme4

时间:2019-10-01 13:36:46

标签: r predict lme4

在lme4中使用predict()函数时遇到问题。 更确切地说,我不太清楚如何声明要在newdata数据帧中使用的随机效果的名称,为了获得一些预测,我将其与prediction()函数一起使用。 我将尝试详细描述我的问题。

数据

我正在使用的数据是纵向的。我有119个观测值,每个观测值都有几个(6-7)个测量值,这些测量值代表蛋白质的大小,这些蛋白随时间聚集并变大(我们称其为LDL)。

模型

用于描述此过程的模型是Richard曲线(广义逻辑函数),可以写为

enter image description here

现在,我为每个观测值的测量组拟合一条单独的曲线,并具有以下固定的,随机的影响和变量:

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)

如果有人能给我一些建议,我将不胜感激。

感谢您的时间!

0 个答案:

没有答案