This document reproduces the data analysis outlined in Blaauw et.al 2013 paper title “Comparing the job satisfaction and intention to leave of different categories of health workers in Tanzania, Malawi and South Africa”.
## Loading required package: timeDate
## Loading required package: timeSeries
##
## Rmetrics Package fBasics
## Analysing Markets and calculating Basic Statistics
## Copyright (C) 2005-2014 Rmetrics Association Zurich
## Educational Software for Financial Engineering and Computational Science
## Rmetrics is free software and comes with ABSOLUTELY NO WARRANTY.
## https://www.rmetrics.org --- Mail to: info@rmetrics.org
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following objects are masked from 'package:timeSeries':
##
## filter, lag
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:plyr':
##
## here
#read healthcare provider data
hcp <- read.csv(paste(getwd(),"/healthcareprovider.csv", sep = ""), header= TRUE, skip = 2,
na.strings = ".")
#set up a dataframe for demographics
demo_hcp <- NULL
#regroup redefine relevant demographics
#work experience
demo_hcp$wexp[hcp$hcp_job_lenght <= 36] = "1" #0-3years
demo_hcp$wexp[hcp$hcp_job_lenght > 36 & hcp$hcp_job_lenght <= 60] = "2" #3+ to 5years
demo_hcp$wexp[hcp$hcp_job_lenght > 60 & hcp$hcp_job_lenght <= 120] = "3" #5+ to 10years
demo_hcp$wexp[hcp$hcp_job_lenght > 120 & hcp$hcp_job_lenght <= 180] = "4" #10+ to 15years
demo_hcp$wexp[hcp$hcp_job_lenght > 180] = "5" #15+years
demo_hcp$wexp <- factor(demo_hcp$wexp, labels = c("<= 3years", "3+ to 5years", "5+ to 10years",
"10+ to 15years", "15+years"))
#age
demo_hcp$age[hcp$hcp_age <= 30] = "1"
demo_hcp$age[hcp$hcp_age > 30 & hcp$hcp_age <= 39] = "2"
demo_hcp$age[hcp$hcp_age >= 40] = "3"
demo_hcp$age[is.na(hcp$hcp_age) == T] = NA
demo_hcp$age <- factor(demo_hcp$age, labels = c("<= 30years", "30-39years", ">=40years"))
#gender
#Female "1" and Male "2
demo_hcp$gender = as.numeric(hcp$hcp_sex)
demo_hcp$gender <- factor(demo_hcp$gender, labels = c("Female", "Male"))
#Professional rank
#1 Community Health worker (CHEW), 2 - Other
demo_hcp$prof[hcp$hcp_jobtitle == "Community health extension worker"] = "1"
demo_hcp$prof[hcp$hcp_jobtitle != "Community health extension worker"] = "2"
demo_hcp$prof <- factor(demo_hcp$prof, labels = c("CHEW", "Other"))
#education
#Secondary "1" and tertiary "2"
demo_hcp$educ[hcp$hcp_educ == "Secondary school"] = "1"
demo_hcp$educ[hcp$hcp_educ != "Secondary school"] = "2"
demo_hcp$educ <- factor(demo_hcp$educ, labels = c("Secondary", "Tertiary"))
#distance from work in hours
wkdist <- hm(hcp$work_distant)
demo_hcp$wkdist[wkdist <= hm("1:00")] = "1"
demo_hcp$wkdist[wkdist > hm("1:00")] = "2"
demo_hcp$wkdist <- factor(demo_hcp$wkdist, labels = c("<= 1hour", "> 1hour"))
demo_hcp <- data.frame(demo_hcp)
rm(wkdist)
prop.table(table(demo_hcp$wexp))*100
##
## <= 3years 3+ to 5years 5+ to 10years 10+ to 15years 15+years
## 19.33333 18.66667 32.66667 19.33333 10.00000
prop.table(table(demo_hcp$age))*100
##
## <= 30years 30-39years >=40years
## 40.00000 37.33333 22.66667
prop.table(table(demo_hcp$gender))*100
##
## Female Male
## 88.66667 11.33333
prop.table(table(demo_hcp$prof))*100
##
## CHEW Other
## 60.66667 39.33333
prop.table(table(demo_hcp$educ))*100
##
## Secondary Tertiary
## 2 98
prop.table(table(demo_hcp$wkdist))*100
##
## <= 1hour > 1hour
## 96 4
#create a boxplot of demographic variables
par(mfrow = c(2,3), mar=c(4,2,2,2))
boxplot(as.numeric(demo_hcp$age), xlab = "Age", main = "1: <=30yrs, 2: 30+_39yrs, 3: 39+yrs")
boxplot(as.numeric(demo_hcp$wexp), xlab = "Work Experience",
main="1: <=3yrs, 2: 3+_5yrs, 3: 5+_10yrs, 4: 10+_15yrs 5: 15+yrs")
boxplot(as.numeric(demo_hcp$gender), xlab = "Gender", main = "1: Female and 2: Male")
boxplot(as.numeric(demo_hcp$pr), xlab = "Professional rank", main = "1: CHEW and 2:Other")
boxplot(as.numeric(demo_hcp$educ), xlab = "Education", main = "1: Seconday and 2: Tertiary")
boxplot(as.numeric(demo_hcp$wkdist), xlab = "Work distance",
main="1: <=1hr and 2: >1hrs")
dev.off()
## null device
## 1
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
## The following `from` values were not present in `x`: Very dissatisfied
jbs_sum = NULL
for (n in 1:length(jbs_hcp)) {
jbs_sum <- rbind(jbs_sum, prop.table(table(jbs_hcp[,n]))*100)}
row.names(jbs_sum) = make.names(colnames(jbs_hcp))
jbs_sum
## Dissatisfied Neutral Satisfied
## job_satisfatn 8.0000000 14.000000 78.0000000
## salary_level 32.6666667 21.333333 46.0000000
## allowances 47.3333333 15.333333 37.3333333
## coverage_level 39.3333333 21.333333 39.3333333
## skills_salary 46.0000000 16.000000 38.0000000
## salary_work_vol 48.6486486 14.189189 37.1621622
## meds_available 12.6666667 17.333333 70.0000000
## consumables 12.0000000 12.000000 76.0000000
## protectn_gear 22.6666667 18.000000 59.3333333
## printed_materials 11.4093960 10.067114 78.5234899
## workin_hrs 6.0000000 10.666667 83.3333333
## quant_of_work 16.0000000 18.666667 65.3333333
## work_allocatn 15.3333333 17.333333 67.3333333
## div_workin_hrs 10.0000000 15.333333 74.6666667
## support_provided 4.0000000 8.000000 88.0000000
## duties_variety 3.3333333 10.666667 86.0000000
## duties_skills 4.6666667 8.666667 86.6666667
## prof_respon 4.6666667 6.000000 89.3333333
## harmony_anc_team 1.3333333 5.333333 93.3333333
## recognitn_colleague 4.6666667 95.333333 0.0000000
## recognitn_bosses 2.0000000 2.666667 95.3333333
## respect_bosses 2.0000000 3.333333 94.6666667
## trainin_recvd 16.0000000 6.666667 77.3333333
## anc_selectn_4trainin 14.0000000 10.666667 75.3333333
## trainin_recvd_needs 18.6666667 11.333333 70.0000000
## applyin_knw_recvd 16.6666667 8.666667 74.6666667
## skills_acquired 14.6666667 8.000000 77.3333333
## promotn_opport 7.3825503 8.053691 84.5637584
## anc_pnc_pmtct_outcome 2.6666667 8.666667 88.6666667
## work_quality 2.0000000 2.000000 96.0000000
## prof_popular_image 0.6666667 98.666667 0.6666667
## payment_regularity 24.6666667 18.666667 56.6666667
## job_stability 7.3333333 16.000000 76.6666667
## allowance_regularity 38.6666667 22.666667 38.6666667
## workplace_reinforcement 12.0000000 21.333333 66.6666667
## decisn_makin 11.3333333 22.000000 66.6666667
## perf_info_anc 3.3333333 10.666667 86.0000000
## employment_status 7.3333333 9.333333 83.3333333
pca_jbs <- princomp(test_jbs)
#check correlations of jbs factors
jbs_corr <- cor(test_jbs)
#write.csv(jbs_corr, "JBS_corr.csv")
#to select number of factors
screeplot(pca_jbs, type = "lines", col="red")
#summary(pca_jbs)
#check reliability of components using cronbach's alpha correlation
#0-independent/zero correlation and 1-entirely correlated
ca_jbs <- cronbach(pca_jbs$scores)
ca_jbs$alpha
## [1] -2.280458e-16
#check correlations of pca components
pca_corr <- cor(pca_jbs$scores)
#plot loadings of all JBS PCA components
#subplot1
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,1])
barplot(pca_jbs$loadings[,2])
barplot(pca_jbs$loadings[,3])
title(main = " 1st 3 Job Satisfaction PCA components" , outer = T)
#plot2
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,4])
barplot(pca_jbs$loadings[,5])
barplot(pca_jbs$loadings[,6])
title(main = " 2nd 3 Job Satisfaction PCA components" , outer = T)
#plot3
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,7])
barplot(pca_jbs$loadings[,8])
barplot(pca_jbs$loadings[,9])
title(main = " 3rd 3 Job Satisfaction PCA components" , outer = T)
#plot4
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,10])
barplot(pca_jbs$loadings[,11])
barplot(pca_jbs$loadings[,12])
title(main = " 4th 3 Job Satisfaction PCA components" , outer = T)
#plot5
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,13])
barplot(pca_jbs$loadings[,14])
barplot(pca_jbs$loadings[,15])
title(main = " 5th 3 Job Satisfaction PCA components" , outer = T)
#plot6
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,16])
barplot(pca_jbs$loadings[,17])
barplot(pca_jbs$loadings[,18])
title(main = " 6th 3 Job Satisfaction PCA components" , outer = T)
#plot7
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,19])
barplot(pca_jbs$loadings[,20])
barplot(pca_jbs$loadings[,21])
title(main = " 7th 3 Job Satisfaction PCA components" , outer = T)
#plot8
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,22])
barplot(pca_jbs$loadings[,23])
barplot(pca_jbs$loadings[,24])
title(main = " 8th 3 Job Satisfaction PCA components" , outer = T)
#plot9
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,25])
barplot(pca_jbs$loadings[,26])
barplot(pca_jbs$loadings[,27])
title(main = " 9th 3 Job Satisfaction PCA components" , outer = T)
#plot10
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,28])
barplot(pca_jbs$loadings[,29])
barplot(pca_jbs$loadings[,30])
title(main = " 10th 3 Job Satisfaction PCA components" , outer = T)
#plot11
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,31])
barplot(pca_jbs$loadings[,32])
barplot(pca_jbs$loadings[,33])
title(main = " 11th 3 Job Satisfaction PCA components" , outer = T)
#plot12
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,34])
barplot(pca_jbs$loadings[,35])
barplot(pca_jbs$loadings[,36])
title(main = " 12th 3 Job Satisfaction PCA components" , outer = T)
#plot13
par(mfrow = c(3,1), mar=c(2,2,2,4), oma=c(2,2,2,0))
barplot(pca_jbs$loadings[,37])
barplot(pca_jbs$loadings[,38])
title(main = " 13th 3 Job Satisfaction PCA components" , outer = T)
dev.off()
## null device
## 1
#resize jbs dataset dimensions to dimensions before NA's were omitted
check3 <- rbind(pca_jbs$scores,rep(NA,38),rep(NA,38),rep(NA,38),rep(NA,38))
check4 <- data.frame(lapply(as.list(demo_hcp),as.numeric))
#The 1st model selects components that identify with job satisfaction categories surveyed
fit_jbs <- lm(as.numeric(jbs_hcp$job_satisfatn) ~ check4$wexp + check4$age + check4$gender +
+ check4$prof + check4$educ + check4$wkdist + check3[,c(1:2,4:6,9,36,38)])
#The 2nd model selects components that identify with job satisfaction categories surveyed
fit2_jbs <- lm(as.numeric(jbs_hcp$job_satisfatn) ~ check4$wexp + check4$age + check4$gender +
+ check4$prof + check4$educ + check4$wkdist + check3[,1])
#The 3rd model selects components that identify with job satisfaction categories surveyed
fit3_jbs <- lm(as.numeric(jbs_hcp$job_satisfatn) ~ check4$wexp + check4$age + check4$gender +
+ check4$prof + check4$educ + check4$wkdist + check3[,c(1:2)])
#The 4th model selects the first 9 components based on the scree test
fit4_jbs <- lm(as.numeric(jbs_hcp$job_satisfatn) ~ check4$wexp + check4$age + check4$gender +
+ check4$prof + check4$educ + check4$wkdist + check3[,c(1:9)])
#the 5th model selects the first 13 components based on a 85% cummulative proportion of variance
fit5_jbs <- lm(as.numeric(jbs_hcp$job_satisfatn) ~ check4$wexp + check4$age + check4$gender +
+ check4$prof + check4$educ + check4$wkdist + check3[,c(1:13)])
f1 <- summary(fit_jbs)
f1$r.squared
## [1] 0.09883801
f2 <- summary(fit2_jbs)
f2$r.squared
## [1] 0.0705354
f3 <- summary(fit3_jbs)
f3$r.squared
## [1] 0.07261697
f4 <- summary(fit4_jbs)
f4$r.squared
## [1] 0.1804994
f5 <- summary(fit5_jbs)
f5$r.squared
## [1] 0.1994728
The last model is the best fit with the largest Rsquared 0.1994728.
#INTENT TO LEAVE SECTION
#subset Intent to leave (I2l) variables
I2l_hcp <- data.frame(cbind(as.character(hcp$leavin_curr_work), as.character(hcp$leaving_niaja)))
names(I2l_hcp) <- make.names(c("Leave work", "Leave Nigeria"))
#remap values for intention to leave work and intention to leave nigeria
#NO - 1 and Yes - 2
I2l_hcp$Leave.work <- mapvalues(I2l_hcp$Leave.work,
from = c("Very often", "Fairly", "Often", "Occasionally",
"Rarely", "Almost never", "Never"),
to = c("2","2","2","2","1","1","1"))
I2l_hcp$Leave.Nigeria <- mapvalues(I2l_hcp$Leave.Nigeria,
from = c("Very often", "Fairly", "Often", "Occasionally",
"Rarely", "Almost never", "Never"),
to = c("2","2","2","2","1","1","1"))
test_i2l <- na.omit(I2l_hcp)
I2l_hcp <- lapply(as.list(I2l_hcp), factor, levels = c("1", "2") ,labels = c("No", "Yes"))
I2l_hcp <- data.frame(I2l_hcp)
I2l_sum = NULL
for (n in 1:length(I2l_hcp)) {
I2l_sum <- rbind(I2l_sum, prop.table(table(I2l_hcp[,n]))*100)}
row.names(I2l_sum) = make.names(colnames(I2l_hcp))
I2l_sum
## No Yes
## Leave.work 30.66667 69.33333
## Leave.Nigeria 34.00000 66.00000
#boxplots
par(mfrow = c(1,2), mar = c(2,2,4,2))
boxplot(as.numeric(test_i2l$Leave.work), main="Leave Work 1: No and 2: Yes")
boxplot(as.numeric(test_i2l$Leave.Nigeria), main="Leave Nigeria 1: No and 2: Yes")
dev.off()
## null device
## 1
##regress intent to leave work by demogrpahic variables and overall job satisfaction
check5 <- as.matrix(rbind(test_jbs,rep(NA,38),rep(NA,38),rep(NA,38),rep(NA,38)))
fit_I2l <- glm(as.numeric(test_i2l$Leave.work)-1 ~ check4$age + check4$wexp + check4$gender + check4$prof + check4$educ + check4$wkdist + check5[,1], family = binomial)
summary(fit_I2l)
##
## Call:
## glm(formula = as.numeric(test_i2l$Leave.work) - 1 ~ check4$age +
## check4$wexp + check4$gender + check4$prof + check4$educ +
## check4$wkdist + check5[, 1], family = binomial)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.9930 -1.3376 0.7440 0.8732 1.3861
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.99597 2.93864 -0.679 0.4970
## check4$age -0.28381 0.29083 -0.976 0.3291
## check4$wexp -0.09176 0.17823 -0.515 0.6067
## check4$gender 0.74384 0.64854 1.147 0.2514
## check4$prof 0.21770 0.39782 0.547 0.5842
## check4$educ 1.84261 1.28005 1.439 0.1500
## check4$wkdist -1.83913 0.90974 -2.022 0.0432 *
## check5[, 1] 0.26626 0.30029 0.887 0.3753
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 181.94 on 145 degrees of freedom
## Residual deviance: 173.43 on 138 degrees of freedom
## (4 observations deleted due to missingness)
## AIC: 189.43
##
## Number of Fisher Scoring iterations: 4
##regress intent to leave work by demogrpahic variables and uncorrelated job satisfaction factors
fit2_I2l <- glm(as.numeric(test_i2l$Leave.work)-1 ~ check4$age + check4$wexp + check4$gender + check4$prof + check4$educ + check4$wkdist + check5[,c(1:2,7,9:11,15,18:24,28:31,38)], family = binomial)
summary(fit2_I2l)
##
## Call:
## glm(formula = as.numeric(test_i2l$Leave.work) - 1 ~ check4$age +
## check4$wexp + check4$gender + check4$prof + check4$educ +
## check4$wkdist + check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31,
## 38)], family = binomial)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.8956 -0.9293 0.5352 0.8332 2.4996
##
## Coefficients:
## Estimate
## (Intercept) -7.722839
## check4$age -0.122410
## check4$wexp -0.173120
## check4$gender 2.509004
## check4$prof 0.033960
## check4$educ 1.022600
## check4$wkdist -1.662107
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 0.787298
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level -0.517419
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available 0.016833
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear -0.034357
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 0.214182
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs -0.345347
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided -0.004555
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon -0.617132
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team -1.510849
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 4.660266
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 0.904276
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses -0.226048
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 0.299771
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin -0.272089
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport 0.329260
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome -0.558378
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality 0.378480
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image 0.225058
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status -0.072078
## Std. Error
## (Intercept) 7.322036
## check4$age 0.338997
## check4$wexp 0.209060
## check4$gender 1.295906
## check4$prof 0.476183
## check4$educ 1.653941
## check4$wkdist 1.046297
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 0.476974
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level 0.282813
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available 0.413937
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear 0.302046
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 0.423177
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs 0.499849
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided 0.617342
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon 0.667898
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team 1.061888
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 1.934999
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 0.816853
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses 0.974034
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 0.702360
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin 0.735072
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport 0.433201
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome 0.734509
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality 0.962357
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image 1.954724
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status 0.452040
## z value
## (Intercept) -1.055
## check4$age -0.361
## check4$wexp -0.828
## check4$gender 1.936
## check4$prof 0.071
## check4$educ 0.618
## check4$wkdist -1.589
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 1.651
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level -1.830
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available 0.041
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear -0.114
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 0.506
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs -0.691
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided -0.007
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon -0.924
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team -1.423
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 2.408
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 1.107
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses -0.232
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 0.427
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin -0.370
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport 0.760
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome -0.760
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality 0.393
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image 0.115
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status -0.159
## Pr(>|z|)
## (Intercept) 0.2915
## check4$age 0.7180
## check4$wexp 0.4076
## check4$gender 0.0529
## check4$prof 0.9431
## check4$educ 0.5364
## check4$wkdist 0.1122
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 0.0988
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level 0.0673
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available 0.9676
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear 0.9094
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 0.6128
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs 0.4896
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided 0.9941
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon 0.3555
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team 0.1548
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 0.0160
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 0.2683
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses 0.8165
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 0.6695
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin 0.7113
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport 0.4472
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome 0.4471
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality 0.6941
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image 0.9083
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status 0.8733
##
## (Intercept)
## check4$age
## check4$wexp
## check4$gender .
## check4$prof
## check4$educ
## check4$wkdist
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn .
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level .
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague *
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 181.94 on 145 degrees of freedom
## Residual deviance: 151.77 on 120 degrees of freedom
## (4 observations deleted due to missingness)
## AIC: 203.77
##
## Number of Fisher Scoring iterations: 5
##regress intent to leave Nigeria by demogrpahic variables and overall job satisfaction
fit3_I2l <- glm(as.numeric(test_i2l$Leave.Nigeria)-1 ~ check4$age + check4$wexp + check4$gender + check4$prof + check4$educ + check4$wkdist + check5[,1] , family = binomial)
summary(fit3_I2l)
##
## Call:
## glm(formula = as.numeric(test_i2l$Leave.Nigeria) - 1 ~ check4$age +
## check4$wexp + check4$gender + check4$prof + check4$educ +
## check4$wkdist + check5[, 1], family = binomial)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6724 -1.3364 0.8586 0.9695 1.1890
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 30.62024 1667.64429 0.018 0.985
## check4$age -0.14422 0.28587 -0.504 0.614
## check4$wexp -0.12015 0.17247 -0.697 0.486
## check4$gender 0.19705 0.56801 0.347 0.729
## check4$prof 0.23809 0.38402 0.620 0.535
## check4$educ -14.71441 833.82188 -0.018 0.986
## check4$wkdist -0.71665 0.85163 -0.842 0.400
## check5[, 1] 0.07714 0.29144 0.265 0.791
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 188.93 on 145 degrees of freedom
## Residual deviance: 184.03 on 138 degrees of freedom
## (4 observations deleted due to missingness)
## AIC: 200.03
##
## Number of Fisher Scoring iterations: 14
##regress intent to leave Nigeria by demogrpahic variables and uncorrelated job satisfaction renumeration and stability factors
fit4_I2l <- glm(as.numeric(test_i2l$Leave.Nigeria)-1 ~ check4$age + check4$wexp + check4$gender + check4$prof + check4$educ + check4$wkdist + check5[,c(1:2,7,9:11,15,18:24,28:31,38)], family = binomial)
summary(fit4_I2l)
##
## Call:
## glm(formula = as.numeric(test_i2l$Leave.Nigeria) - 1 ~ check4$age +
## check4$wexp + check4$gender + check4$prof + check4$educ +
## check4$wkdist + check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31,
## 38)], family = binomial)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.3440 -0.8593 0.5228 0.8172 2.1451
##
## Coefficients:
## Estimate
## (Intercept) 2.705e+01
## check4$age -4.953e-02
## check4$wexp -3.630e-01
## check4$gender 7.855e-01
## check4$prof 2.360e-01
## check4$educ -1.453e+01
## check4$wkdist -8.517e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 4.873e-03
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level -2.840e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available -3.381e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear -3.752e-02
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 3.434e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs -4.627e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided 2.012e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon -1.514e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team -1.283e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 9.640e-02
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 2.521e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses 4.814e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 1.567e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin -1.913e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport -9.233e-02
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome 1.454e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality -9.042e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image -7.336e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status -2.063e-02
## Std. Error
## (Intercept) 2.566e+03
## check4$age 3.520e-01
## check4$wexp 2.174e-01
## check4$gender 8.130e-01
## check4$prof 4.742e-01
## check4$educ 1.283e+03
## check4$wkdist 1.013e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 5.009e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level 2.646e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available 4.204e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear 3.013e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 4.507e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs 5.051e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided 6.329e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon 8.564e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team 9.291e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 1.482e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 1.117e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses 9.847e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 9.448e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin 9.718e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport 4.885e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome 6.700e-01
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality 1.209e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image 2.525e+00
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status 4.748e-01
## z value
## (Intercept) 0.011
## check4$age -0.141
## check4$wexp -1.670
## check4$gender 0.966
## check4$prof 0.498
## check4$educ -0.011
## check4$wkdist -0.841
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 0.010
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level -1.073
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available -0.804
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear -0.125
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 0.762
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs -0.916
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided 3.180
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon -1.768
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team -1.381
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 0.065
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 2.258
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses 0.489
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 1.658
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin -1.969
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport -0.189
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome 2.170
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality -0.748
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image -0.291
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status -0.043
## Pr(>|z|)
## (Intercept) 0.99159
## check4$age 0.88809
## check4$wexp 0.09498
## check4$gender 0.33396
## check4$prof 0.61868
## check4$educ 0.99097
## check4$wkdist 0.40049
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn 0.99224
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level 0.28308
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available 0.42130
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear 0.90090
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials 0.44613
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs 0.35963
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided 0.00147
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon 0.07711
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team 0.16742
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague 0.94814
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses 0.02396
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses 0.62496
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd 0.09725
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin 0.04897
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport 0.85009
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome 0.03004
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality 0.45444
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image 0.77138
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status 0.96534
##
## (Intercept)
## check4$age
## check4$wexp .
## check4$gender
## check4$prof
## check4$educ
## check4$wkdist
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]job_satisfatn
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]salary_level
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]meds_available
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]protectn_gear
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]printed_materials
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]workin_hrs
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]support_provided **
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_respon .
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]harmony_anc_team
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_colleague
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]recognitn_bosses *
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]respect_bosses
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]trainin_recvd .
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_selectn_4trainin *
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]promotn_opport
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]anc_pnc_pmtct_outcome *
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]work_quality
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]prof_popular_image
## check5[, c(1:2, 7, 9:11, 15, 18:24, 28:31, 38)]employment_status
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 188.93 on 145 degrees of freedom
## Residual deviance: 148.66 on 120 degrees of freedom
## (4 observations deleted due to missingness)
## AIC: 200.66
##
## Number of Fisher Scoring iterations: 15
Only distance from work significantly predicts intention to leave among the demographic variables and there no association between overall job satisfaction and intent to leave
In addition, recognition by colleagues issignificantly associated with intent to leave work when uncorrelated job satisfaction factors are included in the model
Neither distance from work and overall job satisfaction is associated with intention to leave Nigeria.
In addition, support provided by other members of the team, recognition by bosses, anc selection for training, and ouctome of ANC/PNC/PMTCT are significantly associated with intent to leave Nigeria when uncorrelated job satisfaction factors are included in the model