Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
## Thesis Results: The diurnal cortisol rythm during pregnancy
#setwd("C:/Users/User/Desktop/Internship/RScripts/Cortisol/Master_Thesis")
setwd("C:/Users/alici/Desktop/Git_Folder/ITU_cortisol_analyses/Master_Thesis")
############ Data preparation ##########################
## libraries
library(dplyr)
library(ggplot2)
library(nlme)
library(sjPlot)
library(data.table)
library(ggeffects)
library(tibble)
library(DescTools)
library(reghelper)
library(APAstyler)
library(car)
### wide format ##################################
load("Rdata/ITU_combined_cortisol_dates_times_wide_format.Rdata")
load("Rdata/processed_register_data.Rdata")
wide_cort_reg_data <- left_join(wide_cort,
register_data)
#exclude corticosteroid treatment
no_cortico_treat <- wide_cort_reg_data[wide_cort_reg_data$Maternal_Corticosteroid_Treatment_during_Pregnancy == "no",]
#exclude violattions against cortisol collection protocol
comments_to_be_excluded <- c(88,6,12,3,15,9999,7,16,45,5,34,17,57,67,99)
final_wide_cort <- no_cortico_treat[!(no_cortico_treat$notes %in% comments_to_be_excluded),]
##pregstage factoring
final_wide_cort$pregstage <- factor(final_wide_cort$pregstage, ordered = FALSE)
##factoring of predictors
final_wide_cort$pregstage <- factor(final_wide_cort$pregstage)
final_wide_cort$participantID <- factor(final_wide_cort$participantID)
final_wide_cort$ELISA_analysis_plate <- factor(final_wide_cort$ELISA_analysis_plate)
final_wide_cort$Maternal_Diabetes_Disorders_anyVSnone <- factor(final_wide_cort$Maternal_Diabetes_Disorders_anyVSnone,
levels = c(-999,0,1),
labels = c("none","none", "yes"))
final_wide_cort$Maternal_Hypertensive_Disorders_anyVSnone <- factor(final_wide_cort$Maternal_Hypertensive_Disorders_anyVSnone,
levels = c(-999,0,1),
labels = c("none","none", "yes"))
#data preparation
#boxplot(final_wide_cort$cort_d_AUC ~ final_wide_cort$pregstage)
final_wide_cort$time_of_day_in_hours_since_midnight_S1 <- as.numeric(final_wide_cort$time_of_day_in_hours_since_midnight_S1)
final_wide_cort$season <- factor(final_wide_cort$season)
########### add well_being data to it
load("Rdata/processed_wellbeingduringpreg_completevars.Rdata")
#for now only sleep, nausea, anxiety and CESD are included
cols <- c("1", "2",grep("gestage", names(q_data_complete)),
grep("GWdiff_cort_qclosest", names(q_data_complete)),
grep("Cesd", names(q_data_complete)),
# grep("puqe", names(q_data_complete)),
grep("PSQI", names(q_data_complete)),
# grep("ESS", names(q_data_complete)),
grep("BAI",names(q_data_complete)))
q_data_sub <- q_data_complete[,c(as.numeric(cols))]
#combine with cortisol
final_wide_cort <- left_join(final_wide_cort,
q_data_sub,
by = c("participantID", "pregstage", "gestage_weeks"))
## Sample stratification
## those with multiple assessments
complete_assessments <- c()
two_assessments <- c()
at_least_two_assessments <- c()
once <- c()
final_wide_cort <- as.data.frame(final_wide_cort)
IDs <- unique(final_wide_cort$participantID)
IDs_I <- unique(final_wide_cort$participantID[final_wide_cort$pregstage == "I"])
IDs_II <- unique(final_wide_cort$participantID[final_wide_cort$pregstage == "II"])
IDs_III <- unique(final_wide_cort$participantID[final_wide_cort$pregstage == "III"])
for(i in 1:length(IDs)){
ID <- IDs[[i]]
#print(ID)
trims <- unique(final_wide_cort[final_wide_cort$participantID == ID, c("pregstage")])
#print(nrow(trims))
if(length(trims) == 3){
complete_assessments <- append(complete_assessments,ID)
}
if(length(trims) == 2){
two_assessments <- append(two_assessments, ID)
}
if(length(trims) >= 2){
at_least_two_assessments <- append(at_least_two_assessments, ID)
}
if(length(trims) == 1){
once <- append(once, ID)
}
}
# IDs_T1_T2 <- which(two_assessments %in% IDs_I & two_assessments %in% IDs_II)
# length(IDs_T1_T2) #68
# IDs_T1_T3 <- which(two_assessments %in% IDs_I & two_assessments %in% IDs_III)
# length(IDs_T1_T3) #32
# IDs_T2_T3 <- which(two_assessments %in% IDs_II & two_assessments %in% IDs_III)
# length(IDs_T2_T3) #145
# Q_df_wide <- subset(final_wide_cort, abs(GWdiff_cort_qclosest_to_cortGW) < 2)
# Q_df_wide %>%
# group_by(pregstage) %>%
# summarise(n=n(),
# GW = mean(gestage_weeks,na.rm=T),
# min_GW = min(gestage_weeks,na.rm=T),
# max_GW = max(gestage_weeks,na.rm=T),
#
# )
### long format ####
load("Rdata/ITU_combined_cortisol_dates_times_long_format.Rdata")
# long_cort <- long_cort %>%
# group_by(participantID) %>%
# mutate(nr_assessments = max(row_number()))
# Nrs <- long_cort[,c("participantID", "nr_assessments")]
# Nrs <- subset(Nrs, !duplicated(Nrs))
# mean(Nrs$nr_assessments, na.rm = T)
#
# long_cort <- long_cort %>%
# group_by(participantID, pregstage) %>%
# mutate(nr_assessments = max(row_number()))
#
# #T1
# Nrs <- long_cort[long_cort$pregstage == "I",c("participantID", "nr_assessments")]
# Nrs <- subset(Nrs, !duplicated(Nrs))
# mean(Nrs$nr_assessments, na.rm = T)
#
# #T2
# Nrs <- long_cort[long_cort$pregstage == "II",c("participantID", "nr_assessments")]
# Nrs <- subset(Nrs, !duplicated(Nrs))
# mean(Nrs$nr_assessments, na.rm = T)
#
# #T3
# Nrs <- long_cort[long_cort$pregstage == "III",c("participantID", "nr_assessments")]
# Nrs <- subset(Nrs, !duplicated(Nrs))
# mean(Nrs$nr_assessments, na.rm = T)
#
# length(unique(long_cort$participantID[long_cort$nr_assessments == 7]))
#register data as prepared
load("Rdata/processed_register_data.Rdata")
final_cort <- left_join(long_cort,
register_data)
## Exclusion based on register data: betamethasone treatment and protocol violations ####
no_cortico_treat <- final_cort[final_cort$Maternal_Corticosteroid_Treatment_during_Pregnancy == "no",]
#length(unique(final_cort$participantID[final_cort$Maternal_Corticosteroid_Treatment_during_Pregnancy == 1])) #N=15
#exclude violations against protocol
comments_to_be_excluded <- c(88,6,12,3,15,9999,7,16,45,5,34,17,57,67,99)
final_long_cort <- no_cortico_treat[!(no_cortico_treat$notes %in% comments_to_be_excluded),]
## merge with well-being questionnaires ####
final_long_cort <- left_join(final_long_cort,
as.data.frame(final_wide_cort[,c("participantID",
"gestage_weeks_qclosest_to_cortGW",
"pregstage",
"Cesd_qclosest_to_cortGW",
"Cesd_qclosest_to_cortGW_pregMean",
"Cesd_qclosest_to_cortGW_pregMeanDeviat",
"PSQI_qclosest_to_cortGW",
"PSQI_qclosest_to_cortGW_pregMean",
"PSQI_qclosest_to_cortGW_pregMeanDeviat",
"BAI_qclosest_to_cortGW",
"BAI_qclosest_to_cortGW_pregMean",
"BAI_qclosest_to_cortGW_pregMeanDeviat",
"qclosest_based_clin_Cesd", # "puqe_sumscore_qclosest_to_cortGW",
# "puqe_sumscore_qclosest_to_cortGW_pregMean",
# "puqe_sumscore_qclosest_to_cortGW_pregMeanDeviat",
"GWdiff_cort_qclosest_to_cortGW"
)]),
copy=TRUE,
by=c("participantID", "pregstage"))
##factoring of predictors
final_long_cort$pregstage <- factor(final_long_cort$pregstage)
final_long_cort$participantID <- factor(final_long_cort$participantID)
final_long_cort$ELISA_analysis_plate <- factor(final_long_cort$ELISA_analysis_plate)
#Gestational week centered at mean GW at first visit
final_long_cort$gestage_weeks_cent <-
final_long_cort$gestage_weeks - mean(final_long_cort$gestage_weeks[final_long_cort$pregstage == "I"], na.rm=T)
# ##Questionnaires centered at T1 scores
# final_long_cort$Cesd_T1 <- NA
# final_long_cort$PSQI_T1 <- NA
# final_long_cort$BAI_T1 <- NA
#
#
# for(i in 1:length(final_long_cort$participantID)){ #for each participant ID
# ID <- final_long_cort$participantID[[i]]
#
# cesd <- unique(final_long_cort$Cesd_qclosest_to_cortGW[final_long_cort$pregstage == "I" &
# final_long_cort$participantID == unique(ID)])
# psqi <- unique(final_long_cort$PSQI_qclosest_to_cortGW[final_long_cort$pregstage == "I" &
# final_long_cort$participantID == unique(ID)])
# bai <- unique(final_long_cort$BAI_qclosest_to_cortGW[final_long_cort$pregstage == "I" &
# final_long_cort$participantID == unique(ID)])
#
# if(length(cesd) > 0){
# final_long_cort$Cesd_T1[final_long_cort$participantID == ID] <- cesd
# }
# if(length(psqi) > 0){
# final_long_cort$PSQI_T1[final_long_cort$participantID == ID] <- psqi
# }
# if(length(bai) > 0){
# final_long_cort$BAI_T1[final_long_cort$participantID == ID] <- bai
# }
# }
# #view(final_long_cort[,c("participantID", "Cesd_qclosest_to_cortGW","Cesd_T1")])
#
# ## Change in psych symptoms from T1
# final_long_cort$Cesd_T1.WS <- final_long_cort$Cesd_T1 - final_long_cort$Cesd_qclosest_to_cortGW
# final_long_cort$PSQI_T1.WS <- final_long_cort$PSQI_T1 - final_long_cort$PSQI_qclosest_to_cortGW
# final_long_cort$BAI_T1.WS <- final_long_cort$BAI_T1 - final_long_cort$BAI_qclosest_to_cortGW
final_long_cort$Maternal_Diabetes_Disorders_anyVSnone <- factor(final_long_cort$Maternal_Diabetes_Disorders_anyVSnone,
levels = c(-999,0,1),
labels = c("none","none", "yes"))
final_long_cort$Maternal_Hypertensive_Disorders_anyVSnone <- factor(final_long_cort$Maternal_Hypertensive_Disorders_anyVSnone,
levels = c(-999,0,1),
labels = c("none","none", "yes"))
final_long_cort$season <- factor(final_long_cort$season)
## Add Maternal Education ####
maternal_edu <- read.delim("Rdata/ITU maternal education.dat")
names(maternal_edu)[1] <- "participantID"
names(maternal_edu)[3] <- "Maternal_Education"
maternal_edu <- maternal_edu[,c("participantID",
"Maternal_Education")]
library(naniar)
maternal_edu <- maternal_edu %>% replace_with_na(replace = list(Maternal_Education = -9))
maternal_edu$Maternal_Education <- factor(maternal_edu$Maternal_Education,
levels = c(1,2,3),
labels = c("primary", "applied university", "university"))
final_long_cort <- left_join(final_long_cort,
maternal_edu)
### add medication data ####
medication <- read.delim("Rdata/ITU_psychotrophicmedication05July21_Maternal_CurrentPregnancy.dat")
names(medication)[1] <- "participantID"
final_long_cort <- left_join(final_long_cort,
medication[,c("participantID",
"ITUbroadpsychiatricmedication_18_KELA",
"antidepressants_18_KELA")],
copy=TRUE)
final_long_cort$ITUbroadpsychiatricmedication_18_KELA <- factor(final_long_cort$ITUbroadpsychiatricmedication_18_KELA,
levels = c(0,1),
labels = c("no", "yes"))
#tidy up
rm(list= ls()[!(ls() %in% c("final_long_cort", "at_least_two_assessments"))])
## Exclusion Criteria based on cortisol data and protocol violations ####
### exclude observations CAR protocol violation (i.e., stayed in bed
#at S2 and S3, or took sample 1 hour after leaving the bed)
#mark the observations
final_long_cort$CAR_exclude <- NA
for(i in 1:nrow(final_long_cort)){
tp <- final_long_cort$timeslot[[i]]
CAR_time <- final_long_cort$hours_since_waking[[i]]
note <- final_long_cort$notes[[i]]
if(!is.na(tp) & !is.na(note)){
if((tp == "S2" | tp == "S3") & note == 2){
final_long_cort$CAR_exclude[[i]] <- "exc"
}
}
if(!is.na(tp) & !is.na(CAR_time)){
if((tp == "S2" | tp == "S3") & (CAR_time > 0.75)){
final_long_cort$CAR_exclude[[i]] <- "exc"
}
}
}
# only include Q-data within 2 week radius of cortisol assessment
final_long_cort <- subset(final_long_cort, is.na(CAR_exclude))
#length(unique(final_long_cort$participantID[!is.na(final_long_cort$Cesd_qclosest_to_cortGW_pregMean)]))
#length(unique(final_long_cort$participantID[final_long_cort$GWdiff_cort_qclosest_to_cortGW <= 2]))
#length(unique(final_long_cort$participantID[final_long_cort$GWdiff_cort_qclosest_to_cortGW <= 1]))
#apply 2 week interval for Q and cortisol data assessment
final_long_cort <- subset(final_long_cort, abs(GWdiff_cort_qclosest_to_cortGW) < 2)
#summary(final_long_cort$GWdiff_cort_qclosest_to_cortGW)
### Centering ####
final_long_cort$Gestational_Age_Weeks_cent <- c(scale(final_long_cort$Gestational_Age_Weeks, scale = F))
final_long_cort$waking_time_cent <- c(scale(final_long_cort$waking_time, scale = F))
final_long_cort$Maternal_Age_Years_cent <- c(scale(final_long_cort$Maternal_Age_Years, scale = F))
final_long_cort$Maternal_Body_Mass_Index_in_Early_Pregnancy_cent <- c(scale(final_long_cort$Maternal_Body_Mass_Index_in_Early_Pregnancy, scale = F))
final_long_cort$Weight_Gain_cent <- c(scale(final_long_cort$Weight_Gain, scale = F))
### Depressive Symptom Severity ####
final_long_cort$Depressive_Symptom_Severity <- NA
for(i in 1:nrow(final_long_cort)){
m <- final_long_cort$Cesd_qclosest_to_cortGW_pregMean[[i]]
if(!is.na(m)){
if(m<16){
final_long_cort$Depressive_Symptom_Severity[[i]] <- "Below_Clinical (CES-D < 16)"
}
if(m>=16){
final_long_cort$Depressive_Symptom_Severity[[i]] <- "Clinical (CES-D >= 16)"
}
}
}
final_long_cort$Depressive_Symptom_Severity <- factor(final_long_cort$Depressive_Symptom_Severity)
## Functions to save results ####
round_df <- function(x, cols1, digits1, cols2, digits2){
x <- as.data.frame(x)
# round all variables
# x: data frame
# cols: select which columns to round
# digits: number of digits to round corresponding to cols
for(i in 1:ncol(x[,c(cols1)])){
colname <- names(x[,c(cols1)])[[i]]
col <- x[,c(colname)]
for(j in 1:length(col)){
value <- as.numeric(col[[j]])
if(!is.na(value)){
# print(value)
if(abs(value) > 0.005){
x[,c(cols1)][[j,i]] <- format(round(value, digits1))
}
}
}
}
x[,c(cols2)] <- round(x[,c(cols2)], digits2)
return(x)
}
#calculate percent changes
res_Bchange <- function(res_df){ ##tTable of a summary model object as dataframe
res_df[["pchange"]] <- NA
for(i in 1:nrow(res_df)){
p <- as.numeric(res_df[["p-value"]][[i]])
val <- res_df[["Value"]][[i]]
if(p <= 0.05){
res_df[["pchange"]][[i]] <- ((exp(val))-1)*100
}
}
df <- res_df[,-c(3)]
df[1,5] <- NA
names(df) <- c("Coefficient", "SE", "t-statistic", "p", "Interpretation")
df <- round_df(df, c(1:3,5), 2, 4,3)
#to follow APA style, delete leading zero
for(j in 1:nrow(df)){
P <- df[[j, "p"]]
if(P < 1 & P > 0){
P <- snip(P, lead = 1)
df[[j, "p"]] <- snip(P, lead = 1)
}
}
return(df)
}
#extract the random part
res_random <- function(model_summary){ #model summary object
random <- VarCorr(model_summary)[(c(2:3,5:6)), c(1,3)]
random <- as.data.frame(random)
names(random) <- c("Variance_Component", "Covariance")
random$Variance_Component <- as.numeric(random$Variance_Component)
random$Covariance <- as.numeric(random$Covariance)
#random <- round_df(random, 1:2,2, 1:2,2)
n <- nobs(model_summary)
random <- rbind(random, c(n, NA))
varests <- as.numeric(VarCorr(model_summary)[(c(2:3,5:6)), c(1)])
total_R_explained <- format(round(sum(varests[1:3])/sum(varests)*100,1))
random <- rbind(random, c(total_R_explained, NA))
row.names(random) <- c("Intercept (person-level)",
"Time",
"Intercept (pregstage-level)",
"Residual",
"Number of Observations",
"Total R explained")
return(random)
}
model_res <- function(model_summary){
tTable <- res_Bchange(as.data.frame(model_summary[["tTable"]]))
#tTable <- round_df(tTable,c(2:4,6),2,5,3)
random_part <- res_random(model_summary)
random_part$empty1 <- NA
random_part$empty2 <- NA
random_part$empty3 <- NA
tTable <- rbind(tTable,c("Variance Component", "Covariance", rep(NA,3)))
names(random_part) <- names(tTable)
Res <- rbind(tTable, random_part)
Res <- setDT(Res, keep.rownames = "predictor")
return(Res)
}
#############################################################################
####### CAR Model ####
CAR_times <- c("S1", "S2", "S3")
CAR_df <- subset(final_long_cort, timeslot %in% CAR_times)
### Baseline Model: Random effects and variance-covariance structure ####
#Including diurnal characteristics
CAR_Form <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent
## Random Intercept only model
M.CAR.RI <- lme(CAR_Form,
random = list(~ 1|participantID,
~ 1|pregstage),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
# plot(M.CAR.RI)
# qqnorm(M.CAR.RI, abline = c(0,1))
## Does adding ELISA improve model fit?
M.CAR.RI_wELISA <- update(M.CAR.RI, random = list(~1|ELISA_analysis_plate,
~1|participantID,
~1|pregstage))
tab1 <- anova(M.CAR.RI,M.CAR.RI_wELISA) #no improvement, in fact non-sig less model fit
## Does adding a random slope for CAR improve model fit?
#i.e., allowing CAR to vary across participants
M.CAR.RS <- update(M.CAR.RI, random = list(~hours_since_waking|participantID,
~1|pregstage))
res.RS <- anova(M.CAR.RI, M.CAR.RS) #Yes, it does improve fit
tab2 <- rbind.data.frame(tab1, res.RS)
#Does adding heterogenous WS variance for the effect of time improve fit?
M.CAR.hetero <- lme(CAR_Form,
random = list(~hours_since_waking|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
res.hetero <- anova(M.CAR.RS, M.CAR.hetero) #Does not improve fit!
tab3 <- rbind.data.frame(tab2, res.hetero)
#plot(M.CAR.hetero) #no fit
#autocorrelation
#Does adding auto-correlation improve fit?
M.CAR.auto <- lme(CAR_Form,
random = list(~hours_since_waking|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
res.auto <- anova(M.CAR.RS, M.CAR.auto) #Does improve fit!
RES_CAR_Mselect <- rbind.data.frame(tab3, res.auto)
#plot(M.CAR.auto)
#qqnorm(M.CAR.auto, abline = c(0,1))
### Baseline Model: Fixed Component ####
M.CAR_ML1 <- lme(CAR_Form,
random = list(~hours_since_waking|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "ML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
## check whether quadratic term of time since waking indeed improves model fit
M.CAR_ML2 <- update(M.CAR_ML1, .~. -I(hours_since_waking^2))
anova(M.CAR_ML1, M.CAR_ML2) #sig worse fit
## adding a quadratic term for GW
M.CAR_ML3 <- update(M.CAR_ML1, .~. +I(gestage_weeks_cent^2))
anova(M.CAR_ML1, M.CAR_ML3) #sig better fit
summary(M.CAR_ML3)
## adding a waking time and season
M.CAR_ML4 <- update(M.CAR_ML3, .~. +
waking_time_cent +
waking_time_cent:hours_since_waking +
season +
season:hours_since_waking)
baseline_CARres <- car::Anova(M.CAR_ML4)
summary(M.CAR_ML3) # 4361.47
summary(M.CAR_ML4) #4341.392
#document waking time findings
RES_CAR_B.ns_waking_main <- list(format(round(baseline_CARres$Chisq[5],2)), baseline_CARres$Df[5], format(round(baseline_CARres$`Pr(>Chisq)`[5],2)))
names(RES_CAR_B.ns_waking_main) <- c("chi", "df", "p")
RES_CAR_B.ns_waking_slp <- list(format(round(baseline_CARres$Chisq[8],2)), baseline_CARres$Df[8], format(round(baseline_CARres$`Pr(>Chisq)`[8],2)))
names(RES_CAR_B.ns_waking_slp) <- c("chi", "df", "p")
#season
RES_CAR_B.ns_season_slp <- list(format(round(baseline_CARres$Chisq[9],2)), baseline_CARres$Df[9], format(round(baseline_CARres$`Pr(>Chisq)`[9],2)))
names(RES_CAR_B.ns_season_slp) <- c("chi", "df", "p")
## re-evaluate when only including p<0.1
M.CAR_ML5 <- update(M.CAR_ML3, .~. +
season)
##### Baseline Model: Re-evaluate random effects structure
### Final Baseline Model: Model Validation ####
Morning_Cort_Form <-
lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
I(gestage_weeks_cent^2) +
hours_since_waking:gestage_weeks_cent +
season
M.Baseline_Morning_cort <- lme(Morning_Cort_Form,
random = list(~hours_since_waking|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
#plot(M.Baseline_Morning_cort)
#qqnorm(M.Baseline_Morning_cort, abline = c(0,1)) #overall normal distirbution of residuals can be assumed!
#qqnorm(M.Baseline_Morning_cort, ~ranef(., level=1), abline=c(0,1)) #random effects not normal!
#qqnorm(M.Baseline_Morning_cort, ~ranef(., level=2), abline=c(0,1)) #random effects not normal!
### (1) Baseline Model: Effects of Gestation ####
car::Anova(M.Baseline_Morning_cort)
#tab_model(M.Baseline_Morning_cort, show.r2 = TRUE, show.intercept = TRUE)
RES_CAR_Baseline <- model_res(summary(M.Baseline_Morning_cort))
RES_CAR_Baseline <- mutate_all(RES_CAR_Baseline,funs(replace(., is.na(.), "")))
## Total Variance explained
varests <- as.numeric(VarCorr(M.Baseline_Morning_cort)[(c(2:3,5:6)), c(1)])
RES_CAR_total_R_explained <- format(round(sum(varests[1:3])/sum(varests)*100,1)) #R^2=54%
CAR_residual <- sum(varests[4])/sum(varests) #45.6%
#CAR_GW_variance <- varests[2]/sum(varests)*100 #0.0099%
# ## vaiance explained in Null-Model
# CAR_Null <- lg_cort_concentration_ug_l ~ 1
#
# M.Baseline_Morning_cort <- lme(CAR_Null,
# random = list(~1|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# varests <- as.numeric(VarCorr(M.Baseline_Morning_cort)[(c(2,4:5)), 1])
# RES_CAR_subject_R_explained <- format(round(sum(varests[1])/sum(varests)*100,2)) #R^2=26%
# RES_CAR_pregstage_R_explained <- format(round(sum(varests[2])/sum(varests)*100,5)) #R^2=26%
#plot_model(M.Baseline_Morning_cort, type = "re", level = 1)
##Extract Parameters for associations with child outcome
CAR_parameters <- as.data.frame(coef(M.Baseline_Morning_cort))
save(CAR_parameters, file = "Rdata/CAR_parameters.Rdata")
# RI of given participant indicates the difference of individual cortisol concentration
# to overall sample mean concentration across pregnancy, and RS the individual differences
# in CAR across prengnancy
#head(ranef(M.Baseline_Morning_cort, level = 1))
#random effect of pregnancy stage, indicates the difference in cortisol concentration
#within individuals from one measurement day to another
#head(ranef(M.Baseline_Morning_cort, level = 2))
#head(coef(M.Baseline_Morning_cort))
#Intercept = cortisol concentration at awakening, at on average first GW of cortisol assessment period
#CAR = linear CAR slope
#CAR^2 = degree of curvilinearity
#gestage_weeks_cent = change of average cortisol concentration from baseline
#gestage_weeks_cent^2 = degree of curvilinearity
#CAR:gestage_weeks_cent = effect of pregressing gestation on the diurnal slope
# mean_II <- mean(final_long_cort$gestage_weeks_cent[final_long_cort$pregstage == "II"], na.rm=T)
# mean_III <- mean(final_long_cort$gestage_weeks_cent[final_long_cort$pregstage == "III"], na.rm=T)
# GW_values <- c(0,mean_II, mean_III)
# CAR_across_preg <- ggpredict(M.Baseline_Morning_cort, terms = c("hours_since_waking", "gestage_weeks_cent[GW_values]"))
# plot(CAR_across_preg)
# Average_cort_across_preg <- ggpredict(M.Baseline_Morning_cort, terms = c("gestage_weeks_cent[GW_values]"))
# #plot(Average_cort_across_preg)
# season_across_preg <- ggpredict(M.Baseline_Morning_cort, terms = c("season"))
# plot(season_across_preg)
# Average_cort_across_preg <- ggpredict(M.Baseline_Morning_cort, terms = c("pregstage"))
# plot(Average_cort_across_preg)
# Average_cort_across_preg <- ggpredict(M.Baseline_Morning_cort, terms = c("CAR", "pregstage"))
# plot(Average_cort_across_preg)
### (2) Covariates: Effects of maternal characteristics ####
Baseline_CAR_Form.COV <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
I(gestage_weeks_cent^2) +
hours_since_waking:gestage_weeks_cent +
season +
caseVScontrol +
Maternal_Age_Years_cent +
Maternal_Education +
Parity +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
Weight_Gain_cent +
Maternal_Hypertensive_Disorders_anyVSnone +
Maternal_Diabetes_Disorders_anyVSnone +
Maternal_Smoking_During_Pregnancy +
Gestational_Age_Weeks_cent +
Mother_Cohabiting +
#interaction with time slope
caseVScontrol:hours_since_waking +
Maternal_Age_Years_cent:hours_since_waking +
Maternal_Education:hours_since_waking +
Parity:hours_since_waking +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
Weight_Gain_cent:hours_since_waking +
Maternal_Hypertensive_Disorders_anyVSnone:hours_since_waking +
Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
Maternal_Smoking_During_Pregnancy:hours_since_waking +
Gestational_Age_Weeks_cent:hours_since_waking +
Mother_Cohabiting:hours_since_waking +
#interaction with GW slope
caseVScontrol:gestage_weeks_cent +
Maternal_Age_Years_cent:gestage_weeks_cent +
Maternal_Education:gestage_weeks_cent +
Parity:gestage_weeks_cent +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:gestage_weeks_cent +
Weight_Gain_cent:gestage_weeks_cent +
Maternal_Hypertensive_Disorders_anyVSnone:gestage_weeks_cent +
Maternal_Diabetes_Disorders_anyVSnone:gestage_weeks_cent +
Maternal_Smoking_During_Pregnancy:gestage_weeks_cent +
Gestational_Age_Weeks_cent:gestage_weeks_cent +
Mother_Cohabiting:gestage_weeks_cent
M.Baseline_CAR_cort.COV <- lme(Baseline_CAR_Form.COV,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M.Baseline_CAR_cort.COV)
# ### instead investigating each covariates seperately ####
# ## Case VS Control ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# caseVScontrol +
# caseVScontrol:hours_since_waking +
# caseVScontrol:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.CoCa <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.CoCa)
#
# # Repeat in subsample ####
# M.Baseline_CAR_cort.COV.CoCa <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.CoCa)
#
#
# ## Maternal Age ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Maternal_Age_Years_cent +
# Maternal_Age_Years_cent:hours_since_waking +
# Maternal_Age_Years_cent:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.age <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.age)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.age <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.age)
#
#
# ## maternal education ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Maternal_Education +
# Maternal_Education:hours_since_waking +
# Maternal_Education:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.edu <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.edu)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.edu <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.edu)
#
# ## Parity ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Parity +
# Parity:hours_since_waking +
# Parity:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.par <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.par)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.par <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.par)
#
# ## BMI ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.bmi <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.bmi)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.bmi <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.bmi)
#
# ## Weight Gain ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Weight_Gain_cent +
# Weight_Gain_cent:hours_since_waking +
# Weight_Gain_cent:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.wg <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.wg)
#
# # repeat in sub ####
# M.Baseline_CAR_cort.COV.wg <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.wg)
#
# ## Hypertensive disorders ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Maternal_Hypertensive_Disorders_anyVSnone +
# Maternal_Hypertensive_Disorders_anyVSnone:hours_since_waking +
# Maternal_Hypertensive_Disorders_anyVSnone:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.hyp <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.hyp)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.hyp <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.hyp)
#
# ## Diabetes Disorders ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Maternal_Diabetes_Disorders_anyVSnone +
# Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
# Maternal_Diabetes_Disorders_anyVSnone:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.diab <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.diab)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.diab <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.diab)
#
# ## Cohabitation ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Mother_Cohabiting +
# Mother_Cohabiting:hours_since_waking +
# Mother_Cohabiting:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.Co <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.Co)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.Co <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.Co)
#
# ## Smoking ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Maternal_Smoking_During_Pregnancy +
# Maternal_Smoking_During_Pregnancy:hours_since_waking +
# Maternal_Smoking_During_Pregnancy:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.Smoke <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.Smoke)
#
# # repeat in sub ####
# M.Baseline_CAR_cort.COV.Smoke <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.Smoke)
#
# ## Gestational Length ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Gestational_Age_Weeks_cent +
# Gestational_Age_Weeks_cent:hours_since_waking +
# Gestational_Age_Weeks_cent:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.gl)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.gl)
#
#
# ## Child Sex ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Child_Sex +
# Child_Sex:hours_since_waking +
# Child_Sex:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.gl)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.gl)
#
# ## PSQI ####
Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
I(gestage_weeks_cent^2) +
hours_since_waking:gestage_weeks_cent +
season +
PSQI_qclosest_to_cortGW_pregMeanDeviat +
PSQI_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
PSQI_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent +
PSQI_qclosest_to_cortGW_pregMean +
PSQI_qclosest_to_cortGW_pregMean:hours_since_waking +
PSQI_qclosest_to_cortGW_pregMean:gestage_weeks_cent
M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M.Baseline_CAR_cort.COV.gl)
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.gl)
#
# ## BAI ####
# Baseline_CAR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# BAI_qclosest_to_cortGW_pregMeanDeviat +
# BAI_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# BAI_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent +
# BAI_qclosest_to_cortGW_pregMean +
# BAI_qclosest_to_cortGW_pregMean:hours_since_waking +
# BAI_qclosest_to_cortGW_pregMean:gestage_weeks_cent
#
# M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.gl)
#
# #repeat in sub ####
# M.Baseline_CAR_cort.COV.gl <- lme(Baseline_CAR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_CAR_cort.COV.gl)
### (3) Covariate Selection Result ####
Baseline_CAR_Form.COV <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
I(gestage_weeks_cent^2) +
hours_since_waking:gestage_weeks_cent +
season +
caseVScontrol +
Maternal_Age_Years_cent +
Maternal_Education +
Parity +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
Weight_Gain_cent +
#Maternal_Hypertensive_Disorders_anyVSnone +
Maternal_Diabetes_Disorders_anyVSnone +
#Maternal_Smoking_During_Pregnancy +
#Gestational_Age_Weeks_cent +
Mother_Cohabiting +
PSQI_qclosest_to_cortGW_pregMean +
#BAI_qclosest_to_cortGW_pregMean +
PSQI_qclosest_to_cortGW_pregMeanDeviat +
#BAI_qclosest_to_cortGW_pregMeanDeviat +
##interaction with time slope
#caseVScontrol:hours_since_waking +
#Maternal_Age_Years_cent:hours_since_waking +
Maternal_Education:hours_since_waking +
#Parity:hours_since_waking +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
#Weight_Gain_cent:hours_since_waking +
#Maternal_Hypertensive_Disorders_anyVSnone:hours_since_waking +
Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
#Maternal_Smoking_During_Pregnancy:hours_since_waking +
#Gestational_Age_Weeks_cent:hours_since_waking +
#Mother_Cohabiting:hours_since_waking +
PSQI_qclosest_to_cortGW_pregMean:hours_since_waking +
#BAI_qclosest_to_cortGW_pregMean:hours_since_waking +
##interaction with GW slope
caseVScontrol:gestage_weeks_cent +
#Maternal_Age_Years_cent:gestage_weeks_cent +
#Maternal_Education:gestage_weeks_cent +
Parity:gestage_weeks_cent +
#Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:gestage_weeks_cent +
#Weight_Gain_cent:gestage_weeks_cent +
#Maternal_Hypertensive_Disorders_anyVSnone:gestage_weeks_cent +
#Maternal_Diabetes_Disorders_anyVSnone:gestage_weeks_cent +
#Maternal_Smoking_During_Pregnancy:gestage_weeks_cent +
#Gestational_Age_Weeks_cent:gestage_weeks_cent +
Mother_Cohabiting:gestage_weeks_cent
M.Baseline_CAR_cort.COV_wPSQI <- lme(Baseline_CAR_Form.COV,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M.Baseline_CAR_cort.COV_wPSQI)
RES_CAR_cov.select.PSQI <- model_res(summary(M.Baseline_CAR_cort.COV_wPSQI))
##BAI
Baseline_CAR_Form.COV <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
I(gestage_weeks_cent^2) +
hours_since_waking:gestage_weeks_cent +
season +
caseVScontrol +
Maternal_Age_Years_cent +
Maternal_Education +
Parity +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
Weight_Gain_cent +
#Maternal_Hypertensive_Disorders_anyVSnone +
Maternal_Diabetes_Disorders_anyVSnone +
#Maternal_Smoking_During_Pregnancy +
#Gestational_Age_Weeks_cent +
Mother_Cohabiting +
#PSQI_qclosest_to_cortGW_pregMean +
BAI_qclosest_to_cortGW_pregMean +
#PSQI_qclosest_to_cortGW_pregMeanDeviat +
BAI_qclosest_to_cortGW_pregMeanDeviat +
##interaction with time slope
#caseVScontrol:hours_since_waking +
#Maternal_Age_Years_cent:hours_since_waking +
Maternal_Education:hours_since_waking +
#Parity:hours_since_waking +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
#Weight_Gain_cent:hours_since_waking +
#Maternal_Hypertensive_Disorders_anyVSnone:hours_since_waking +
Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
#Maternal_Smoking_During_Pregnancy:hours_since_waking +
#Gestational_Age_Weeks_cent:hours_since_waking +
#Mother_Cohabiting:hours_since_waking +
#PSQI_qclosest_to_cortGW_pregMean:hours_since_waking +
BAI_qclosest_to_cortGW_pregMean:hours_since_waking +
##interaction with GW slope
caseVScontrol:gestage_weeks_cent +
#Maternal_Age_Years_cent:gestage_weeks_cent +
#Maternal_Education:gestage_weeks_cent +
Parity:gestage_weeks_cent +
#Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:gestage_weeks_cent +
#Weight_Gain_cent:gestage_weeks_cent +
#Maternal_Hypertensive_Disorders_anyVSnone:gestage_weeks_cent +
#Maternal_Diabetes_Disorders_anyVSnone:gestage_weeks_cent +
#Maternal_Smoking_During_Pregnancy:gestage_weeks_cent +
#Gestational_Age_Weeks_cent:gestage_weeks_cent +
Mother_Cohabiting:gestage_weeks_cent
M.Baseline_CAR_cort.COV_wBAI <- lme(Baseline_CAR_Form.COV,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M.Baseline_CAR_cort.COV_wBAI)
RES_CAR_cov.select.BAI <- model_res(summary(M.Baseline_CAR_cort.COV_wBAI))
### (4.1) Hypothesis Testing: BS and WS effects ####
CAR_CES_D <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
I(gestage_weeks_cent^2) +
hours_since_waking:gestage_weeks_cent +
season +
Cesd_qclosest_to_cortGW_pregMean +
Cesd_qclosest_to_cortGW_pregMean:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
Cesd_qclosest_to_cortGW_pregMeanDeviat +
Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
M1_CAR_CES_D <- lme(CAR_CES_D,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M1_CAR_CES_D)
RES_CAR_CESD_M1 <- model_res(summary(M1_CAR_CES_D))
RES_CAR_CESD_M1 <- mutate_all(RES_CAR_CESD_M1,funs(replace(., is.na(.), "")))
#explained BS variance by depressive symptoms
summary(M1_CAR_CES_D) #N=512, obs = 2812 --> 5.49 obs per participant on average
summary(M.Baseline_Morning_cort) #N=514, obs = 2860 --> 5.56 obs per participant on average
BS1 <- as.numeric(VarCorr(M1_CAR_CES_D)[2,1]) #with CES-D
resid1 <- as.numeric(VarCorr(M1_CAR_CES_D)[6,1])
BS2 <- as.numeric(VarCorr(M.Baseline_Morning_cort)[2,1]) #without CES-D
resid2 <- as.numeric(VarCorr(M.Baseline_Morning_cort)[6,1])
CAR_added_BS_var <- format(round(1 - ((BS1^2 + (resid1^2/5.49))/(BS2^2 + resid2^2/5.56)),2))
## Model 2: including maternal characteristics as covariates ####
CAR_CES_D2 <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
I(gestage_weeks_cent^2) +
hours_since_waking:gestage_weeks_cent +
season +
caseVScontrol +
Maternal_Education +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
Weight_Gain_cent +
#Maternal_Diabetes_Disorders_anyVSnone +
Mother_Cohabiting +
##interaction with time slope
Maternal_Education:hours_since_waking +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
#Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
##interaction with GW slope
Mother_Cohabiting:gestage_weeks_cent +
#caseVScontrol:gestage_weeks_cent +
Cesd_qclosest_to_cortGW_pregMean +
Cesd_qclosest_to_cortGW_pregMean:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
Cesd_qclosest_to_cortGW_pregMeanDeviat +
Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
M2_CAR_CES_D <- lme(CAR_CES_D2,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M2_CAR_CES_D)
RES_CAR_CESD_M2 <- model_res(summary(M2_CAR_CES_D))
RES_CAR_CESD_M2 <- mutate_all(RES_CAR_CESD_M2,funs(replace(., is.na(.), "")))
# ## Model 3: including sleep and anxiety as coviates #### not included as
# neither BAI nor PSQI showed significant effect on cortisol concentrations
# CAR_CES_D3 <- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# caseVScontrol +
# Maternal_Education +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
# Weight_Gain_cent +
# Maternal_Diabetes_Disorders_anyVSnone +
# Mother_Cohabiting +
# ##interaction with time slope
# Maternal_Education:hours_since_waking +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
# Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
# ##interaction with GW slope
# Mother_Cohabiting:gestage_weeks_cent +
# Cesd_qclosest_to_cortGW_pregMean +
# Cesd_qclosest_to_cortGW_pregMean:hours_since_waking +
# Cesd_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
# Cesd_qclosest_to_cortGW_pregMeanDeviat +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent +
# PSQI_qclosest_to_cortGW_pregMean +
# PSQI_qclosest_to_cortGW_pregMeanDeviat +
# BAI_qclosest_to_cortGW_pregMean +
# BAI_qclosest_to_cortGW_pregMeanDeviat
# M3_CAR_CES_D <- lme(CAR_CES_D3,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M3_CAR_CES_D)
# RES_CAR_CESD_M3 <- model_res(summary(M3_CAR_CES_D))
# RES_CAR_CESD_M3 <- mutate_all(RES_CAR_CESD_M3,funs(replace(., is.na(.), "")))
RES_CAR_CESD <- rbindlist(list(RES_CAR_CESD_M1,RES_CAR_CESD_M2))
#RES_CAR_CESD[[c(14), "predictor"]] <- "Random Effects"
#RES_CAR_CESD[[c(47), "predictor"]] <- "Random Effects"
#RES_CAR_CESD[[c(83), "predictor"]] <- "Random Effects"
RES_CAR_CESD$p <- as.numeric(RES_CAR_CESD$p)
#to display in main part of thesis
Cesd_rows <- c(as.character(grep("Cesd_", c(as.character(RES_CAR_CESD$predictor)))))
random_part_rows <- c(rownames(RES_CAR_CESD)[c(14:20,47:53)]) #,83:89
RES_CAR_CESD_sub <- subset(RES_CAR_CESD, rownames(RES_CAR_CESD) %in% Cesd_rows | rownames(RES_CAR_CESD) %in% random_part_rows | p <= 0.05)
RES_CAR_CESD_sub <- mutate_all(RES_CAR_CESD_sub,funs(replace(., is.na(.), "")))
diurnal_factors <- c(rownames(RES_CAR_CESD_sub)[c(1:5,8,18:23,30)]) #46:50
RES_CAR_CESD_sub <- subset(RES_CAR_CESD_sub, !(rownames(RES_CAR_CESD_sub) %in% diurnal_factors))
## explained BS variance by adding CES-D, and when adding all covariates
# model fit comparison with and without depressive symptoms
# CAR_CES_D <- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season +
# Cesd_qclosest_to_cortGW_pregMean +
# Cesd_qclosest_to_cortGW_pregMean:hours_since_waking +
# Cesd_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
# Cesd_qclosest_to_cortGW_pregMeanDeviat +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
#
# M1_CAR_CES_D <- lme(CAR_CES_D,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "ML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# CAR_M1 <- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# I(gestage_weeks_cent^2) +
# hours_since_waking:gestage_weeks_cent +
# season
#
# M1_CAR <- lme(CAR_M1,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "ML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# anova(M1_CAR, M1_CAR_CES_D)
# summary(M1_CAR) #3120.991
# summary(M1_CAR_CES_D) #3074.746s
### Sensitivity Analysis: Part I ####
##M1
M1_CAR_CES_D_sub1 <- lme(CAR_CES_D,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M1_CAR_CES_D_sub1)
AppenB1_RES_CAR_CESD_M1 <- model_res(summary(M1_CAR_CES_D_sub1))
AppenB1_RES_CAR_CESD_M1 <- mutate_all(AppenB1_RES_CAR_CESD_M1,funs(replace(., is.na(.), "")))
##M2
M2_CAR_CES_D_sub1 <- lme(CAR_CES_D2,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M2_CAR_CES_D_sub1)
AppenB1_RES_CAR_CESD_M2 <- model_res(summary(M2_CAR_CES_D_sub1))
AppenB1_RES_CAR_CESD_M2 <- mutate_all(AppenB1_RES_CAR_CESD_M2,funs(replace(., is.na(.), "")))
# ##M3
# M3_CAR_CES_D_sub1 <- lme(CAR_CES_D3,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M3_CAR_CES_D_sub1)
# AppenB1_RES_CAR_CESD_M3 <- model_res(summary(M3_CAR_CES_D_sub1))
# AppenB1_RES_CAR_CESD_M3 <- mutate_all(AppenB1_RES_CAR_CESD_M3,funs(replace(., is.na(.), "")))
#save all in one df
AppenB1_RES_CAR <- rbindlist(list(AppenB1_RES_CAR_CESD_M1,
AppenB1_RES_CAR_CESD_M2))
## Sensitivity Analysis: Part II ####
CAR_df_no_Meads <- subset(CAR_df, ITUbroadpsychiatricmedication_18_KELA == "no")
##M1
M1_CAR_CES_D_sub2 <- lme(CAR_CES_D,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df_no_Meads,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M1_CAR_CES_D_sub2)
AppenB2_RES_CAR_CESD_M1 <- model_res(summary(M1_CAR_CES_D_sub2))
AppenB2_RES_CAR_CESD_M1 <- mutate_all(AppenB2_RES_CAR_CESD_M1,funs(replace(., is.na(.), "")))
##M2
M2_CAR_CES_D_sub2 <- lme(CAR_CES_D2,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = CAR_df_no_Meads,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M2_CAR_CES_D_sub2)
AppenB2_RES_CAR_CESD_M2 <- model_res(summary(M2_CAR_CES_D_sub2))
AppenB2_RES_CAR_CESD_M2 <- mutate_all(AppenB2_RES_CAR_CESD_M2,funs(replace(., is.na(.), "")))
##M3
# M3_CAR_CES_D_sub2 <- lme(CAR_CES_D3,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df_no_Meads,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M3_CAR_CES_D_sub2)
# AppenB2_RES_CAR_CESD_M3 <- model_res(summary(M3_CAR_CES_D_sub2))
#AppenB2_RES_CAR_CESD_M3 <- mutate_all(AppenB2_RES_CAR_CESD_M3,funs(replace(., is.na(.), "")))
#save all in one df
AppenB2_RES_CAR <- rbindlist(list(AppenB2_RES_CAR_CESD_M1,
AppenB2_RES_CAR_CESD_M2))
### (4.2) Hypothesis Testing: Clinically relevant symptoms ####
# CAR_CES_D <- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# season +
# Depressive_Symptom_Severity +
# Depressive_Symptom_Severity:hours_since_waking +
# Depressive_Symptom_Severity:gestage_weeks_cent +
# Cesd_qclosest_to_cortGW_pregMeanDeviat +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
#
# M1_CAR_CES_D_cat <- lme(CAR_CES_D,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M1_CAR_CES_D_cat)
# RES_CAR_CESD_M1_cat <- summary(M1_CAR_CES_D)
# RES_CAR_CESD_M1_cat <- RES_CAR_CESD_M1$tTable
#
# ## repeat in subscample ####
# M1_CAR_CES_D_sub1_cat <- lme(CAR_CES_D,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M1_CAR_CES_D_sub1_cat)
# # RES_CAR_CESD_M1 <- summary(M1_CAR_CES_D_sub1)
# # RES_CAR_CESD_M1 <- M1_CAR_CES_D_sub1$tTable
#
# ##including maternal characteristics as covariates
# CAR_CES_D2 <- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# season +
# caseVScontrol +
# Maternal_Education +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
# Weight_Gain_cent +
# Maternal_Diabetes_Disorders_anyVSnone +
# Mother_Cohabiting +
# ##interaction with time slope
# Maternal_Education:hours_since_waking +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
# Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
# ##interaction with GW slope
# Mother_Cohabiting:gestage_weeks_cent +
# Depressive_Symptom_Severity +
# Depressive_Symptom_Severity:hours_since_waking +
# Depressive_Symptom_Severity:gestage_weeks_cent +
# Cesd_qclosest_to_cortGW_pregMeanDeviat +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
#
# M2_CAR_CES_D_cat <- lme(CAR_CES_D2,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M2_CAR_CES_D_cat)
# # RES_CAR_CESD_M2 <- summary(M2_CAR_CES_D_cat)
# # RES_CAR_CESD_M2 <- RES_CAR_CESD_M1$tTable
#
# ## repeat in subsample 1 ####
# M2_CAR_CES_D_sub1 <- lme(CAR_CES_D2,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M2_CAR_CES_D_sub1)
#
# ## including sleep and anxiety as coviates
# ##including maternal characteristics as covariates
# CAR_CES_D3 <- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# season +
# caseVScontrol +
# Maternal_Education +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
# Weight_Gain_cent +
# Maternal_Diabetes_Disorders_anyVSnone +
# Mother_Cohabiting +
# ##interaction with time slope
# Maternal_Education:hours_since_waking +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
# Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
# ##interaction with GW slope
# Mother_Cohabiting:gestage_weeks_cent +
# Depressive_Symptom_Severity +
# Depressive_Symptom_Severity:hours_since_waking +
# Depressive_Symptom_Severity:gestage_weeks_cent +
# Cesd_qclosest_to_cortGW_pregMeanDeviat +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent +
# PSQI_qclosest_to_cortGW_pregMean +
# PSQI_qclosest_to_cortGW_pregMeanDeviat +
# BAI_qclosest_to_cortGW_pregMean +
# BAI_qclosest_to_cortGW_pregMeanDeviat
#
# M3_CAR_CES_D_cat <- lme(CAR_CES_D3,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M3_CAR_CES_D_cat)
# # RES_CAR_CESD_M3 <- summary(M3_CAR_CES_D)
# # RES_CAR_CESD_M3 <- RES_CAR_CESD_M3$tTable
#
# ## repeat in subscample
# M3_CAR_CES_D_cat <- lme(CAR_CES_D3,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = CAR_df[CAR_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M3_CAR_CES_D_cat)
#################################################################################
####### Diurnal Model ####
DIURNAL_times <- c("S1", "S4", "S5", "S6", "S7")
DIURNAL_df <- subset(final_long_cort, timeslot %in% DIURNAL_times)
### Baseline Model: Random effects and variance-covariance structure ####
#Including diurnal characteristics
DIURNAL_Form <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent
DIURNAL_Null <- lg_cort_concentration_ug_l ~ 1
## Random Intercept only model
M.DIUR.RI <- lme(DIURNAL_Form,
random = list(~ 1|participantID,
~ 1|pregstage),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
#plot(M.DIUR.RI)
#qqnorm(M.DIUR.RI, abline = c(0,1))
## Does adding ELISA improve model fit?
M.DIUR.RI_wELISA <- update(M.DIUR.RI, random = list(~1|ELISA_analysis_plate,
~1|participantID,
~1|pregstage))
tab1 <- anova(M.DIUR.RI,M.DIUR.RI_wELISA) #no improvement, in fact non-sig less model fit
## Does adding a random slope for time since waking improve model fit?
#i.e., allowing the diurnal decline to vary across participants
# M.DIUR.RS1 <- update(M.DIUR.RI, random = list(~hours_since_waking|participantID,
# ~1|pregstage)) #singular convergence
#Does adding heterogenous WS variance for the effect of time improve fit?
M.DIUR.hetero <- lme(DIURNAL_Form,
random = list(~1|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
anova(M.DIUR.RI, M.DIUR.hetero) #Yes, it does improve fit!
#plot(M.DIUR.hetero)
### Can the slope for cortisol decline now be added without convergence issues
#Does adding heterogenous WS variance for the effect of time improve fit?
M.DIUR.hetero2 <- lme(DIURNAL_Form,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
anova(M.DIUR.RI, M.DIUR.hetero, M.DIUR.hetero2) #Yes, it does improve fit!
#plot(M.DIUR.hetero)
#Does adding autocorrelation for WS variance for the effect of time improve fit?
M.DIUR.hetero_auto <- lme(DIURNAL_Form,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
tab2 <- anova(M.DIUR.RI, M.DIUR.hetero, M.DIUR.hetero2,M.DIUR.hetero_auto) #Yes, it does improve fit!
RES_DIUR_Mselect <- rbind.data.frame(tab1, tab2)
# plot(M.DIUR.hetero)
# qqnorm(M.DIUR.hetero, abline = c(0,1))
### Baseline Model: Fixed Component ####
M.DIUR_ML1 <- lme(DIURNAL_Form,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "ML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
## check whether quadratic term of time since waking indeed improves model fit
# M.DIUR_ML2 <- update(M.DIUR_ML1, .~. -I(hours_since_waking^2)) #leads to singular convergence
# anova(M.DIUR_ML1, M.DIUR_ML2) #worse fit to exclude quadratic term
# ## adding a quadratic term for GW
# M.DIUR_ML3 <- update(M.DIUR_ML1, .~. +I(gestage_weeks_cent^2))
# anova(M.DIUR_ML1, M.DIUR_ML3) #no sig. improvement
## adding a waking time
M.DIUR_ML4 <- update(M.DIUR_ML1, .~. +
waking_time +
waking_time:hours_since_waking +
season +
season:hours_since_waking)
car::Anova(M.DIUR_ML4)
### Baseline Model: Model Validation ####
Baseline_DIUR_Form <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent +
waking_time +
waking_time:hours_since_waking +
season +
season:hours_since_waking
M.Baseline_DIUR_cort <- lme(Baseline_DIUR_Form,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
# plot(M.Baseline_DIUR_cort)
# qqnorm(M.Baseline_DIUR_cort, abline = c(0,1)) #overall normal distirbution of residuals can be assumed!
# qqnorm(M.Baseline_DIUR_cort, ~ranef(., level=1), abline=c(0,1)) #random effects not normal!
# qqnorm(M.Baseline_DIUR_cort, ~ranef(., level=2), abline=c(0,1)) #random effects not normal!
DIUR_parameters <- as.data.frame(coef(M.Baseline_DIUR_cort))
save(DIUR_parameters, file = "Rdata/Diurnal_Parameters.Rdata")
### (1) Cortisol Across Gestation ####
car::Anova(M.Baseline_DIUR_cort)
RES_DIUR_Baseline <- model_res(summary(M.Baseline_DIUR_cort))
RES_DIUR_Baseline <- mutate_all(RES_DIUR_Baseline,funs(replace(., is.na(.), "")))
## Total Variance explained
varests <- as.numeric(VarCorr(M.Baseline_DIUR_cort)[(c(2:3,5:6)), 1])
RES_DIUR_total_R_explained <- format(round(sum(varests[1:3])/sum(varests)*100,1)) #R^2=23.9%
DIUR_residual <- sum(varests[4])/sum(varests)
### (2) Covariates: Effects of maternal characteristics ####
Baseline_DIUR_Form.COV <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent +
waking_time +
waking_time:hours_since_waking +
season +
season:hours_since_waking +
caseVScontrol +
Maternal_Age_Years_cent +
Maternal_Education +
Parity +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
Weight_Gain_cent +
Maternal_Hypertensive_Disorders_anyVSnone +
Maternal_Diabetes_Disorders_anyVSnone +
Maternal_Smoking_During_Pregnancy +
Gestational_Age_Weeks_cent +
Mother_Cohabiting +
#interaction with time slope
caseVScontrol:hours_since_waking +
Maternal_Age_Years_cent:hours_since_waking +
Maternal_Education:hours_since_waking +
Parity:hours_since_waking +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
Weight_Gain_cent:hours_since_waking +
Maternal_Hypertensive_Disorders_anyVSnone:hours_since_waking +
Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
Maternal_Smoking_During_Pregnancy:hours_since_waking +
Gestational_Age_Weeks_cent:hours_since_waking +
Mother_Cohabiting:hours_since_waking +
#interaction with GW slope
caseVScontrol:gestage_weeks_cent +
Maternal_Age_Years_cent:gestage_weeks_cent +
Maternal_Education:gestage_weeks_cent +
Parity:gestage_weeks_cent +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:gestage_weeks_cent +
Weight_Gain_cent:gestage_weeks_cent +
Maternal_Hypertensive_Disorders_anyVSnone:gestage_weeks_cent +
Maternal_Diabetes_Disorders_anyVSnone:gestage_weeks_cent +
Maternal_Smoking_During_Pregnancy:gestage_weeks_cent +
Gestational_Age_Weeks_cent:gestage_weeks_cent +
Mother_Cohabiting:gestage_weeks_cent
M.Baseline_DIUR_cort.COV <- lme(Baseline_DIUR_Form.COV,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M.Baseline_DIUR_cort.COV)
# ### instead investigating each covariates seperately ####
# ## Case VS Control ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# caseVScontrol +
# caseVScontrol:hours_since_waking +
# caseVScontrol:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.CoCa <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.CoCa)
#
# # Repeat in subsample ####
# M.Baseline_DIUR_cort.COV.CoCa <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.CoCa)
#
#
# ## Maternal Age ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Maternal_Age_Years_cent +
# Maternal_Age_Years_cent:hours_since_waking +
# Maternal_Age_Years_cent:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.age <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.age)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.age <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.age)
#
# ## maternal education ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Maternal_Education +
# Maternal_Education:hours_since_waking +
# Maternal_Education:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.edu <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.edu)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.edu <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.edu)
#
# ## Parity ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Parity +
# Parity:hours_since_waking +
# Parity:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.par <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.par)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.par <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.par)
#
# ## BMI ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.bmi <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.bmi)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.bmi <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.bmi)
#
# ## Weight Gain ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Weight_Gain_cent +
# Weight_Gain_cent:hours_since_waking +
# Weight_Gain_cent:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.wg <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.wg)
#
# # repeat in sub ####
# M.Baseline_DIUR_cort.COV.wg <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.wg)
# ## Hypertensive disorders ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Maternal_Hypertensive_Disorders_anyVSnone +
# Maternal_Hypertensive_Disorders_anyVSnone:hours_since_waking +
# Maternal_Hypertensive_Disorders_anyVSnone:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.hyp <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.hyp)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.hyp <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.hyp)
#
# ## Diabetes Disorders ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Maternal_Diabetes_Disorders_anyVSnone +
# Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
# Maternal_Diabetes_Disorders_anyVSnone:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.diab <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.diab)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.diab <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.diab)
#
# ## Cohabitation ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Mother_Cohabiting +
# Mother_Cohabiting:hours_since_waking +
# Mother_Cohabiting:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.Co <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.Co)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.Co <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.Co)
#
# ## Smoking ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Maternal_Smoking_During_Pregnancy +
# Maternal_Smoking_During_Pregnancy:hours_since_waking +
# Maternal_Smoking_During_Pregnancy:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.Smoke <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.Smoke)
#
# # repeat in sub ####
# M.Baseline_DIUR_cort.COV.Smoke <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.Smoke)
# ## Gestational Length ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Gestational_Age_Weeks_cent +
# Gestational_Age_Weeks_cent:hours_since_waking +
# Gestational_Age_Weeks_cent:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
#
# ## Child Sex ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# Child_Sex +
# Child_Sex:hours_since_waking +
# Child_Sex:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
#
# ## BAI ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# BAI_qclosest_to_cortGW_pregMean +
# BAI_qclosest_to_cortGW_pregMean:hours_since_waking +
# BAI_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
# BAI_qclosest_to_cortGW_pregMeanDeviat +
# BAI_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# BAI_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
#
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
#
# ## PSQI ####
# Baseline_DIUR_Form.COV<- lg_cort_concentration_ug_l ~
# hours_since_waking +
# I(hours_since_waking^2) +
# gestage_weeks_cent +
# hours_since_waking:gestage_weeks_cent +
# waking_time +
# waking_time:hours_since_waking +
# season +
# season:hours_since_waking +
# PSQI_qclosest_to_cortGW_pregMean +
# PSQI_qclosest_to_cortGW_pregMean:hours_since_waking +
# PSQI_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
# PSQI_qclosest_to_cortGW_pregMeanDeviat +
# PSQI_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
# PSQI_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
#
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df,
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
# #repeat in sub ####
# M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
# random = list(~(hours_since_waking)|participantID,
# ~1|pregstage),
# weights = varExp(form = ~hours_since_waking|pregstage),
# correlation = corCAR1(form = ~ (hours_since_waking)),
# method = "REML",
# data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
# na.action = "na.omit",
# control= lmeControl(msMaxIter = 200))
# car::Anova(M.Baseline_DIUR_cort.COV.gl)
### (3) Final Covariate Selection ####
Baseline_DIUR_Form.COV <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent +
waking_time +
waking_time:hours_since_waking +
season +
season:hours_since_waking +
caseVScontrol +
Maternal_Age_Years_cent +
Maternal_Education +
Parity +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent +
Child_Sex +
#Weight_Gain_cent +
#Maternal_Hypertensive_Disorders_anyVSnone +
Maternal_Diabetes_Disorders_anyVSnone +
#Maternal_Smoking_During_Pregnancy +
Gestational_Age_Weeks_cent +
#Mother_Cohabiting +
PSQI_qclosest_to_cortGW_pregMean +
PSQI_qclosest_to_cortGW_pregMeanDeviat +
##interaction with time slope
PSQI_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
caseVScontrol:hours_since_waking +
#Maternal_Age_Years_cent:hours_since_waking +
Maternal_Education:hours_since_waking +
Parity:hours_since_waking +
Child_Sex:hours_since_waking +
# Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:hours_since_waking +
# Weight_Gain_cent:hours_since_waking +
# Maternal_Hypertensive_Disorders_anyVSnone:hours_since_waking +
# Maternal_Diabetes_Disorders_anyVSnone:hours_since_waking +
# Maternal_Smoking_During_Pregnancy:hours_since_waking +
# Gestational_Age_Weeks_cent:hours_since_waking +
# Mother_Cohabiting:hours_since_waking +
##interaction with GW slope
# caseVScontrol:gestage_weeks_cent +
# Maternal_Age_Years_cent:gestage_weeks_cent +
# Maternal_Education:gestage_weeks_cent +
# Parity:gestage_weeks_cent +
Maternal_Body_Mass_Index_in_Early_Pregnancy_cent:gestage_weeks_cent +
# Weight_Gain_cent:gestage_weeks_cent +
# Maternal_Hypertensive_Disorders_anyVSnone:gestage_weeks_cent +
Maternal_Diabetes_Disorders_anyVSnone:gestage_weeks_cent
# Maternal_Smoking_During_Pregnancy:gestage_weeks_cent +
# Gestational_Age_Weeks_cent:gestage_weeks_cent +
# Mother_Cohabiting:gestage_weeks_cent
M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M.Baseline_DIUR_cort.COV.gl)
RES_DIUR_cov.select <- model_res(summary(M.Baseline_DIUR_cort.COV.gl))
RES_DIUR_cov.select <- mutate_all(RES_DIUR_cov.select,funs(replace(., is.na(.), "")))
#repeat in sub ####
M.Baseline_DIUR_cort.COV.gl <- lme(Baseline_DIUR_Form.COV,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M.Baseline_DIUR_cort.COV.gl)
### (4) Hypothesis Testing ####
DIUR_CES_D <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent +
waking_time +
waking_time:hours_since_waking +
season +
season:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean +
Cesd_qclosest_to_cortGW_pregMean:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
Cesd_qclosest_to_cortGW_pregMeanDeviat +
Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
M1_DIUR_CES_D <- lme(DIUR_CES_D,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M1_DIUR_CES_D)
RES_DIUR_CESD_M1 <- model_res(summary(M1_DIUR_CES_D))
RES_DIUR_CESD_M1 <- mutate_all(RES_DIUR_CESD_M1,funs(replace(., is.na(.), "")))
#explained BS variance by depressive symptoms
summary(M1_DIUR_CES_D) #N=512, obs = 4574 --> 8.93 obs per participant on average
summary(M.Baseline_DIUR_cort) #N=514, obs = 4656 --> 9.06 obs per participant on average
BS1 <- as.numeric(VarCorr(M1_DIUR_CES_D)[2,1]) #with CES-D
resid1 <- as.numeric(VarCorr(M1_DIUR_CES_D)[6,1])
BS2 <- as.numeric(VarCorr(M.Baseline_DIUR_cort)[2,1]) #without CES-D
resid2 <- as.numeric(VarCorr(M.Baseline_DIUR_cort)[6,1])
DIUR_added_BS_var <- format(round(1 - ((BS1^2 + (resid1^2/8.93))/(BS2^2 + resid2^2/9.06)),3))
## M2 adding Covariates
DIUR_CES_D2 <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent +
waking_time +
season +
season:hours_since_waking +
caseVScontrol +
Maternal_Age_Years_cent +
Parity +
Gestational_Age_Weeks_cent +
Child_Sex +
##interaction with time slope
caseVScontrol:hours_since_waking +
Parity:hours_since_waking +
Child_Sex:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean +
Cesd_qclosest_to_cortGW_pregMean:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
Cesd_qclosest_to_cortGW_pregMeanDeviat +
Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
M2_DIUR_CES_D <- lme(DIUR_CES_D2,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M2_DIUR_CES_D)
RES_DIUR_CESD_M2 <- model_res(summary(M2_DIUR_CES_D))
RES_DIUR_CESD_M2 <- mutate_all(RES_DIUR_CESD_M2,funs(replace(., is.na(.), "")))
## M3 Adding other questionnaires
DIUR_CES_D3 <- lg_cort_concentration_ug_l ~
hours_since_waking +
I(hours_since_waking^2) +
gestage_weeks_cent +
hours_since_waking:gestage_weeks_cent +
waking_time +
season +
season:hours_since_waking +
caseVScontrol +
Maternal_Age_Years_cent +
Parity +
Gestational_Age_Weeks_cent +
Child_Sex +
PSQI_qclosest_to_cortGW_pregMean +
PSQI_qclosest_to_cortGW_pregMeanDeviat +
##interaction with time slope
PSQI_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
caseVScontrol:hours_since_waking +
Parity:hours_since_waking +
Child_Sex:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean +
Cesd_qclosest_to_cortGW_pregMean:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMean:gestage_weeks_cent +
Cesd_qclosest_to_cortGW_pregMeanDeviat +
Cesd_qclosest_to_cortGW_pregMeanDeviat:hours_since_waking +
Cesd_qclosest_to_cortGW_pregMeanDeviat:gestage_weeks_cent
M3_DIUR_CES_D <- lme(DIUR_CES_D3,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
car::Anova(M3_DIUR_CES_D)
RES_DIUR_CESD_M3 <- model_res(summary(M3_DIUR_CES_D))
RES_DIUR_CESD_M3 <- mutate_all(RES_DIUR_CESD_M3,funs(replace(., is.na(.), "")))
RES_DIUR_CESD <- rbindlist(list(RES_DIUR_CESD_M1,RES_DIUR_CESD_M2,RES_DIUR_CESD_M3))
RES_DIUR_CESD[[c(16), "predictor"]] <- "Random Effects"
RES_DIUR_CESD[[c(45), "predictor"]] <- "Random Effects"
RES_DIUR_CESD[[c(77), "predictor"]] <- "Random Effects"
RES_DIUR_CESD$p <- as.numeric(RES_DIUR_CESD$p)
#to display in main part of thesis
Cesd_rows <- c(as.character(grep("Cesd_", c(as.character(RES_DIUR_CESD$predictor)))))
random_part_rows <- c(rownames(RES_DIUR_CESD)[c(16:22, 45:51, 77:83)])
RES_DIUR_CESD_sub <- subset(RES_DIUR_CESD, rownames(RES_DIUR_CESD) %in% Cesd_rows | rownames(RES_DIUR_CESD) %in% random_part_rows | p <= 0.05)
RES_DIUR_CESD_sub <- mutate_all(RES_DIUR_CESD_sub,funs(replace(., is.na(.), "")))
diurnal_factors <- c(rownames(RES_DIUR_CESD_sub)[c(1:6, 9:10, 22:27, 33:34, 47:52, 58:59)])
RES_DIUR_CESD_sub <- subset(RES_DIUR_CESD_sub, !(rownames(RES_DIUR_CESD_sub) %in% diurnal_factors))
### Sensitivity analysis part I ####
#M1
M1_DIUR_CES_D_sub1 <- lme(DIUR_CES_D,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
AppenB1_RES_DIUR_CESD_M1 <- model_res(summary(M1_DIUR_CES_D_sub1))
AppenB1_RES_DIUR_CESD_M1 <- mutate_all(AppenB1_RES_DIUR_CESD_M1,funs(replace(., is.na(.), "")))
#M2
M2_DIUR_CES_D_sub1 <- lme(DIUR_CES_D2,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
AppenB1_RES_DIUR_CESD_M2 <- model_res(summary(M2_DIUR_CES_D_sub1))
AppenB1_RES_DIUR_CESD_M2 <- mutate_all(AppenB1_RES_DIUR_CESD_M2,funs(replace(., is.na(.), "")))
#M3
M3_DIUR_CES_D_sub1 <- lme(DIUR_CES_D3,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIURNAL_df[DIURNAL_df$participantID %in% at_least_two_assessments,],
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
AppenB1_RES_DIUR_CESD_M3 <- model_res(summary(M3_DIUR_CES_D_sub1))
AppenB1_RES_DIUR_CESD_M3 <- mutate_all(AppenB1_RES_DIUR_CESD_M3,funs(replace(., is.na(.), "")))
AppenB1_RES_DIUR_CESD <- rbindlist(list(AppenB1_RES_DIUR_CESD_M1,
AppenB1_RES_DIUR_CESD_M2,
AppenB1_RES_DIUR_CESD_M3))
### Sensitivity analysis part II ####
DIUR_no_meds <- subset(DIURNAL_df, !(ITUbroadpsychiatricmedication_18_KELA == "yes"))
#M1
M1_DIUR_CES_D_sub2 <- lme(DIUR_CES_D,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIUR_no_meds,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
AppenB2_RES_DIUR_CESD_M1 <- model_res(summary(M1_DIUR_CES_D_sub2))
AppenB2_RES_DIUR_CESD_M1 <- mutate_all(AppenB2_RES_DIUR_CESD_M1,funs(replace(., is.na(.), "")))
#M2
M2_DIUR_CES_D_sub2 <- lme(DIUR_CES_D2,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIUR_no_meds,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
AppenB2_RES_DIUR_CESD_M2 <- model_res(summary(M2_DIUR_CES_D_sub2))
AppenB2_RES_DIUR_CESD_M2 <- mutate_all(AppenB2_RES_DIUR_CESD_M2,funs(replace(., is.na(.), "")))
#M3
M3_DIUR_CES_D_sub2 <- lme(DIUR_CES_D3,
random = list(~(hours_since_waking)|participantID,
~1|pregstage),
weights = varExp(form = ~hours_since_waking|pregstage),
correlation = corCAR1(form = ~ (hours_since_waking)),
method = "REML",
data = DIUR_no_meds,
na.action = "na.omit",
control= lmeControl(msMaxIter = 200))
AppenB2_RES_DIUR_CESD_M3 <- model_res(summary(M3_DIUR_CES_D_sub2))
AppenB2_RES_DIUR_CESD_M3 <- mutate_all(AppenB2_RES_DIUR_CESD_M3,funs(replace(., is.na(.), "")))
#save results all in one df
AppenB2_RES_DIUR_CESD <- rbindlist(list(AppenB2_RES_DIUR_CESD_M1,
AppenB2_RES_DIUR_CESD_M2,
AppenB2_RES_DIUR_CESD_M3))
### Figures ####
## Plot diurnal cortisol curve ####
final_long_cort$pregstage <- factor(final_long_cort$pregstage,
levels = c("I", "II", "III"),
labels = c("T1", "T2", "T3"))
final_long_cort$Antenatal_Care <- factor(final_long_cort$caseVScontrol,
levels = c("case", "control"),
labels = c("Referral", "Routine"))
v <- final_long_cort %>%
group_by(pregstage, timeslot, Antenatal_Care) %>%
summarise(
n = n(),
c = mean(cort_concentration_ug_l, na.rm = T),
SE = sd(cort_concentration_ug_l, na.rm = T)/sqrt(n)) #,
#t = mean(as.numeric(time_of_day_in_hours_since_midnight), na.rm = T))
library(jtools) #APA theme for ggplot
#plot raw data per pregstage
cortisol_by_pregstage <- ggplot(na.omit(v),
aes(x = timeslot,
y = c,
color = Antenatal_Care)) +
geom_line(aes(group = Antenatal_Care)) +
geom_line(data = na.omit(v)) +
geom_point() +
facet_grid(. ~ pregstage) +
geom_errorbar(aes(ymin=c-SE, ymax=c+SE), width=.1) +
#jtools::theme_apa() +
#theme_classic() +
theme_bw() +
theme(axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
#panel.border = element_blank(),
panel.background = element_blank()) +
xlab("\n Time of Sampling") +
ylab("Cortisol Concentration (ug/l)\n") +
theme(legend.position = "none") +
scale_x_discrete(labels = c("7:15",
"+15",
"+30",
"10:30",
"12:00",
"17:00",
"23:05"))
#mean time at awakening
mean(final_long_cort$time_of_day_in_hours_since_midnight[final_long_cort$timeslot == "S1"], na.rm=T)
mean(final_long_cort$time_of_day_in_hours_since_midnight[final_long_cort$timeslot == "S7"], na.rm=T)
# library(export)
# graph2ppt (cortisol_by_pregstage, file = "myGraph.pptx")
#
# # Create a new powerpoint document
# xl <- read_xlsx()
# xl <- add_sheet(xl,label = "LAB")
# doc = addPlot( doc = doc , fun = print, x = cortisol_by_pregstage)
# ## Plot morning concentrations by CES-D ####
# CAR_df <- CAR_df%>%
# group_by(participantID) %>%
# mutate(mean_cort = mean(lg_cort_concentration_ug_l, na.rm=T))
# CAR_plot <- CAR_df[,c("participantID", "mean_cort","Depressive_Symptom_Severity")]
# CAR_plot <- subset(CAR_plot, !duplicated(CAR_plot))
#
# p <- ggplot(na.omit(CAR_plot), aes(x=Depressive_Symptom_Severity, y=mean_cort)) +
# geom_boxplot() +
# #facet_grid(.~pregstage) +
# jtools::theme_apa() +
# # theme_bw() +
# # theme(axis.line = element_line(colour = "black"),
# # panel.grid.major = element_blank(),
# # panel.grid.minor = element_blank(),
# # #panel.border = element_blank(),
# # panel.background = element_blank()) +
# ylab("Mean Morgning Cortisol Concentration [ln(ug/l)]")
# p
# ## depression severity by SD
# CAR_df$CESD_Severity <- NA
# SD <- sd(CAR_df$Cesd_qclosest_to_cortGW_pregMean, na.rm = T)
# m <- mean(CAR_df$Cesd_qclosest_to_cortGW_pregMean, na.rm = T)
# low_SD <- m-SD
# high_SD <- m+SD
#
# for(i in 1:nrow(CAR_df)){
# cesd <- CAR_df$Cesd_qclosest_to_cortGW_pregMean[[i]]
# if(!is.na(cesd)){
# if(cesd <= low_SD){
# CAR_df$CESD_Severity[[i]] <- -1
# }
# if(cesd >= high_SD){
# CAR_df$CESD_Severity[[i]] <- 1
# }
# }
# }
#
# CAR_df$CESD_Severity <- factor(CAR_df$CESD_Severity)
#
# ##plot
# CAR_df <- CAR_df%>%
# group_by(participantID) %>%
# mutate(mean_cort = mean(lg_cort_concentration_ug_l, na.rm=T))
# CAR_plot <- CAR_df[,c("participantID", "mean_cort","CESD_Severity")]
# CAR_plot <- subset(CAR_plot, !duplicated(CAR_plot))
#
# p <- ggplot(na.omit(CAR_plot), aes(x=CESD_Severity, y=mean_cort)) +
# geom_boxplot() +
# #facet_grid(.~pregstage) +
# jtools::theme_apa() +
# # theme_bw() +
# # theme(axis.line = element_line(colour = "black"),
# # panel.grid.major = element_blank(),
# # panel.grid.minor = element_blank(),
# # #panel.border = element_blank(),
# # panel.background = element_blank()) +
# ylab("Mean Morgning Cortisol Concentration [ln(ug/l)]")
#
# ### by pregstage values ####
# CAR_df <- CAR_df%>%
# group_by(participantID, pregstage) %>%
# mutate(mean_cort = mean(lg_cort_concentration_ug_l, na.rm=T))
# CAR_plot <- CAR_df[,c("participantID", "pregstage","mean_cort","qclosest_based_clin_Cesd")]
# CAR_plot$qclosest_based_clin_Cesd <- factor(CAR_plot$qclosest_based_clin_Cesd,
# levels = c("non_clinical", "clinical"),
# labels = c("below_clinical", "clinical"))
# p <- ggplot(na.omit(CAR_plot), aes(x=qclosest_based_clin_Cesd, y=mean_cort)) +
# geom_boxplot() +
# facet_grid(.~pregstage) +
# #jtools::theme_apa() +
# theme_bw() +
# theme(axis.line = element_line(colour = "black"),
# panel.grid.major = element_blank(),
# panel.grid.minor = element_blank(),
# #panel.border = element_blank(),
# panel.background = element_blank()) +
# ylab("Mean Morgning Cortisol Concentration [ln(ug/l)]\n") +
# xlab("\nCES-D score below versus above clinical cut-off")
# p