Link naar survey

Intro

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)

Stap 1: Bibliotheken laden

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)

Stap 2: Dataset inlezen

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.
! om de functie read_survey te gebruiken heb je de library(“qualtRics”) nodig
! verander de naam van de dataset indien nodig

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)

Stap 3: Data opschonen

Het hercoderen van items doe je op de volledige dataset.
Het hercoderen verliep door één waarde groter dan ons aantal punten op de likertschaal te nemen en daarvan het verschil te nemen met onze datawaarden.
Bijv. (wat) een score van 7 omzetten naar 1. (hoe) 8 - 7 = 1
De volgende items werden gehercodeerd:
  • Neuroticisme schaal (IPIP): item 1, 3, 5
  • Kwaliteit van re-integratie schaal (Claudia): item 5, 8
  • Sociale steun van omgeving (niet voor ons): item 3
##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:
  • Burnout_check: De som van alle mensen waarbij ooit een officiële diagnose van burn-out werd vastgesteld
  • Reintegration_check: De som van alle mensen die re-integreerden na hun burn-out diagnose
  • Work_status: De som van alle mensen die betaald (voltijds of deeltijds) aan het werk zijn
##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:
  • Ze hebben de eligibility check doorstaan en er is dus geen missing value bij de eerstvolgende vraag
  • Ze hebben tot de allerlaatste (verplichte) vraag ingevuld (open vraag niet meegerekend)

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)

Demografische gegevens

Duur sinds re-integratie

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 = ", ")))

Duur van afwezigheid ten gevolge van burn-out

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="")

Geslacht

Een binaire/categorische variabele van twee niveaus:
  • Man
  • Vrouw
##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"))

Leeftijd

Een continue variabele

##overzicht van variabele
summary(sub2$AGE_1)

Migratie achtergrond

Een binaire/categorische variabele met twee niveaus:
  • Ja
  • Nee
##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

Relatiestatus

Een categorische variabele met drie niveaus:
  • Vrijgezel
  • Relatie (niet samenwonend)
  • Relatie (samenwonend)

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:

  • ==: gelijk aan
  • !=: niet gelijk aan
  • >: groter dan
  • >=: groter dan of gelijk aan
  • <: kleiner dan
  • <=: kleiner dan of gelijk aan
Om meerdere argumenten toe te voegen, typ je meerdere formules binnen de haakjes.
Bijv. (wat) Alle mensen die in een relatie zijn, of ze nu samenwonen of niet (hoe) Relatie[Relatie == “Relatie (samenwonend)” | “Relatie (niet samenwonend)”]
Hiervoor gebruik je deze operators:
  • &: het en-teken. Je wilt dat én dit gebeurt, én dat.
  • |: het of-teken. Je wilt dat dit gebeurt of dat.

##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)"]))

Kinderen

Een categorische variabele met vijf niveaus:
  • geen kinderen
  • 1 kind
  • 2 kinderen
  • 3 kinderen
  • 4 kinderen of meer
##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

Opleiding

Een categorische variabele met vier niveaus:
  • Lager secundair onderwijs
  • Hoger secundair onderwijs
  • Bachelor
  • Master/Doctoraat
##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

Sector

Een binaire/categorische variabele met twee niveaus:
  • Privé sector
  • Publieke sector
##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

Werkstatuut

Een categorische variabele met drie niveaus:
  • Loondienst
  • Zelfstandige
  • Beide
##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

Telewerk

Een continue variabele die het percentage in telewerken meet

##overzicht van variabele
summary(sub2$Telewerk_1)

Duur tewerkstelling binnen zelfde organisatie

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="")

Duur tewerkstelling binnen huidige functie

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="")

Extra demografische berekeningen:

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

Hierdoor kan je er makkelijker naar refereren later.
  • dicho = dichotome/binaire variabelen, categorische variabele waarbij je slechts twee uitkomsten hebt
  • poly = polychotome variabele, categorische variabele waarbij je meer dan twee uitkomsten hebt
##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")

Gemiddelden voor alle controlevariabelen

! Enkel voor continue variabelen

##gemiddelden voor alle controlevariabelen (geldt niet voor categorische)
summary(sub2[,demograf_continue])

Factorladingen nagaan (CFA)

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)

Interne consistentie

Schaal construeren voor elke variabele

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

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

Gemiddelde score berekenen van schalen

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)

Factorscores extraheren

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)

Afhankelijke & onafhankelijke variabelen

Overzicht van variabelen

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))

Normaliteit nagaan

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

Correlaties

O.b.v. somscores

 ### 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)

O.b.v. factorscores

    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)

Categorische controlevariabelen nagaan (one way anova’s)

    ###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))

Continue controlevariabelen nagaan

Zie correlatietabel

Lineaire regressies

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))

Gepruts dat ik nog moet nakijken

SEM analyse

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)