Синтаксис диагональной дисперсионно-ковариационной матрицы для модели нелинейных смешанных эффектов в nlme - PullRequest
3 голосов
/ 29 марта 2020

Я анализирую регулярно собираемые данные об употреблении психоактивных веществ в течение первых 12 месяцев лечения в большой выборке амбулаторных больных, посещающих службы лечения наркомании и алкоголизма. Меня интересует, предсказывают ли разные уровни использования метамфетамина (без использования, низкое и высокое использование) в начале лечения разные уровни после года лечения, но данные очень нерегулярные: разные клиенты измеряются в разное время и разные числа раз в течение года их лечения.

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

Я начал со следующей нелинейной обобщенной модели наименьших квадратов, используя функцию gnls() в пакете nlme:

fitExp <- gnls(outcome ~ C*exp(-k*yearsFromStart),
               params = list(C ~ atsBase_fac, k ~ atsBase_fac),
               data = dfNL,
               start = list(C = c(nsC[1], lsC[1], hsC[1]),
                            k = c(nsC[2], lsC[2], hsC[2])),
               weights = varExp(-0.8, form = ~ yearsFromStart),
               control = gnlsControl(nlsTol = 0.1))

, где outcome - количество дней употребления наркотиков за 28 дней до измерения, atsBase_fac - это трехуровневый категориальный предиктор, указывающий уровень употребления амфетамина на исходном уровне (noUse, lowUse и highUse), yearsFromStart - это непрерывный предиктор, указывающий время от начала лечения в годах (базовый = 0, максимум - 1), C - это параметр, указывающий начальный уровень употребления наркотиков, а k - скорость распада. в употреблении наркотиков. Начальные значения C и k взяты из nls моделей, оценивающих эти параметры для каждой группы. Это результаты этой модели

Generalized nonlinear least squares fit
  Model: outcome ~ C * exp(-k * yearsFromStart) 
  Data: dfNL 
       AIC      BIC    logLik
  27672.17 27725.29 -13828.08

Variance function:
 Structure: Exponential of variance covariate
 Formula: ~yearsFromStart 
 Parameter estimates:
    expon 
0.7927517 

Coefficients:
                      Value Std.Error  t-value p-value
C.(Intercept)      0.130410 0.0411728  3.16738  0.0015
C.atsBase_faclow   3.409828 0.1249553 27.28839  0.0000
C.atsBase_fachigh 20.574833 0.3122500 65.89218  0.0000
k.(Intercept)     -1.667870 0.5841222 -2.85534  0.0043
k.atsBase_faclow   2.481850 0.6110666  4.06150  0.0000
k.atsBase_fachigh  9.485155 0.7175471 13.21886  0.0000

Таким образом, похоже, что существуют различия между группами по начальной норме употребления наркотиков и скорости сокращения употребления наркотиков. Я бы хотел go сделать еще один шаг и установить модель нелинейных смешанных эффектов. Я попытался обратиться к книге Пиньеро и Бейтса, сопровождающей пакет nlme, но единственные модели, которые я мог найти, которые использовали нерегулярные, разреженные данные, такие как моя, использовали самозапуск и моя модель этого не делает.

Я пытался адаптировать модель gnls() к nlme следующим образом:

fitNLME <- nlme(model = outcome ~ C*exp(-k*yearsFromStart),
                data = dfNL,
                fixed = list(C ~ atsBase_fac, k ~ atsBase_fac),
                random = pdDiag(yearsFromStart ~ id),
                groups = ~ id,
                start = list(fixed = c(nsC[1], lsC[1], hsC[1], nsC[2], lsC[2], hsC[2])),
                weights = varExp(-0.8, form = ~ yearsFromStart),
                control = nlmeControl(optim = "optimizer"))

bit Я получаю сообщение об ошибке, полагаю из-за ошибок в синтаксисе, указывающих случайные эффекты.

Может кто-нибудь дать мне несколько советов о том, как работает синтаксис для случайных эффектов в nlme?

Единственном наборе данных в Pinhiero и Бейтс, похожий на мой, использовал диагональную матрицу дисперсии-ковариации. Может кто-нибудь объяснить мне синтаксис этой nlme функции или предложить лучшую?

ps Я sh Я мог бы привести воспроизводимый пример, но придумал синтетические c данные, которые -создание одних и тех же ошибок выходит далеко за рамки моих навыков.

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