Как указать имена случайных эффектов в newdata data.frame, используемом в функцииpret ()? - lme4 - PullRequest
0 голосов
/ 01 октября 2019

У меня проблема с использованием функцииpret () в lme4. Точнее, мне не очень понятно, как объявлять имена случайных эффектов, которые будут использоваться во фрейме данных newdata, которым я подпитываю функцию pregnet (), чтобы получить некоторые прогнозы. Я попытаюсь подробно описать мою проблему.

Данные

Данные, с которыми я работаю, являются продольными. У меня есть 119 наблюдений, для каждого из которых у меня есть несколько (6-7) измерений для каждого наблюдения, которые представляют размер белков, которые агрегируют во времени и становятся больше (назовем это LDL).

Модель

Модель, используемая для описания этого процесса, представляет собой кривую Ричарда (обобщенную логистическую функцию), которую можно записать как

enter image description here

Теперь я подгоняю отдельную кривую для группы измерений каждого наблюдения со следующими фиксированными, случайными эффектами и переменными:

alpha_fix - фиксированный эффект дляальфа alpha | Obs - случайный эффект для альфы, который варьируется между наблюдениями gamma_fix - фиксированный эффект для гаммы gamma | Obs - случайный эффект для гаммы, который варьируется между наблюдениями delta_f - фиксированный эффект Время - непрерывная переменная, время в часах LDL - переменная реакции, непрерывная, представляющая размер белков в момент времени t.

Прогнозы

После того, как я подгоню модель, я хочу использовать ее для прогнозирования значения LDL в определенный момент времени для каждогонаблюдение. Для этого мне нужно использовать функцию прогнозирования и назначить фрейм данных для newdata . читая документацию здесь , он говорит следующее:

Если в re.form включены какие-либо случайные эффекты (см. ниже), новые данные должны содержать столбцы, соответствующие всемгруппирование переменных и случайных эффектов, используемых в исходной модели, даже если не все используются в прогнозировании;однако в этом случае они могут быть безопасно установлены на NA

Теперь, как я понимаю, мне нужно иметь новый кадр данных, который в моем случае содержит следующие столбцы: «Время», "Obs", "alpha_f", "gamma_f", "delta_f", а также два столбца для случайных эффектов альфа и гамма, соответственно. Однако я не уверен, как эти два столбца со случайными эффектами должны быть названы, чтобы функция предиката () могла их понять. Я пробовал с "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)

Я был бы очень признателен, если бы кто-то мог дать мне какой-то совет.

Спасибоваше время!

...