m.ancova<-lm(pss.1~1+group+scale(pss.0),data=implist[[1]])summary(m.ancova)# Prüfe Voraussetzungen:# - Varianzhomogenität: gleichförmige Streuung der Residuen um 0# (-> Residuals vs. Fitted Plot)# - Normalverteilung der Residuen (-> Q-Q Plot)# Residuals vs. Fittedplot(m.ancova,1)# Q-Q Plotplot(m.ancova,2)# Analysis of Variance des Modellsanova(m.ancova)# Zum Vergleich: Fit ohne Kovariatelm(pss.1~1+group,data=implist[[1]])%>%anova()
ANCOVA in Multipel Imputierten Daten
# Liste muss Klasse "mitml.list" besitzen!class(implist)=c("mitml.list","list")# Fitte ANCOVA-Modell in allen MI-Setswith(implist,lm(pss.1~1+group+pss.0))%>%testEstimates()->mi.ancova# Extrahiere F-Wertewith(implist,lm(pss.1~1+group+pss.0))%>%map_dbl(~anova(.)$`F value`[1])->Fvalues# Kombiniere F-Werte mit Rubin-Regelnmicombine.F(Fvalues,1)
ANCOVA bei sekundären Endpunkten
# Definiere Namen alles zu analysierenden Variablen# (ohne Zeitangabe)test.vars=c("pss","cesd","hadsa","isi","mbi","pswq")# Generiere Modellformeln für Post- und FU-Messzeitpunktformula.1=paste(test.vars,".1 ~ 1 + group + ",test.vars,".0",sep="")formula.2=paste(test.vars,".2 ~ 1 + group + ",test.vars,".0",sep="")# Nutze "map", um Funktion über alle _Formeln_(!) anzuwenden:# 1. Berechne ANCOVA für spezifisches Outcome, unter Kontrolle der# Baselinemessung# 2. Extrahiere Ergebnisse des Gruppenterms# 3. Extrahiere F-Werte und aggregiere mit Rubin-Regeln# 4. Gebe generiertem data.frame neue Variablennamen# 5. Füge Spalten für Variable und MZP hinzuas.list(c(formula.1,formula.2))%>%map_dfr(function(x){with(implist,lm(as.formula(x)))%>%testEstimates()->resres$estimates[2,]->res.groupwith(implist,lm(as.formula(x)))%>%map_dbl(~anova(.)$`F value`[1])->Fvaluesmicombine.F(Fvalues,1,display=FALSE)->Fvalue.mic(res.group,Fvalue.mi)})%>%set_colnames(c("md","SE","t","df.mi","p.t","RIV","FMI","F","p.F","df.1","df.2"))%>%bind_cols(variable=rep(test.vars,2),time=rep(1:2,each=6),.)->mi.ancova.full# Speichere Ergebnisse als Excel-Sheetwrite_xlsx(mi.ancova.full,"mi_ancova_full.xlsx")