Я пытаюсь вписать модель с дискретным временем в R, но я не уверен, как это сделать.
Я читал, что вы можете организовать зависимую переменную в разных строках, по одной для каждого временного наблюдения, и использовать glm
функцию со ссылкой logit или cloglog. В этом смысле, у меня есть три колонки: ID
, Event
(1 или 0, в каждой временной набл) и Time Elapsed
(с начала наблюдения), а также других ковариаций.
Как мне написать код для соответствия модели? Какая зависимая переменная? Я думаю, я мог бы использовать Event
в качестве зависимой переменной и включить Time Elapsed
в ковариат. Но что происходит с ID
? Мне это нужно?
Спасибо.
r
survival
pca
sas
matlab
neural-networks
r
logistic
spatial
spatial-interaction-model
r
time-series
econometrics
var
statistical-significance
t-test
cross-validation
sample-size
r
regression
optimization
least-squares
constrained-regression
nonparametric
ordinal-data
wilcoxon-signed-rank
references
neural-networks
jags
bugs
hierarchical-bayesian
gaussian-mixture
r
regression
svm
predictive-models
libsvm
scikit-learn
probability
self-study
stata
sample-size
spss
wilcoxon-mann-whitney
survey
ordinal-data
likert
group-differences
r
regression
anova
mathematical-statistics
normal-distribution
random-generation
truncation
repeated-measures
variance
variability
distributions
random-generation
uniform
regression
r
generalized-linear-model
goodness-of-fit
data-visualization
r
time-series
arima
autoregressive
confidence-interval
r
time-series
arima
autocorrelation
seasonality
hypothesis-testing
bayesian
frequentist
uninformative-prior
correlation
matlab
cross-correlation
Фран Вильямиль
источник
источник
self-study
тег.)Ответы:
Вы в основном правы относительно организации данных. Если у вас есть дела, организованные так:
Вы, вероятно, захотите реорганизовать данные так, чтобы они выглядели так:
Я называю это преобразованием из широкого формата в длинный. Это легко сделать в R с помощью
reshape()
функции или еще проще с помощьюreshape2
пакета.Лично я бы оставил
ID
поле для его потенциального использования при определении источника вариаций в модели смешанных эффектов. Но это не обязательно (как указано @BerndWeiss). Ниже предполагается, что вы хотели бы сделать это. Если нет, используйте аналогичную модельglm(...,family=binomial)
без терминов случайного эффекта.lme4
Пакет в R будет соответствовать смешанным эффектам логистической регрессионной модели , аналогичной той , что вы говорите, за исключением случайного эффекта или два для учета изменчивости коэффициентов по предметам (ID
). Ниже приведен пример кода для подбора примерной модели, если ваши данные хранятся во фрейме данных с именемdf
.Эта конкретная модель позволяет коэффициентам
TIME
иintercept
коэффициентам изменяться случайным образом по идентификатору. Другими словами, это иерархическая линейная смешанная модель измерений, вложенная в отдельных лиц.Альтернативная форма модели истории событий с дискретным временем разбивается
TIME
на отдельные макеты и подходит для каждого в качестве параметра. По сути, это дискретный случай модели Кокса PH, поскольку кривая опасности не ограничивается линейной (или квадратичной, или, тем не менее, вы можете представить себе время преобразования). Хотя, возможно, вы захотите сгруппироватьTIME
в управляемый набор (то есть небольшой) дискретных периодов времени, если их много.Дальнейшие альтернативы включают преобразование времени, чтобы получить правильную кривую опасности. Предыдущий метод в основном освобождает вас от необходимости делать это, но предыдущий метод менее экономен, чем этот (и исходный линейный случай, который я изложил), потому что у вас может быть много временных точек и, следовательно, много неприятных параметров.
Отличным справочником по этой теме является Прикладной продольный анализ данных Джудит Сингер и Джона Уиллета : изменение моделирования и возникновение событий .
источник
Певица и Виллетт были опубликованы много на эту тему. Я настоятельно рекомендую вам прочитать некоторые из их статей . Вы также можете получить их книгу «Прикладной продольный анализ данных: моделирование изменений и возникновения событий» . Очевидно, один из лучших учебников в этой области.
Для большинства глав книг доступен пример кода R (см. Главы 11 и далее), который демонстрирует, как должны быть структурированы ваши данные («формат человеко-период») и как анализировать данные такого рода. Для стандартной модели с дискретным временем вам не нужна переменная ID, и вам также не нужно оценивать модель смешанных эффектов, как предлагает @ndoogan. Простая
glm(event ~ time + ..., family = "binomial")
работает просто отлично. Зингер и Уиллетт также обсуждают много вопросов, как моделировать переменную времени (линейная, квадратичная, ...)Чтобы привести еще две ссылки, которые я настоятельно рекомендую:
источник
dynamichazard::static_glm
Этот метод отличается от @ndoogan с манекенами времени, поскольку вы получаете только один общий перехват во всех периодах времени с
dynamichazard::static_glm
. Вы можете, однако, получить манекен для каждого периода, вызвавdynamichazard::get_survival_case_weights_and_data
с аргументомuse_weights = FALSE
, добавить индикатор фиктивного времени себе возвращаемый ,data.frame
а затем вызвать , напримерglm
.источник
dynamichazard
.Это называется данными процесса подсчета. Пакет Survival имеет очень хорошую функцию tmerge (). Очень полезно вставлять зависимые от времени или кумулятивные ковариаты и время наблюдения за разделами соответственно. Процесс очень хорошо объяснен в этой виньетке
источник