Ich versuche, ein zeitdiskretes Modell in R einzubauen, bin mir aber nicht sicher, wie ich das machen soll.
Ich habe gelesen, dass Sie die abhängige Variable in verschiedenen Zeilen organisieren können, eine für jede glm
Zeitbeobachtung , und die Funktion mit einem Logit- oder Cloglog-Link verwenden können. In diesem Sinne, ich habe drei Spalten: ID
, Event
(1 oder 0, in jeder Zeit obs) und Time Elapsed
(seit Beginn der Beobachtung), sowie die anderen Kovariaten.
Wie schreibe ich den Code passend zum Modell? Welches ist die abhängige Variable? Ich denke, ich könnte Event
als abhängige Variable verwenden und die Time Elapsed
in die Kovariaten aufnehmen. Aber was passiert mit dem ID
? Brauche ich es
Vielen Dank.
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
quelle
quelle
self-study
Tag hinzu.)Antworten:
Sie haben im Grunde Recht mit der Datenorganisation. Wenn Sie Fälle wie folgt organisiert haben:
Möglicherweise möchten Sie die Daten so neu organisieren, dass sie folgendermaßen aussehen:
Ich nenne das eine Konvertierung von einem Breitformat in ein Langformat. Dies geschieht einfach in R mit der
reshape()
Funktion oder noch einfacher mit demreshape2
Paket.Ich persönlich würde das
ID
Feld für seine mögliche Verwendung bei der Identifizierung einer Variationsquelle in einem Modell mit gemischten Effekten behalten . Dies ist jedoch nicht erforderlich (wie von @BerndWeiss hervorgehoben). Im Folgenden wird davon ausgegangen, dass Sie dies möchten. Wenn nicht, passen Sie ein ähnliches Modell mitglm(...,family=binomial)
ohne die zufälligen Effektterme an.Das
lme4
Paket in R passt zu einem logistischen Regressionsmodell mit gemischten Effekten, das dem Modell ähnelt, von dem Sie sprechen, außer mit ein oder zwei zufälligen Effekten, um die Variabilität der Koeffizienten zwischen den Subjekten zu berücksichtigen (ID
). Das Folgende wäre ein Beispielcode zum Anpassen eines Beispielmodells, wenn Ihre Daten in einem aufgerufenen Datenrahmen gespeichert sinddf
.Dieses spezielle Modell ermöglicht es, dass die
TIME
und dieintercept
Koeffizienten über die ID zufällig variieren. Mit anderen Worten, dies ist ein hierarchisches lineares gemischtes Modell von Messungen, die in Individuen verschachtelt sind.Eine alternative Form eines diskreten Zeitereignisverlaufsmodells zerfällt
TIME
in diskrete Dummies und passt jeweils als Parameter an. Dies ist im Wesentlichen der diskrete Fall des Cox-PH-Modells, da die Gefahrenkurve nicht darauf beschränkt ist, linear (oder quadratisch, oder wie auch immer Sie sich eine Transformationszeit vorstellen können) zu sein. Möglicherweise möchten Sie jedochTIME
eine überschaubare Gruppe (dh kleine) diskreter Zeiträume gruppieren , wenn viele vorhanden sind.Weitere Alternativen sind die Transformation der Zeit, um Ihre Gefahrenkurve richtig zu machen. Die vorherige Methode erspart Ihnen dies grundsätzlich, aber die vorherige Methode ist weniger sparsam als diese (und der ursprüngliche lineare Fall, den ich gestellt habe), da Sie möglicherweise viele Zeitpunkte und damit viele Störparameter haben.
Eine hervorragende Referenz zu diesem Thema ist die angewandte Längsschnittdatenanalyse von Judith Singer und John Willet : Modellierung von Veränderungen und Ereignisereignissen .
quelle
Singer und Willett wurden viel zu diesem Thema veröffentlicht. Ich empfehle Ihnen dringend, einige ihrer Artikel zu lesen . Vielleicht möchten Sie auch das Buch "Angewandte Längsschnittdatenanalyse: Modellierung von Änderungen und Ereignisereignissen" erhalten . Offensichtlich eines der besten Lehrbücher auf diesem Gebiet.
Für die meisten Buchkapitel steht R-Beispielcode (siehe Kapitel 11ff) zur Verfügung, der zeigt, wie Ihre Daten strukturiert werden müssen ("Personenperiodenformat") und wie diese Art von Daten analysiert werden. Für ein zeitdiskretes Standardmodell benötigen Sie die ID-Variable nicht und Sie müssen auch kein Modell mit gemischten Effekten schätzen, wie von @ndoogan vorgeschlagen. Ein einfaches
glm(event ~ time + ..., family = "binomial")
funktioniert gut. Singer und Willett diskutieren auch viele Fragen zur Modellierung der Zeitvariablen (linear, quadratisch, ...)Um zwei weitere Referenzen zu zitieren, die ich sehr empfehlen kann:
quelle
Sie können die Zeit in Intervalle unterteilen und ein Multiperioden-Logit-Modell wie in Shumway (2001) durchführen . Zum Beispiel sind Ihre Zeitintervalle . Ich habe dies in R implementiert, was direkt anwendbar ist, wenn Sie Anfangsdaten in einem typischen Stopp-Ereignis-Setup haben, das in der Überlebensanalyse verwendet wird Beachten Sie, dass die t-Statistiken des resultierenden Modells nicht die in Shumway (2001) erwähnte Korrektur aufweisen.(0,1],(1,2],…
dynamichazard::static_glm
Diese Methode unterscheidet sich von der Methode @ndoogan mit Zeitattrappen, da Sie in allen Zeiträumen mit nur einen gemeinsamen Abschnitt erhalten
dynamichazard::static_glm
. Sie können jedoch für jeden Zeitraum einen Dummy erhalten, indem Siedynamichazard::get_survival_case_weights_and_data
mit Argument aufrufenuse_weights = FALSE
, den Zeit-Dummy-Indikator selbst zum zurückgegebenen hinzufügendata.frame
und dann zglm
.quelle
dynamichazard
.Dies wird als "Zählprozess" -Daten bezeichnet. Das Überlebenspaket hat eine sehr schöne tmerge () Funktion. Es ist sehr nützlich, zeitabhängige oder kumulative Kovariaten einzufügen und die Partitionsverfolgungszeit entsprechend zu bestimmen. Der Vorgang wird in dieser Vignette sehr gut erklärt
quelle