Проще говоря, у меня есть модель множественной регрессии или ANOVA, но переменная отклика для каждого человека является криволинейной функцией времени.
- Как я могу сказать, какие из переменных правой стороны ответственны за существенные различия в формах или вертикальных смещениях кривых?
- Это проблема временного ряда, проблема повторных измерений или что-то еще?
- Каковы лучшие практики для анализа таких данных (желательно
R
, но я открыт для использования другого программного обеспечения)?
В более точном выражении: допустим, у меня есть модель но на самом деле представляет собой серию точек данных, собранных из один и тот же человек во многих временных точках , которые были записаны в виде числовой переменной. График данных показывает, что для каждого отдельного является квадратичной или циклической функцией времени, вертикальное смещение, форма или частота которого (в циклическом случае) могут существенно зависеть от ковариат. Ковариаты не меняются с течением времени, т. Е. Индивидуум имеет постоянную массу тела или группу лечения на протяжении периода сбора данных.
До сих пор я пробовал следующие R
подходы:
Manova
Anova(lm(YT~A*B,mydata),idata=data.frame(TIME=factor(c(1:10))),idesign=~TIME);
... где
YT
матрица, столбцы которой представляют собой временные точки, 10 из них в этом примере, но гораздо больше в реальных данных.Проблема: это рассматривает время как фактор, но моменты времени не совсем совпадают для каждого человека. Кроме того, их много относительно размера выборки, поэтому модель насыщается. Кажется, что форма переменной отклика со временем игнорируется.
Смешанная модель (как в Pinheiro и Bates, модели со смешанным эффектом в S и S-Plus )
lme(fixed=Y~ A*B*TIME + sin(2*pi*TIME) + cos(2*pi*TIME), data=mydata, random=~(TIME + sin(2*pi*TIME) + cos(2*pi*TIME))|ID), method='ML')
... где
ID
это фактор, который группирует данные по отдельным людям. В этом примере ответ является циклическим во времени, но вместо этого могут быть квадратные члены или другие функции времени.Проблема: я не уверен, нужен ли каждый временной термин (особенно для квадратичных) и какие из них зависят от ковариат.
- Это
stepAIC()
хороший метод для их выбора? - Если он удаляет зависящий от времени термин, он также удалит его из
random
аргумента? - Что, если я также использую автокорреляционную функцию (например,
corEXP()
), которая принимает формулу вcorrelation
аргументе - я должен сделать эту формулуcorEXP()
такой же, как вrandom
или просто~1|ID
? nlme
Пакет редко упоминаются в контексте временных рядов вне Пиньейра и Бейтса ... это не считаются хорошо подходят к этой проблеме?
- Это
Подгонка квадратичной или тригонометрической модели к каждому человеку, а затем использование каждого коэффициента в качестве переменной отклика для множественной регрессии или ANOVA.
Проблема: необходима множественная коррекция сравнения. Не могу думать ни о каких других проблемах, которые заставляют меня подозревать, что я что-то упускаю.
Как ранее предлагалось на этом сайте ( что такое термин для регрессии временного ряда, имеющего более одного предиктора? ), Существуют модели ARIMAX и передаточной функции / динамической регрессии .
Проблема: модели на основе ARMA предполагают дискретное время, не так ли? Что касается динамической регрессии, я впервые услышал об этом сегодня, но прежде чем углубиться в еще один новый метод, который может не сработать, я подумал, что было бы разумно попросить людей, которые делали это раньше, за советом.
Ответы:
Как сказал Jeromy Anglim, это поможет узнать количество временных точек, которые у вас есть для каждого человека; как вы сказали «многие», я бы рискнул, что функциональный анализ может быть жизнеспособной альтернативой. Возможно, вы захотите проверить пакет R FDA и посмотреть на книгу Рамсей и Сильверман .
источник
nlme
подходы (пункты 2 и 3 в ОП) по меньшей мере допустимыми для использования на данных в настоящее время?С самого начала постановки этого вопроса я пришел к выводу, что модели смешанного эффекта с субъектами в качестве фактора случайной блокировки являются практическим решением этой проблемы, т. Е. Вариант № 2 в моем первоначальном посте. Если
random
аргумент tolme
установлен в~1|ID
(гдеID
идентифицирует наблюдения, поступающие от одного и того же испытуемого), то выбирается модель случайного перехвата. Если он установлен,~TIME|ID
то устанавливается случайная модель наклона и пересечения. Любая правосторонняя формула, содержащая переменные, которые варьируются в пределах одного и того же индивида, может быть помещена между~
и|ID
, но слишком сложные формулы приведут к насыщенной модели и / или различным численным ошибкам. Поэтому можно использовать критерий отношения правдоподобия (anova(myModel, update(myModel,random=~TIME|ID))
) сравнить модель случайного перехвата с моделью случайного наклона и перехвата или другими кандидатами на модели случайного эффекта. Если разница в подгонке незначительна, придерживайтесь более простой модели. Для меня было излишним переходить к случайным функциям триггера в моем первоначальном посте.Другой вопрос, который я поднял, касался выбора модели. Кажется, что людям не нравится выбор моделей, но ни у кого нет практических альтернатив. Если вы слепо верите исследователю, который собрал данные о том, что объясняющие переменные являются и не имеют отношения к делу, вы часто будете слепо принимать их непроверенные предположения. Если вы принимаете во внимание все возможные биты информации, вы часто будете получать насыщенную модель. Если вы произвольно выбираете конкретную модель и переменные, потому что они просты, вы снова будете принимать непроверенные предположения, на этот раз свои.
Таким образом, в итоге, для повторных измерений это
lme
модели, за которыми следует обрезка с помощьюMASS:::stepAIC
илиMuMIn:::dredge
и / илиnlme:::anova.lme
до тех пор, пока у кого-то нет лучшей идеи.Я оставлю этот ответ на некоторое время, прежде чем принять его, чтобы посмотреть, есть ли у кого-нибудь опровержения. Спасибо за ваше время, и если вы читаете это, потому что у вас такой же вопрос, как у меня, удачи и добро пожаловать на полуисследованную территорию.
источник