J'essaie d'adapter un modèle à temps discret dans R, mais je ne sais pas comment le faire.
J'ai lu que vous pouvez organiser la variable dépendante dans différentes lignes, une pour chaque observation de temps, et utiliser la glm
fonction avec un lien logit ou cloglog. En ce sens, j'ai trois colonnes: ID
, Event
(1 ou 0, à chaque fois, obs) et Time Elapsed
(depuis le début de l'observation), ainsi que les autres covariables.
Comment écrire le code pour l'adapter au modèle? Quelle est la variable dépendante? Je suppose que je pourrais utiliser Event
comme variable dépendante et inclure le Time Elapsed
dans les covariables. Mais que se passe-t-il avec le ID
? En ai-je besoin?
Merci.
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
Fran Villamil
la source
la source
self-study
balise.)Réponses:
Vous avez fondamentalement raison sur l'organisation des données. Si vous avez des cas organisés comme ceci:
Vous souhaiterez probablement réorganiser les données afin qu'elles ressemblent à ceci:
J'appelle cela une conversion d'un format large à un format long. Cela se fait facilement en R en utilisant la
reshape()
fonction ou encore plus facilement avec lereshape2
package.Personnellement, je garderais le
ID
champ de son utilisation potentielle pour identifier une source de variation dans un modèle à effets mixtes. Mais ce n'est pas nécessaire (comme l'a souligné @BerndWeiss). Ce qui suit suppose que vous voudriez le faire. Sinon, ajustez un modèle similaireglm(...,family=binomial)
sans les termes à effet aléatoire.Le
lme4
package dans R s'adaptera à un modèle de régression logistique à effets mixtes similaire à celui dont vous parlez, sauf avec un effet aléatoire ou deux pour tenir compte de la variabilité des coefficients entre les sujets (ID
). Voici un exemple de code pour ajuster un exemple de modèle si vos données sont stockées dans un bloc de données appelédf
.Ce modèle permet aux
TIME
et lesintercept
coefficients varient de façon aléatoire à travers ID. En d'autres termes, il s'agit d'un modèle mixte hiérarchique linéaire de mesures imbriqué chez des individus.Une autre forme de modèle d'historique d'événement temporel discret se divise
TIME
en variables muettes et s'adapte à chacune comme paramètre. C'est essentiellement le cas discret du modèle Cox PH parce que la courbe de risque n'est pas limitée à être linéaire (ou quadratique, ou cependant vous pouvez imaginer transformer le temps). Cependant, vous souhaiterez peut-être vous regrouperTIME
en un ensemble gérable (c'est-à-dire petit) de périodes discrètes s'il y en a beaucoup.D'autres alternatives impliquent de transformer le temps pour obtenir la bonne courbe de risque. La méthode précédente vous évite d'avoir à le faire, mais la méthode précédente est moins parcimonieuse que celle-ci (et le cas linéaire d'origine que j'ai posé) car vous pouvez avoir beaucoup de points dans le temps et donc beaucoup de paramètres de nuisance.
Une excellente référence sur ce sujet est l' analyse appliquée des données longitudinales de Judith Singer et John Willet : Modélisation du changement et de l'occurrence d'événements .
la source
Singer et Willett ont beaucoup publié sur ce sujet. Je vous recommande fortement de lire certains de leurs articles . Vous voudrez peut-être également obtenir leur livre "Analyse des données longitudinales appliquées: Modélisation des changements et des événements" . Clairement l'un des meilleurs manuels dans ce domaine.
Pour la plupart des chapitres de livres, il existe un exemple de code R (voir les chapitres 11 et suivants) qui montre comment vos données doivent être structurées («format personne-période») et comment analyser ce type de données. Pour un modèle à temps discret standard, vous n'avez pas besoin de la variable ID et vous n'avez pas non plus besoin d'estimer un modèle à effets mixtes comme suggéré par @ndoogan. Un simple
glm(event ~ time + ..., family = "binomial")
fonctionne très bien. Singer et Willett discutent également de nombreuses questions sur la façon de modéliser la variable temporelle (linéaire, quadratique, ...)Pour citer deux autres références que je recommande fortement:
la source
Vous pouvez diviser le temps et le temps en intervalles et effectuer un modèle logit multipériode comme dans Shumway (2001) . Par exemple, vos intervalles de temps sont . J'ai implémenté ceci dans R qui est directement applicable si vous avez des données initiales dans une configuration typique d'événement d'arrêt utilisée dans l'analyse de survie. Do notez que les t-stats du modèle résultant n'ont pas la correction mentionnée dans Shumway (2001).(0,1],(1,2],…
dynamichazard::static_glm
Cette méthode diffère de celle de @ndoogan avec les nuls temporels car vous n'obtenez qu'une seule interception commune dans toutes les périodes avec
dynamichazard::static_glm
. Vous pouvez cependant obtenir un mannequin pour chaque période en appelantdynamichazard::get_survival_case_weights_and_data
avec argumentuse_weights = FALSE
, en ajoutant vous-même l'indicateur de temps à celui renvoyédata.frame
, puis en appelant par exempleglm
.la source
dynamichazard
.C'est ce qu'on appelle des données de "processus de comptage". Le paquet de survie a une très bonne fonction tmerge (). Il est très utile d'insérer des covariables dépendantes du temps ou cumulatives et de partitionner le temps de suivi en conséquence. Le processus est très bien expliqué dans cette vignette
la source