Множественные случайные эффекты в линейной смешанной модели с nlme и lme4 - PullRequest
0 голосов
/ 07 августа 2020

Я хотел бы изучить различия в количестве жира между 2 посещениями с помощью линейной модели смешанных эффектов. Итак, все будет начинаться как lme(fat~, теперь ... что касается коэффициентов, у меня есть некоторые, которые будут меняться от посещения 1 к посещению 2, так как они статус гипертонии, статус диабета, bmi, окружность талии, Smoking_status эт c. И другие переменные, которые не изменятся от посещения 1 к посещению 2, так как они пол или этническая принадлежность.

Обратите внимание, что следующие переменные являются фиктивными ( статус гипертонии, статус диабетика , Smoking_status, пол ), а следующие непрерывны ( bmi, окружность талии, возраст ).

Моя первоначальная модель с использованием пакета nlme была выражена как:

lme(fat~ diabetes_status + hypertension_status + bmi + waist + smoker + gender + ethnicity, random= ~1|PatientID/Visit, data = df_1, na.action = na.omit)

посещение имеет 2 уровня (1 и 2)

Однако мне сказали, что те переменные, которые меняются с течением времени, должны быть случайными эффектами, в то время как все остальные должны быть исправлены . В другом вопросе из stackoverflow ( с указанием нескольких отдельных случайных эффектов в nlme ) я прочитал, что nlme не подходит для указания перекрестных эффектов (то есть нескольких отдельных случайных эффектов) и что пакет lme4 справится с этим лучше всего.

Я пробовал несколько способов сделать это:

attempt_1 = lmer(fat ~ gender + ethnicity + (1|diabetes_status) + (1|hypertension_status) + (1|PatientID/visit), data=df_1, REML=TRUE)

attempt_2 = lmer(fat ~ gender + ethnicity + (1|diabetes_status) + (1|hypertension_status) + (1|PatientID/visit), data=df_1, REML=FALSE)

attempt_3 = lmer(fat ~ gender + ethnicity + (diabetes_status+hypertension_status|PatientID/visit), data=df_1, REML=TRUE)

attempt_4 = lmer(fat ~ age + ethnicity + (1|diabetes_status) + (1|hypertension_status) + (1|PatientID/visit), data=df_1, REML=FALSE)

attempt_5 = lmer(fat ~ age + ethnicity + (1+diabetes_status+hypertension_status|PatientID/visit), data=df_1, REML=TRUE)

Но ни одна из этих попыток не работает, и ошибка всегда одна и та же: Error: number of levels of each grouping factor must be < number of observations Я предполагаю, что это может быть для одна из этих трех причин:

  1. Код неверен ни в одной из попыток, если это правда, что было бы наилучшим способом express это?

  2. Случайные эффекты действительно должны быть фиксированными эффектами (так что в этом случае правильной моделью будет lme(fat~ diabetes_status + hypertension_status + bmi + waist + smoker + gender + ethnicity, random= ~1|PatientID/Visit, data = df_1, na.action = na.omit)), которая работает идеально.

  3. Линейные модели смешанных эффектов не готовы обрабатывать так много случайных эффектов.

Есть мысли? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...