Dit document bevat bijkomende uitleg over de analyses die we runnen voor de masterproef en de interpretatie ervan.
Stap 1-3 zijn steeds verplicht uit te voeren om een correcte analyse te garanderen.
De rest van de stappen kan je meestal uitvoeren naar wens, maar chronologische volgorde is aangeraden om errors te vermijden. (Bijv. om te vermijden dat je verwijst naar een object dat werd aangemaakt bij een stap die je niet hebt uitgevoerd)
Hiermee open je de packages die nodig zijn doorheen de data-analyse.
Indien het niet mogelijk is om deze te laden, moet je eerst de functie install.packages(“NAAM”) gebruiken.
library(qualtRics)
library(lavaan)
library(lme4)
library(pwr)
library(plyr)
library(ggplot2)
library(colorspace)
library(reshape2)
library(psych)
library(apaTables)
library(car)
library(semPlot)
library(MVN)
library(pastecs)
Eerst kies je de folder waarin je dataset zich bevindt.
##Bestandmap kiezen
setwd("~/School 2021-2022/Masterproef II/Re-integratie na burn-out")
Daarna lees je de dataset in. met attach(data) zorg je ervoor dat er niet meer expliciet moet verwezen worden naar de dataset via het $-teken. Indien je deze functie vaak gebruikt, komen er standaardwarnings op met een lijst variabelen die men niet langer ‘attaches’. Gezien de lange lijst variabelen in deze dataset, werden de warnings afgezet met warn.conflicts=FALSE.
##dataset inlezen
data <- read_survey("testdata_10juli.csv")
attach(data,warn.conflicts=FALSE)
##Hercoderen reverse items
reverse_items = c("Neuroticisme_IPIP_1", "Neuroticisme_IPIP_3","Neuroticisme_IPIP_5","QRTW_5","QRTW_8","Soc_Support_1_3")
data[ ,reverse_items] = 8 - data[ ,reverse_items]
Het checken van de steekproefgrootte gebeurt voor elke stap van de eligibility check. De berekende steekproefgroottes interpreteer je als volgt:
##steekproefgroottes voor elke check
sum(Burnout_check == 1)
sum(Reintegration_check == 1,na.rm=TRUE)
sum(Work_status != 0,na.rm=TRUE)
Om de kwaliteit van de antwoordpatronen na te gaan, kan je checken of het controle item steeds correct werd beantwoord.
Interpretatie: de som van alle mensen die 4 hebben geantwoord op het controle item (minus missing answers)
##controle item checken
Controle_2
sum(Controle_2 == 4,na.rm=TRUE)
##identificeren van participant die foutief antwoorden op controlevraag
which(Controle_2 != 4)
We filteren enkel de volledige responses er uit om verdere analyse op uit te voeren. Wat verstaan we onder volledig:
Om de volgende analyses uit te voeren op een andere subset, kan je weer de subset() functie gebruiken maar sla deze zeker op onder dezelfde naam sub2.
##subset 2 maken: mensen die niet in aanmerking komen én niet tot het einde invulden weglaten en drop de eerste 18 kolommen
sub2 <- subset(data, !is.na(AFW_DUUR_jaren_1) & !is.na(Difficulty),select=-c(1:18))
attach(sub2,warn.conflicts=FALSE)
Een continue variabele
RTW_tot_maand = de totale duur (in maanden) sinds iemand re-integreerde
##omzetten van missing values naar 0 (zodat je er mee kan rekenen)
sub2$RTW_DUUR_Jaren_1[is.na(sub2$RTW_DUUR_Jaren_1)]<-0
sub2$RTW_DUUR_Maanden_1[is.na(sub2$RTW_DUUR_Maanden_1)]<-0
##totaal aantal maanden sinds re-integratie berekenen
sub2$RTW_tot_maand<-(sub2$RTW_DUUR_Jaren_1 * 12) + sub2$RTW_DUUR_Maanden_1
##overzicht van variabele
summary(sub2$RTW_tot_maand)
sd(sub2$RTW_tot_maand)
##histogram van variabele
ggplot(sub2,aes(x = RTW_tot_maand)) + geom_histogram(col="black",fill=sequential_hcl(30,"PinkYl")) + labs(x="Tijd sinds re-integratie na burn-out (in maanden)",y="frequentie",title="histogram RTW_Duur")
##hoeveel mensen (in percentage) liggen onder XX maanden?
ecdf(sub2$RTW_tot_maand)(60)
paste(round((ecdf(sub2$RTW_tot_maand)(12)) * 100,2),"%",sep="")
##hoeveel mensen (in percentage) liggen boven XX maanden?
paste(round((1-ecdf(sub2$RTW_tot_maand)(119)) * 100,2),"%",sep="")
##outliers identificeren
boxplot(sub2$RTW_tot_maand,
ylab = "Duur sinds re-integratie (in maanden)",
main = "Boxplot van re-integratie recentheid"
)
mtext(paste("Outliers: ", paste(boxplot.stats(sub2$RTW_tot_maand)$out, collapse = ", ")))
Een continue variabele
BO_tot_maand = de totale duur (in maanden) dat iemand uitviel door burn-out
##omzetten van missing values naar 0 (zodat je er mee kan rekenen)
sub2$AFW_DUUR_jaren_1[is.na(sub2$AFW_DUUR_jaren_1)]<-0
sub2$AFW_DUUR_Maanden_1[is.na(sub2$AFW_DUUR_Maanden_1)]<-0
##totaal aantal maanden van afwezigheid door burn-out berekenen
sub2$BO_tot_maand<-(sub2$AFW_DUUR_jaren_1 * 12) + sub2$AFW_DUUR_Maanden_1
##overzicht van variabele
summary(sub2$BO_tot_maand)
##histogram van variabele
ggplot(sub2,aes(x = BO_tot_maand)) + geom_histogram(col="black",fill=sequential_hcl(30,"PinkYl")) + labs(x="Duur van afwezigheid door burn-out",y="aantal",title="histogram AFW_Duur")
##op hoeveel maanden ligt XX% hun burn-out duur eronder?
quantile(sub2$BO_tot_maand,.70)
##hoeveel percent hun burn-out duur ligt onder XX maanden?
paste(round((ecdf(sub2$BO_tot_maand)(12)) * 100,2),"%",sep="")
##aangeven dat geslacht een factor is met twee niveaus
sub2$Geslacht<-factor(sub2$Geslacht,levels = c(1,2,3),labels = c("Man","Vrouw","Andere"))
##overzicht variabele
table(sub2$Geslacht)
##frequentie berekenen
freq_geslacht<-prop.table(table(sub2$Geslacht)) * 100
freq_geslacht
##taartdiagram van variabele
pie(freq_geslacht,labels=c("Man","Vrouw"),main="Verdeling Geslacht",col=diverging_hcl(2,"Cyan-Magenta"))
Een continue variabele
##overzicht van variabele
summary(sub2$AGE_1)
##aangeven dat migratie achtergrond een factor is met twee niveaus
sub2$MIGR<-factor(sub2$MIGR,levels=c(1,2),labels=c("Ja","Nee"))
##overzicht van variabele
summary(sub2$MIGR)
##frequentie berekenen van variabele
freq_migratie<-prop.table(table(sub2$MIGR)) * 100
freq_migratie
Variabele filteren op waarde(n)
Indien je een “subset” wilt maken van je variabele/object, typ je de naam van je variabele en dan vierkante haakjes []. Daarmee zeg je, ik wil iets selecteren uit mijn variabele. Binnen de haakjes, typ je een logisch formule.
Bijv. (wat) alle waarden die gelijk zijn aan 10 (hoe) Leeftijd[Leeftijd == 10]
Maak dus gebruik van logische operators:
##aangeven dat relatiestatus een factor is met drie niveaus
sub2$Relatiestatus<-factor(sub2$Relatiestatus,levels=c(1,2,4),labels=c("Vrijgezel","Relatie (niet samenwonend)","Relatie (samenwonend)"))
##overzicht van variabele
summary(sub2$Relatiestatus)
##frequentie van variabele
freq_relatie<-prop.table(table(sub2$Relatiestatus)) * 100
freq_relatie
##frequentie van subset indien je 1 waarde wilt weglaten
prop.table(table(sub2$Relatiestatus[sub2$Relatiestatus != "Vrijgezel"]))*100
##frequentie van subset indien je een paar waarden wilt selecteren
prop.table(table(sub2$Relatiestatus[sub2$Relatiestatus == "Relatie (niet samenwonend)" | sub2$Relatiestatus == "Relatie (samenwonend)"]))
##aangeven dat kinderen een factor met vijf niveaus is
sub2$Kinderen<-factor(sub2$Kinderen,levels=c(1,2,3,4,5),labels=c("Geen","1 kind","2 kinderen","3 kinderen","4 of meer kinderen"))
##overzicht van variabele
summary(sub2$Kinderen)
##frequentie van variabele
freq_kinderen<-prop.table(table(sub2$Kinderen)) * 100
freq_kinderen
##aangeven dat opleidingsniveau een factor is met vier levels
sub2$Opleidingsniveau<-factor(sub2$Opleidingsniveau,levels=c(1,2,3,4),labels=c("Lager secundair","Hoger secundair","Bachelor","Master/Doctoraat"))
##overzicht van variabele
summary(sub2$Opleidingsniveau)
##frequentie van variabele
freq_opleiding<-prop.table(table(sub2$Opleidingsniveau)) * 100
freq_opleiding
##aangeven dat sector een factor met twee levels is
sub2$Sector<-factor(sub2$Sector, levels = c(1,2), labels = c("Prive sector","Publieke sector"))
##overzicht van variabele
summary(sub2$Sector)
##frequentie van variabele
freq_Sector<-prop.table(table(sub2$Sector)) * 100
freq_Sector
##aangeven dat werkstatuut een factor is met drie levels
sub2$Statuut<-factor(sub2$Statuut, levels=c(1,2,3), labels=c("Loondienst","Zelfstandig","Beide"))
##overzicht van variabele
summary(sub2$Statuut)
##frequentie van variabele
freq_Werkstatuut<-prop.table(table(sub2$Statuut)) * 100
freq_Werkstatuut
Een continue variabele die het percentage in telewerken meet
##overzicht van variabele
summary(sub2$Telewerk_1)
Een continue variabele
Tewerkstelling_Org_tot_maand = de totale duur (in maanden) dat iemand bij zijn huidige organisatie werkt
##omzetten van missing values naar 0 (zodat je er mee kan rekenen)
sub2$Org_Tenure_Jaren_1[is.na(sub2$Org_Tenure_Jaren_1)]<-0
sub2$Org_Tenure_Maanden_1[is.na(sub2$Org_Tenure_Maanden_1)]<-0
##totaal aantal maanden tewerkstelling binnen huidige organisatie berekenen
sub2$Tewerkstelling_Org_tot_maand<-(sub2$Org_Tenure_Jaren_1 * 12) + sub2$Org_Tenure_Maanden_1
##overzicht van variabele
summary(sub2$Tewerkstelling_Org_tot_maand)
##op hoeveel maanden, ligt XX% hun tewerkstellingsduur eronder?
quantile(sub2$Tewerkstelling_Org_tot_maand,.70)
##hoeveel mensen hebben een tewerkstellingsduur onder XX maanden?
ecdf(sub2$Tewerkstelling_Org_tot_maand)(24)
paste(round((ecdf(sub2$Tewerkstelling_Org_tot_maand)(24)) * 100,2),"%",sep="")
Een continue variabele Tewerkstelling_Funct_tot_maand = de totale duur (in maanden) dat iemand in zijn huidige functie werkt
##omzetten van missing values naar 0 (zodat je er mee kan rekenen)
sub2$Funct_Tenure_Jaren_1[is.na(sub2$Funct_Tenure_Jaren_1)]<-0
sub2$Funct_Tenure_Maanden_1[is.na(sub2$Funct_Tenure_Maanden_1)]<-0
##totaal aantal maanden tewerkstelling binnen huidige functie berekenen
sub2$Tewerkstelling_Funct_tot_maand<-(sub2$Funct_Tenure_Jaren_1 * 12) + sub2$Funct_Tenure_Maanden_1
##overzicht variabele
summary(sub2$Tewerkstelling_Funct_tot_maand)
##op hoeveel maanden, ligt XX% hun tewerkstellingsduur eronder?
quantile(sub2$Tewerkstelling_Funct_tot_maand,.70)
##welk percentage mensen hebben een tewerkstellingsduur onder XX maanden?
ecdf(sub2$Tewerkstelling_Funct_tot_maand)(24)
paste(round((ecdf(sub2$Tewerkstelling_Funct_tot_maand)(24)) * 100,2),"%",sep="")
Mogelijks interessante extra inzichten.
##Hoeveel zijn er veranderd van werkgever na re-integratie?
sum(sub2$Tewerkstelling_Org_tot_maand < sub2$RTW_tot_maand)
ggplot(sub2) + geom_point(aes(x = Tewerkstelling_Org_tot_maand, y = RTW_tot_maand,color=Tewerkstelling_Org_tot_maand<RTW_tot_maand)) +
scale_colour_manual(name = 'veranderd van organisatie na re-integratie', values = setNames(c('firebrick2','deepskyblue2'),c(T, F))) +
xlab('Aantal maanden bij zelfde organisatie') + ylab('Aantal maanden sinds re-integratie')
##Hoeveel zijn er veranderd van functie na re-integratie?
sum(sub2$Tewerkstelling_Funct_tot_maand < sub2$RTW_tot_maand)
ggplot(sub2) + geom_point(aes(x = Tewerkstelling_Funct_tot_maand, y = RTW_tot_maand,color=Tewerkstelling_Funct_tot_maand<RTW_tot_maand)) +
scale_colour_manual(name = 'veranderd van organisatie na re-integratie', values = setNames(c('firebrick2','deepskyblue'),c(T, F))) +
xlab('Aantal maanden in zelfde functie') + ylab('Aantal maanden sinds re-integratie')
##Wie is er veranderd van werkgever?
which(sub2$Tewerkstelling_Org_tot_maand<sub2$RTW_tot_maand)
zelfdeorganisatie<-which(sub2$Tewerkstelling_Org_tot_maand<sub2$RTW_tot_maand)
##Wie is er veranderd van functie?
which(sub2$Tewerkstelling_Funct_tot_maand<sub2$RTW_tot_maand)
zelfdefunctie<-which(sub2$Tewerkstelling_Funct_tot_maand<sub2$RTW_tot_maand)
##Hoeveel en wie is er veranderd van functie & werkgever? (de overige zijn veranderd van werkgever maar behouden hun functie)
sum(zelfdeorganisatie %in% zelfdefunctie)
which(zelfdeorganisatie %in% zelfdefunctie)
##variabele namen opslaan om makkelijker naar te refereren later
demograf_alle <- c("Geslacht","MIGR","Relatiestatus","Kinderen","Opleidingsniveau","Sector","Statuut","AGE_1","Telewerk_1","Tewerkstelling_Org_tot_maand","Tewerkstelling_Funct_tot_maand","RTW_tot_maand","BO_tot_maand")
demograf_categorisch <- c("Geslacht","MIGR","Relatiestatus","Kinderen","Opleidingsniveau","Sector","Statuut")
demograf_continue <- c("AGE_1","Telewerk_1","Tewerkstelling_Org_tot_maand","Tewerkstelling_Funct_tot_maand","RTW_tot_maand","BO_tot_maand")
demograf_dicho<-c("Geslacht","MIGR","Sector","Statuut")
demograf_poly<-c("Relatiestatus","Kinderen","Opleidingsniveau")
! Enkel voor continue variabelen
##gemiddelden voor alle controlevariabelen (geldt niet voor categorische)
summary(sub2[,demograf_continue])
Met confirmatorische factoranalyse (CFA) kan je opsporen welke items per schaal heel sterk (of net niet) laden op de latente variabele.
model2 <- 'reintegratie1 =~ QRTW_1 + QRTW_2 + QRTW_3'
model2 <- cfa(model2, data=sub2, estimator = "MLM")
summary(model2, standardized = T, fit.measures=T)
model1 <- 'werkdruk1 =~ Werkdruk_1 + Werkdruk_2 + Werkdruk_3 + Werkdruk_4 + Werkdruk_5 + Werkdruk_6 + Werkdruk_7'
model1 <- cfa(model1, data=sub2, estimator = "MLM")
summary(model1, standardized = T, fit.measures=T)
model7 <- 'steun1 =~ SocSteun_1+SocSteun_2+SocSteun_3'
model7 <- cfa(model7,data=sub2,estimator="MLM")
summary(model7, standardized = T, fit.measures=T)
model8 <- 'autonomie1 =~ Autonomie_1+Autonomie_2+Autonomie_3+Autonomie_4'
model8 <- cfa(model8,data=sub2,estimator="MLM")
summary(model8, standardized = T, fit.measures=T)
model9 <- 'neuroticisme1 =~ Neuroticisme_IPIP_1+Neuroticisme_IPIP_2+Neuroticisme_IPIP_3+Neuroticisme_IPIP_4+Neuroticisme_IPIP_5+Neuroticisme_IPIP_6+Neuroticisme_IPIP_7+Neuroticisme_IPIP_8+Neuroticisme_IPIP_9+Neuroticisme_IPIP_10'
model9 <- cfa(model9,data=sub2,estimator="MLM")
summary(model9, standardized = T, fit.measures=T)
model10 <- 'herstel1 =~ HerstelNeed_1+HerstelNeed_2+HerstelNeed_3'
model10 <- cfa(model10,data=sub2,estimator="MLM")
summary(model10, standardized = T, fit.measures=T)
model3 <- 'actievecoping1 =~ ActiefCoping_1 + ActiefCoping_2 + ActiefCoping_3 + ActiefCoping_4'
model3 <- cfa(model3, data=sub2, estimator = "MLM")
summary(model3, standardized = T, fit.measures=T)
model11 <- 'vermijdcoping1 =~ VermijdCoping_1+VermijdCoping_2+VermijdCoping_3+VermijdCoping_4+VermijdCoping_5+VermijdCoping_6+VermijdCoping_7+VermijdCoping_8'
model11 <- cfa(model11,data=sub2,estimator="MLM")
summary(model11, standardized = T, fit.measures=T)
model12 <- 'wfconflict1 =~WFConflict_1+WFConflict_2+WFConflict_3+WFConflict_4+WFConflict_5+WFConflict_6+WFConflict_7+WFConflict_8+WFConflict_9'
model12 <- cfa(model12,data=sub2,estimator="MLM")
summary(model12, standardized = T, fit.measures=T)
model13 <- 'fwconflict1 =~FWConflict_1+FWConflict_2+FWConflict_3+FWConflict_4+FWConflict_5+FWConflict_6'
model13 <- cfa(model13,data=sub2,estimator="MLM")
summary(model13, standardized = T, fit.measures=T)
model4 <- 'dass1 =~ DAS_1+DAS_2+DAS_3+DAS_4+DAS_5+DAS_6+DAS_7'
model4 <- cfa(model4,data=sub2,estimator="MLM")
summary(model4, standardized = T, fit.measures=T)
model5 <- 'ubes1 =~ BO_1+BO_2+BO_3+BO_4+BO_5+BO_6+BO_7+BO_8+BO_9+BO_10+BO_11+BO_12+BO_13+BO_14+BO_15+BO_16+BO_17'
model5 <- cfa(model5,data=sub2,estimator="MLM")
summary(model5, standardized = T, fit.measures=T)
model6 <- 'bat1 =~ BORisico_1+BORisico_2+BORisico_3+BORisico_4+BORisico_5+BORisico_6+BORisico_7+BORisico_8+BORisico_9+BORisico_10+BORisico_11+BORisico_12'
model6 <- cfa(model6,data=sub2,estimator="MLM")
summary(model6, standardized = T, fit.measures=T)
Hier worden gewoon kleine subsetjes gemaakt voor elke variabele. We selecteren de juiste itemnamen voor elke variabele en slaan deze op. Hierdoor moeten we alle itemnamen maar één keer typen en kunnen we er later gewoon naar refereren.
##juiste kolommen selecteren voor elke variabeleschaal (makkelijker om naar te refereren en/of aan te passen)
QRTW <- sub2[ ,c("QRTW_1","QRTW_2","QRTW_3","QRTW_4","QRTW_5","QRTW_6","QRTW_7","QRTW_8","QRTW_9")]
Werkdruk <- sub2[ ,c("Werkdruk_1","Werkdruk_2","Werkdruk_3","Werkdruk_4","Werkdruk_5","Werkdruk_6","Werkdruk_7")]
SocialeSteun_Leiding <- sub2[ ,c("SocSteun_1","SocSteun_2","SocSteun_3")]
Autonomie <- sub2[ ,c("Autonomie_1","Autonomie_2","Autonomie_3","Autonomie_4")]
Neuroticisme <- sub2[ ,c("Neuroticisme_IPIP_1","Neuroticisme_IPIP_2","Neuroticisme_IPIP_3","Neuroticisme_IPIP_4","Neuroticisme_IPIP_5","Neuroticisme_IPIP_6","Neuroticisme_IPIP_7","Neuroticisme_IPIP_8","Neuroticisme_IPIP_9","Neuroticisme_IPIP_10")]
HerstelNeed <- sub2[ ,c("HerstelNeed_1","HerstelNeed_2","HerstelNeed_3")]
Zelfeffectiviteit <- sub2[ ,"Zelfeffectiviteit"]
ActiefCoping <- sub2[ ,c("ActiefCoping_1","ActiefCoping_2","ActiefCoping_3","ActiefCoping_4","ActiefCoping_5","ActiefCoping_6","ActiefCoping_7","ActiefCoping_8")]
VermijdCoping <- sub2[ ,c("VermijdCoping_1","VermijdCoping_2","VermijdCoping_3","VermijdCoping_4","VermijdCoping_5","VermijdCoping_6","VermijdCoping_7","VermijdCoping_8")]
DASS <- sub2[ ,c("DAS_1","DAS_2","DAS_3","DAS_4","DAS_5","DAS_6","DAS_7")]
UBES <- sub2[ ,c("BO_1","BO_2","BO_3","BO_4","BO_5","BO_6","BO_7","BO_8","BO_9","BO_10","BO_11","BO_12","BO_13","BO_14","BO_15","BO_16","BO_17")]
BAT <- sub2[ ,c("BORisico_1","BORisico_2","BORisico_3","BORisico_4","BORisico_5","BORisico_6","BORisico_7","BORisico_8","BORisico_9","BORisico_10","BORisico_11","BORisico_12")]
WFConflict <- sub2[ ,c("WFConflict_1","WFConflict_2","WFConflict_3","WFConflict_4","WFConflict_5","WFConflict_6","WFConflict_7","WFConflict_8","WFConflict_9")]
FWConflict <- sub2[ ,c("FWConflict_1","FWConflict_2","FWConflict_3","FWConflict_4","FWConflict_5","FWConflict_6")]
Interne consistentie werd gemeten met Cronbach’s alpha.
Algemeen is een alpha van > .70 acceptabel. (Tussen de 80-90 = goed en 90-100 = uitstekend.)
! Enkel acceptabele schalen mogen gebruikt worden voor verdere analyse.
! Enkel van schalen met 3 of meer items kan je alpha correct berekenen.
! Hiervoor heb je de library(“psych”) nodig.
##Interne consistentie van schalen nagaan
alpha(QRTW)
alpha(Werkdruk)
alpha(SocialeSteun_Leiding)
alpha(Autonomie)
alpha(Neuroticisme)
alpha(HerstelNeed)
alpha(ActiefCoping,check.keys = TRUE)
alpha(VermijdCoping)
alpha(WFConflict)
alpha(FWConflict)
Herdefiniëren van schalen kan je doen om het aantal te schatten parameters te verkleinen. Dit kan je doen door goede items te behouden en slechte items weglaten. !Praktisch: de slechte itemnamen verwijderen bij het blok “schaalconstructie” en opnieuw runnen
Variabelen werden gemeten aan de hand van een 7-punt Likert schaal.
Voor we meer kunnen leren over de latente variabelen, moeten we eerst een totaalscore berekenen voor elke schaal. Om rekening te houden met het verschillend aantal items, berekenen we een gemiddelde score voor elke schaal. Deze nieuwe variabelen voegen we toe aan onze subset.
De gemiddelde scores zijn telkens continue variabelen.
##Gemiddelde score voor elke meetschaal berekenen
sub2$QRTW_Tot <- rowMeans(QRTW)
sub2$Werkdruk_Tot <- rowMeans(Werkdruk)
sub2$Steunleiding_Tot <- rowMeans(SocialeSteun_Leiding)
sub2$Autonomie_Tot <- rowMeans(Autonomie)
sub2$Neuroticisme_Tot <- rowMeans(Neuroticisme)
sub2$Herstelneed_Tot <- rowMeans(HerstelNeed)
sub2$Actiefcoping_Tot <- rowMeans(ActiefCoping)
sub2$Vermijdcoping_Tot <- rowMeans(VermijdCoping)
sub2$WFconflict_Tot <- rowMeans(WFConflict)
sub2$FWconflict_Tot <- rowMeans(FWConflict)
sub2$BAT_Tot <- rowMeans(BAT)
sub2$DASS_Tot <- rowMeans(DASS)
sub2$UBES_Tot <- rowMeans(UBES)
Onder voorbehoud! Misschien kunnen we de factorscores gebruiken om een schaalscore te berekenen (in plaats van het gemiddelde)? Zodat goede items meer doorwegen dan slechte items?
##Alternatief voor somscores: factorscores extraheren
sub2$reintegratie <-predict(model2)
sub2$werkdruk <- predict(model1)
sub2$actievecoping <- predict(model3)
sub2$dass <- predict(model4)
sub2$ubes <- predict(model5)
sub2$bat <- predict(model6)
sub2$steun <- predict(model7)
sub2$autonomie <- predict(model8)
sub2$neuroticisme <- predict(model9)
sub2$herstel <- predict(model10)
sub2$vermijdcoping <- predict(model11)
sub2$wfconflict <- predict(model12)
sub2$fwconflict <- predict(model13)
Samenvattende statistieken en visualisaties.
### schalen o.b.v somscores opslaan in nieuwe variabele om makkelijk te refereren
uitkomst <- c("QRTW_Tot")
predictoren<-c("Werkdruk_Tot","Steunleiding_Tot","Autonomie_Tot","Neuroticisme_Tot","Herstelneed_Tot","Zelfeffectiviteit","Actiefcoping_Tot","Vermijdcoping_Tot","WFconflict_Tot","FWconflict_Tot","BAT_Tot","DASS_Tot","UBES_Tot")
### schalen o.b.v. factorscores opslaan in nieuwe variabele om makkelijk te refereren
uitkomst1 <- c("reintegratie")
predictoren1 <- c("werkdruk","steun","autonomie","neuroticisme","herstel","Zelfeffectiviteit","actievecoping","vermijdcoping","wfconflict","fwconflict","bat","dass","ubes")
###overzicht van schalen o.b.v. somscores
summary(sub2[ ,uitkomst])
summary(sub2[ ,predictoren])
###overzicht van schalen o.b.v. factorscores (je ziet dat ze gecentreerd zijn, gemiddelde = 0)
summary(sub2[ ,uitkomst1])
summary(sub2[ ,predictoren1])
###boxplot van predictoren o.b.v. somscores
predictoren_long<-melt(sub2[ ,predictoren])
levels(predictoren_long$variable)<-c("Werkdruk","Sociale Steun Leiding","Autonomie","Neuroticisme","Herstelbehoefte","Zelfeffectiviteit","Actieve Coping","Vermijdende Coping","Werk-familie conflict","Familie-werk conflict","Risico op BO","Depressie/Angst/Stress","Bevlogenheid")
ggplot(predictoren_long,aes(x = variable,y = value,color=variable,variable.names(predictoren_namen))) + geom_boxplot(outlier.color = "red",outlier.size=2.5) + theme(legend.position="none",axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) + scale_color_discrete_sequential(palette = "PurpOr",nmax=20,order=20:1)
attach(predictoren_long)
###Outliers bekijken
outliers_werkdruk<-boxplot.stats(predictoren_long[variable == "Werkdruk",]$value)$out
which(predictoren_long[variable == "Werkdruk",]$value %in% c(outliers_werkdruk))
outliers_socialesteun<-boxplot.stats(predictoren_long[variable == "Sociale Steun Leiding",]$value)$out
which(predictoren_long[variable == "Sociale Steun Leiding",]$value %in% c(outliers_socialesteun))
outliers_neuroticisme<-boxplot.stats(predictoren_long[variable == "Neuroticisme",]$value)$out
which(predictoren_long[variable == "Neuroticisme",]$value %in% c(outliers_neuroticisme))
outliers_herstelbehoefte<-boxplot.stats(predictoren_long[variable == "Herstelbehoefte",]$value)$out
which(predictoren_long[variable == "Herstelbehoefte",]$value %in% c(outliers_herstelbehoefte))
outliers_wfconflict<-boxplot.stats(predictoren_long[variable == "Werk-familie conflict",]$value)$out
which(predictoren_long[variable == "Werk-familie conflict",]$value %in% c(outliers_wfconflict))
detach('predictoren_long')
###Scatterplots
scatterplotMatrix(~Werkdruk_1+Werkdruk_2+Werkdruk_3+Werkdruk_4+Werkdruk_5+Werkdruk_6+Werkdruk_7,
data = sub2)
scatterplotMatrix(~SocSteun_1+SocSteun_2+SocSteun_3,data=sub2)
scatterplotMatrix(~Autonomie_1+Autonomie_2+Autonomie_3+Autonomie_4,data=sub2)
scatterplotMatrix(~Neuroticisme_IPIP_1+Neuroticisme_IPIP_2+Neuroticisme_IPIP_3+Neuroticisme_IPIP_4+Neuroticisme_IPIP_5+Neuroticisme_IPIP_6+Neuroticisme_IPIP_7+Neuroticisme_IPIP_8+Neuroticisme_IPIP_9+Neuroticisme_IPIP_10,data=sub2)
scatterplotMatrix(~HerstelNeed_1+HerstelNeed_2+HerstelNeed_3,data=sub2)
scatterplotMatrix(~ActiefCoping_1+ActiefCoping_2+ActiefCoping_3+ActiefCoping_4+ActiefCoping_5+ActiefCoping_6+ActiefCoping_7+ActiefCoping_8,data=sub2)
scatterplotMatrix(~VermijdCoping_1+VermijdCoping_2+VermijdCoping_3+VermijdCoping_4+VermijdCoping_5+VermijdCoping_6+VermijdCoping_7+VermijdCoping_8,data=sub2)
scatterplotMatrix(~WFConflict_1+WFConflict_2+WFConflict_3+WFConflict_4+WFConflict_5+WFConflict_6+WFConflict_7+WFConflict_8+WFConflict_9,data=sub2)
###Histogram van reintegratiekwaliteit (obv somscores)
ggplot(sub2,aes(x = QRTW_Tot)) + geom_histogram(col="black",fill=sequential_hcl(30,"PinkYl")) + labs(x="Gemiddelde re-integratie kwaliteit (7 punten schaal)",y="frequentie",title="histogram QRTW_Tot")
###Hoeveel participanten scoren lager dan het gemiddelde op reintegratiekwaliteit (obv somscores)?
sum(sub2$QRTW_Tot<=mean(sub2$QRTW_Tot))
###Hoeveel participanten scoren hoger dan het gemiddelde op reintegratiekwaliteit (obv somscores)?
sum(sub2$QRTW_Tot>mean(sub2$QRTW_Tot))
describe(sub2[,c(uitkomst,predictoren,demograf_alle)])
round(stat.desc(sub2[,c(uitkomst,predictoren,demograf_alle)],basic=T,norm=T,p=0.95),2)
#AGE_1,UBES_Tot,BAT_Tot, Actiefcoping_Tot, Autonomie_tot,Werkdruk_Tot, QRTW_Tot do not pass the normtest
### Optie 1: toont correlatiegroottes apart en p-waarden apart (!zonder categorische variabelen)
corr.test(sub2[,c(uitkomst,predictoren,demograf_continue)],method="pearson")
### Optie 2: toont enkel onderste diagonaal met correlatiegroottes (duidelijker leesbaar)
lowerCor(sub2[,c(uitkomst,predictoren,demograf_alle)],method="pearson")
### Optie 3: toont tabel met gemiddelde, SD, correlatiegroottes, significantie en betrouwbaarheidsintervals
apa.cor.table(sub2[,c(uitkomst,predictoren,demograf_alle)],show.conf.interval=FALSE)
### correlatie tabel naar Word exporteren, voeg gewoon bestandsnaam toe na komma
apa.cor.table(sub2[,c(uitkomst,predictoren,demograf_alle)],filename="correlatietabel somscores.doc",show.conf.interval=FALSE)
lowerCor(sub2[,c(uitkomst1,predictoren1,demograf_alle)],method="pearson")
apa.cor.table(sub2[,c(uitkomst1,predictoren1,demograf_alle)],filename="correlatietabel factorscores.doc",show.conf.interval=FALSE)
###obv somscores
summary(aov(QRTW_Tot~Geslacht,sub2))
summary(aov(QRTW_Tot~MIGR,sub2))
summary(aov(QRTW_Tot~Relatiestatus,sub2))
summary(aov(QRTW_Tot~Kinderen,sub2))
summary(aov(QRTW_Tot~Opleidingsniveau,sub2))
summary(aov(QRTW_Tot~Sector,sub2))
summary(aov(QRTW_Tot~Statuut,sub2))
###obv factorscores
summary(aov(reintegratie~Geslacht,sub2))
summary(aov(reintegratie~MIGR,sub2))
summary(aov(reintegratie~Relatiestatus,sub2))
summary(aov(reintegratie~Kinderen,sub2))
summary(aov(reintegratie~Opleidingsniveau,sub2))
summary(aov(reintegratie~Sector,sub2))
summary(aov(reintegratie~Statuut,sub2))
Zie correlatietabel
Voor elke variabele afzonderlijk
## Controlevariabelen
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot, data=sub2))
NulModel <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot, data=sub2)
Anova(NulModel, type=3)
## Werkdruk
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Werkdruk_Tot, data=sub2))
ModelWerkdruk <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Werkdruk_Tot, data=sub2)
Anova(ModelWerkdruk, type=3)
summary(lm(formula = QRTW_Tot ~ Werkdruk_Tot, data=sub2))
## Sociale steun leidinggevende
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Steunleiding_Tot, data=sub2))
ModelSteunleiding <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Steunleiding_Tot, data=sub2)
Anova(ModelSteunleiding, type=3)
summary(lm(formula = QRTW_Tot ~ Steunleiding_Tot, data=sub2))
## Autonomie
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Autonomie_Tot, data=sub2))
ModelAutonomie <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Autonomie_Tot, data=sub2)
Anova(ModelAutonomie, type=3)
summary(lm(formula = QRTW_Tot ~ Autonomie_Tot, data=sub2))
## Neuroticisme
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Neuroticisme_Tot, data=sub2))
ModelNeuroticisme <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Neuroticisme_Tot, data=sub2)
Anova(ModelNeuroticisme, type=3)
summary(lm(formula = QRTW_Tot ~ Neuroticisme_Tot, data=sub2))
## Herstelneed
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Herstelneed_Tot, data=sub2))
ModelHerstelneed <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Herstelneed_Tot, data=sub2)
Anova(ModelHerstelneed, type=3)
summary(lm(formula = QRTW_Tot ~ Herstelneed_Tot, data=sub2))
## Actieve coping
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Actiefcoping_Tot, data=sub2))
ModelActiefcoping <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Actiefcoping_Tot, data=sub2)
Anova(ModelActiefcoping, type=3)
summary(lm(formula = QRTW_Tot ~ Actiefcoping_Tot, data=sub2))
## Vermijdende coping
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Vermijdcoping_Tot, data=sub2))
ModelVermijdcoping <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + Vermijdcoping_Tot, data=sub2)
Anova(ModelVermijdcoping, type=3)
summary(lm(formula = QRTW_Tot ~ Vermijdcoping_Tot, data=sub2))
## Werk-familie conflict
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + WFconflict_Tot, data=sub2))
ModelWFconflict <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + WFconflict_Tot, data=sub2)
Anova(ModelWFconflict, type=3)
summary(lm(formula = QRTW_Tot ~ WFconflict_Tot, data=sub2))
## Familie-werk conflict
summary(lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + FWconflict_Tot, data=sub2))
ModelFWconflict <- lm(formula = QRTW_Tot ~ Relatiestatus + DASS_Tot + BAT_Tot + UBES_Tot + FWconflict_Tot, data=sub2)
Anova(ModelFWconflict, type=3)
summary(lm(formula = QRTW_Tot ~ FWconflict_Tot, data=sub2))
Model Charlotte: Werkdeterminanten, privédeterminanten en persoonsdeterminanten als latente variabelen.
Model Charlotte 2: Reintegratiekwaliteit als latente variabele.
###Model Charlotte (opdeling in werk- privé- en persoonsdeterminanten)
modelChar <- 'werkdeterminanten =~ werkdruk + autonomie
privedeterminanten =~ wfconflict + fwconflict
persoonsdeterminanten =~ neuroticisme + actievecoping
##regressie
reintegratie~werkdruk + autonomie + neuroticisme + wfconflict + fwconflict + actievecoping'
fit.sem1<-sem(modelChar,data=sub2)
#summary(fit.sem1,standardized=T)
#fitMeasures(fit.sem1,c("cfi","rmsea","srmr"))
#semPaths(fit.sem1,what="paths",whatLabels="stand",rotation=1)
###Model Charlotte 2 (reintegratiekwaliteit als latente variabele)
modelChar2 <- 'reintegratie1=~werkdruk + autonomie + neuroticisme + wfconflict + fwconflict + actievecoping'
fit.sem2<-sem(modelChar2,data=sub2)
#fitMeasures(fit.sem2,c("cfi","rmsea","srmr"))
#semPaths(fit.sem2,what="paths",whatLabels="stand",rotation=1)
##COV<-cov(sub2[,c("reintegratie","werkdruk","autonomie","neuroticisme","wfconflict","fwconflict","actievecoping")])
##fitTest<-sem(modelChar, sample.cov = COV, sample.nobs = 55)
##summary(fitTest,fit.measures=T,standardized=T)
##fitMeasures(fitTest,c("cfi","rmsea","srmr"))
##semPaths(fitTest)
##modindices(modelChar, minimum.value = 10)