#R Skript : Multilevel Analysis for the interaction of Vigor, mindfulness and task performance rm(list=ls(all=TRUE)) library(multilevel) library(nlme) library(foreign) library(Hmisc) ############## loading the data setwd("C:\\Users\\") data <-read.spss("DATA_Yogi or fireball.sav",to.data.frame=T,use.value.labels=F) nrow(data) ################################################ # set no compliance days (wrong measurement time) to missing is.na(data$JP) = data$ZP3_Diff>1 is.na(data$engage) = data$ZP3_Diff>1 is.na(data$mind_orig) = data$ZP3_Diff>1 ###### Centering #Grand Mean centering: level 2 #PE02.gmc<-scale(data$PE02, scale=F) #age #C101.gmc<-scale(data$C101, scale=F) #Anzahl der Kinder #WE01.gmc<-scale(data$WE01, scale=F) #Arbeitsstunden pro Woche #neuro.gmc<-scale(data$neuro, scale=F) # Neurotizismus #WE02.gmc<-scale(data$WE02, scale=F) #Dauer Arbeitsweg #mindtrait.gmc<-scale(data$mind_trait, scale=F) #Mindfulness #Zentrierung um inhaltliche Mitte #data$PE01.gmc<-data$PE01-1 ###0=männlich #data$WP01_01.gmc<-data$WP01_01-1 ###Lage der Arbeitszeiten selbst bestimmbar: Skala 1 (nie) bis (5 (immer)feste Anfangszeiten # 1= Gleitzeit mit Kern # 2= freie Arbeitseinteilung -> Working time organization #data$WP01_04.gmc<-data$WP01_04-1 ### Mgl. zu Homeoffice: Skala 1 (nie) bis 5 (immer) #data$RS01.gmc<-data$RS01-1 ###0=mit Partner zusammenlebend (Partnerschaftsstatus) #person mean centering:level 1 #vigor at work #dem temporären Datensatz TEMP wird eine Spalte des Gruppenmittelwerts zugewiesen TEMP<-aggregate(data$engage,list(data$SERIAL),mean, na.rm=T) #Die Spalte wird "engage.grm" benannt names(TEMP)<-c("SERIAL","engage.grm") #mit dem Orig.Datensatz zusammenführen data<-merge(data,TEMP,by="SERIAL") #den Rohwert vom Mittelwert abziehen data$engage.gmc<-data$engage-data$engage.grm TEMP<-NULL #daily task performance #dem temporären Datensatz TEMP wird eine Spalte des Gruppenmittelwerts zugewiesen TEMP<-aggregate(data$JP,list(data$SERIAL),mean, na.rm=T) #Die Spalte wird "JP.grm" benannt names(TEMP)<-c("SERIAL","JP.grm") #mit dem Orig.Datensatz zusammenführen data<-merge(data,TEMP,by="SERIAL") #den Rohwert vom Mittelwert abziehen data$JP.gmc<-data$JP-data$JP.grm TEMP<-NULL # Mindfulness at work #dem temporären Datensatz TEMP wird eine Spalte des Gruppenmittelwerts zugewiesen TEMP<-aggregate(data$DailyMindfulness_gepolt,list(data$SERIAL),mean, na.rm=T) #Die Spalte wird "mind_orig.grm" benannt names(TEMP)<-c("SERIAL","mind_orig.grm") #mit dem Orig.Datensatz zusammenführen data<-merge(data,TEMP,by="SERIAL") #den Rohwert vom Mittelwert abziehen data$mind_orig.gmc<-data$DailyMindfulness_gepolt-data$mind_orig.grm TEMP<-NULL # Daily work hours #dem temporären Datensatz TEMP wird eine Spalte des Gruppenmittelwerts zugewiesen TEMP<-aggregate(data$workho,list(data$SERIAL),mean, na.rm=T) #Die Spalte wird "workho.grm" benannt names(TEMP)<-c("SERIAL","workho.grm") #mit dem Orig.Datensatz zusammenführen data<-merge(data,TEMP,by="SERIAL") #den Rohwert vom Mittelwert abziehen data$workho.gmc<-data$workho-data$workho.grm TEMP<-NULL ###################### DESCRIPTIVES #correlation among study variables #TAG_OFF = measurement day (1-5) studyVariablesWITHIN <- subset(data, select=c("TAG_OFF", "workho.gmc", "JP.gmc", "engage.gmc", "mind_orig.gmc")) studyVariablesBetween <- subset(data, select=c("workho.grm", "JP.grm", "engage.grm", "mind_orig.grm")) round(cor(studyVariablesWITHIN, use="pairwise.complete.obs", method="pearson"), digits=2) #significance test list1<-studyVariablesWITHIN$workho.gmc list2<-studyVariablesWITHIN$JP.gmc cor.test(list1,list2) list1<-studyVariablesWITHIN$workho.gmc list2<-studyVariablesWITHIN$engage.gmc cor.test(list1,list2) list1<-studyVariablesWITHIN$workho.gmc list2<-studyVariablesWITHIN$mind_orig.gmc cor.test(list1,list2) list1<-studyVariablesWITHIN$JP.gmc list2<-studyVariablesWITHIN$engage.gmc cor.test(list1,list2) list1<-studyVariablesWITHIN$JP.gmc list2<-studyVariablesWITHIN$mind_orig.gmc cor.test(list1,list2) list1<-studyVariablesWITHIN$engage.gmc list2<-studyVariablesWITHIN$mind_orig.gmc cor.test(list1,list2) round(cor(studyVariablesBetween, use="pairwise.complete.obs", method="pearson"), digits=2) #significance test list1<-studyVariablesBetween$workho.grm list2<-studyVariablesBetween$JP.grm cor.test(list1,list2) list1<-studyVariablesBetween$workho.grm list2<-studyVariablesBetween$engage.grm cor.test(list1,list2) list1<-studyVariablesBetween$workho.grm list2<-studyVariablesBetween$mind_orig.grm cor.test(list1,list2) list1<-studyVariablesBetween$JP.grm list2<-studyVariablesBetween$engage.grm cor.test(list1,list2) list1<-studyVariablesBetween$JP.grm list2<-studyVariablesBetween$mind_orig.grm cor.test(list1,list2) list1<-studyVariablesBetween$engage.grm list2<-studyVariablesBetween$mind_orig.grm cor.test(list1,list2) ## Means and Standard Deviations round(sapply(studyVariablesWITHIN, mean, na.rm=TRUE), digits=2) round(sapply(studyVariablesWITHIN, sd, na.rm=TRUE), digits=2) round(sapply(studyVariablesBetween, mean, na.rm=TRUE), digits=2) round(sapply(studyVariablesBetween, sd, na.rm=TRUE), digits=2) ##### ICCs and variance components #Daily vigor data$AV<-data$engage AV.nullmodel<-lme(AV~1,random=~1|SERIAL,data=data, na.action=na.omit) #Varianzkomponenten bestimmen VarCorr(AV.nullmodel) ##Daily mindfulness data$AV<-data$DailyMindfulness_gepolt AV.nullmodel<-lme(AV~1,random=~1|SERIAL,data=data, na.action=na.omit) #Varianzkomponenten bestimmen VarCorr(AV.nullmodel) ### Daily Tak performance data$AV<-data$JP AV.nullmodel<-lme(AV~1,random=~1|SERIAL,data=data, na.action=na.omit) #Varianzkomponenten bestimmen VarCorr(AV.nullmodel) ################# Model testing ############################# ################# DVs = Task prformance ################# UVs: mindfulness state, vigor at work, Interaktion vigor*mindfulness ############################# ################# control: work hours############################# ########################################## #Dependednt variable = Task performance data$AV<-data$JP # Nullmodel AV.nullmodel<-lme(AV~1,random=~1|SERIAL,data=data, na.action=na.omit) #Varianzkomponenten bestimmen VarCorr(AV.nullmodel) -2*logLik(AV.nullmodel) round(summary(AV.nullmodel)$tTable,digits=2) #testing for autocorrelation AV.nullmodel.1<-update(AV.nullmodel,correlation=corAR1()) #Modellvergleich anova(AV.nullmodel,AV.nullmodel.1) #tesing for heteroskedasticity AV.nullmodel.2<-update(AV.nullmodel.1,weights=varExp(form=~TAG_OFF)) #Modellvergleich anova(AV.nullmodel,AV.nullmodel.2) ==> best fit VarCorr(AV.nullmodel.2) -2*logLik(AV.nullmodel.2) round(summary(AV.nullmodel.2)$tTable,digits=2) ## entering control variable workhours AV.model2<-update(AV.nullmodel.2, fixed=~.+ workho.gmc,random=~1|SERIAL,control=list(opt="optim"), na.action=na.omit) VarCorr(AV.model2) -2*logLik(AV.model2) round(summary(AV.model2)$tTable,digits=2) anova(AV.model2,AV.nullmodel.2) ## vigor AV.model3<-update(AV.model2, fixed=~.+engage.gmc,random=~1|SERIAL,control=list(opt="optim"), na.action=na.omit) VarCorr(AV.model3) -2*logLik(AV.model3) round(summary(AV.model3)$tTable,digits=2) anova(AV.model3,AV.model2) ## mindfulness state AV.model4<-update(AV.model3, fixed=~.+mind_orig.gmc,random=~1|SERIAL,control=list(opt="optim"), na.action=na.omit) VarCorr(AV.model4) -2*logLik(AV.model4) round(summary(AV.model4)$tTable,digits=2) anova(AV.model4,AV.model3) ## mindfulness state * vigor AV.model5<-update(AV.model4, fixed=~.+mind_orig.gmc:engage.gmc,random=~1|SERIAL,control=list(opt="optim"), na.action=na.omit) VarCorr(AV.model5) -2*logLik(AV.model5) round(summary(AV.model5)$tTable,digits=2) anova(AV.model5,AV.model4)