Za oba raziskovalna vprašanja sem uporabljal isti vir ki sem ga našel na spletni strani https://www.kaggle.com/datasets/adityaab1407/employee-productivity-and-satisfaction-hr-data “Employee Productivity and Satisfaction HR Data”.
ALI SO MED MOŠKIMI IN ŽENSKAMI RAZLIKE V PRODUKTIVNOSTI NA DELOVNEM MESTU?
1.1 PODATKI
podatki <- read.table("~/Documents/Program R /Domaca naloga 1 primer/hr_dashboard_data.csv", header = TRUE, sep = ",", dec = ".")
head(podatki)
## Name Age Gender Projects.Completed Productivity....
## 1 Douglas Lindsey 25 Male 11 57
## 2 Anthony Roberson 59 Female 19 55
## 3 Thomas Miller 30 Male 8 87
## 4 Joshua Lewis 26 Female 1 53
## 5 Stephanie Bailey 43 Male 14 3
## 6 Jonathan King 24 Male 5 63
## Satisfaction.Rate.... Feedback.Score Department Position Joining.Date
## 1 25 4.7 Marketing Analyst Jan-20
## 2 76 2.8 IT Manager Jan-99
## 3 10 2.4 IT Analyst Jan-17
## 4 4 1.4 Marketing Intern Jan-22
## 5 9 4.5 IT Team Lead Jan-05
## 6 33 4.2 Sales Junior Developer Jan-21
## Salary
## 1 63596
## 2 112540
## 3 66292
## 4 38303
## 5 101133
## 6 48740
summary(podatki[ ,c("Gender", "Productivity....")])
## Gender Productivity....
## Length:200 Min. : 0.00
## Class :character 1st Qu.:23.00
## Mode :character Median :45.00
## Mean :46.76
## 3rd Qu.:70.00
## Max. :98.00
1.2 ANALIZA
shapiro.test(podatki[podatki$Gender == 'Male',]$Productivity) #Shapiro test s katerim preverimo ali so podatki normalno porazdeljeni. V mojem primeru je za moški spol p vrednost manjša od 0.05 kar pomeni, da podatki niso normalno porazdeljeni
##
## Shapiro-Wilk normality test
##
## data: podatki[podatki$Gender == "Male", ]$Productivity
## W = 0.95658, p-value = 0.002309
shapiro.test(podatki[podatki$Gender == 'Female',]$Productivity) #enak preizkus sem opravil tudi za ženski spol in podatki pavtako niso normalno porazdeljeni, kar pomeni, da bomo morali opraviti neparametrični preizkus.
##
## Shapiro-Wilk normality test
##
## data: podatki[podatki$Gender == "Female", ]$Productivity
## W = 0.95269, p-value = 0.001254
library(psych)
describeBy(podatki$Productivity...., g = podatki$Gender) #opisna statistika za oba spola
##
## Descriptive statistics by group
## group: Female
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 100 42.97 28.24 41 42.02 35.58 0 96 96 0.23 -1.08 2.82
## ------------------------------------------------------------
## group: Male
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 100 50.54 28.46 47 50.64 34.1 0 98 98 0.04 -1.16 2.85
Spodaj je opis podatkov iz opisne statistike. Ker gre v mojem primeru za neparametričen preizkus sem osredotočen na mediano.
Iz opisne statistike za ženske lahko razberem sledeče:
Iz opisne statistike za moške lahko razberem sledeče:
1.3. UGOTOVITVE
wilcox.test(podatki$Productivity.... ~ podatki$Gender,
paired = FALSE,
correct = FALSE,
exact = FALSE,
alternative = "two.sided")
##
## Wilcoxon rank sum test
##
## data: podatki$Productivity.... by podatki$Gender
## W = 4233, p-value = 0.06089
## alternative hypothesis: true location shift is not equal to 0
Na podlagi vzorčnih podatkov nisem uspel ugotoviti, da bi se mediani produktivnosti na delovnem mestu med moškimi in ženskami razlikovali pri p=0.06089. To pomeni, da nemorem zavrniti H0.
OPRAVIL BOM ŠE PARAMETRIČNI PREIZKUS:
podatki$GenderF <- factor(podatki$Gender,
levels = c("Male", "Female"),
labels = c(1, 2))
Da bi lahko izračunal Levenov test homogenosti sem moral spremeljivko Gender spremeniti v factor.
#install.packages("car")
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:psych':
##
## logit
leveneTest(podatki$Productivity...., podatki$GenderF)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 0.0096 0.9222
## 198
H0= homogenost varianc H1= heterogenost varianc
Levenov test uporabljamo za preizkušanje enakosti varianc. V mojem prmeru je p>0.05 kar potrjuje, da so variance homogene in nemoremo zavrniti H0.
ANOVA <- aov(Productivity.... ~ GenderF,
data = podatki)
summary(ANOVA)
## Df Sum Sq Mean Sq F value Pr(>F)
## GenderF 1 2865 2865.2 3.565 0.0605 .
## Residuals 198 159114 803.6
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Na podlagi analize variance nemorem zavrniti H0 saj je p=0.0605 in sprejmem sklep, da nemorem z zagtovostjo trditi, da se produktivnost med spoloma razlikuje.
UGOTOVITVE:
Na podlagi obeh preizkusov sem ugotovil, da je za moje raziskovalno vprašanje bolj primeren neparametričen.
ODGOVOR: NA PODLAGI VZORČNIH PODATKOV SEM UGOTOVIL DA NEMOREM Z ZAGOTOVOSTJO TRDITI, DA SE PRODUKTIVNOST MED SPOLOMA RAZLIKUJE.
ALI NA ŠTEVILO ZAKLJUČENIH PROJEKTOV VPLIVA STAROST, PRODUKTIVNOST, ZADOVOLJSTVO ZAPOSLENIH IN PLAČE?
Zgoraj omenjene spremenljivke sem si izbral, ker predvidevam, da vplivajo na število zaključenih projektov. Izbral sem si jih zato saj me zanima kolikšen vpliv dejansko imajo.
2.1 PODATKI
head(podatki)
## Name Age Gender Projects.Completed Productivity....
## 1 Douglas Lindsey 25 Male 11 57
## 2 Anthony Roberson 59 Female 19 55
## 3 Thomas Miller 30 Male 8 87
## 4 Joshua Lewis 26 Female 1 53
## 5 Stephanie Bailey 43 Male 14 3
## 6 Jonathan King 24 Male 5 63
## Satisfaction.Rate.... Feedback.Score Department Position Joining.Date
## 1 25 4.7 Marketing Analyst Jan-20
## 2 76 2.8 IT Manager Jan-99
## 3 10 2.4 IT Analyst Jan-17
## 4 4 1.4 Marketing Intern Jan-22
## 5 9 4.5 IT Team Lead Jan-05
## 6 33 4.2 Sales Junior Developer Jan-21
## Salary GenderF
## 1 63596 1
## 2 112540 2
## 3 66292 1
## 4 38303 2
## 5 101133 1
## 6 48740 1
2.2 ANALIZA
library(car)
scatterplotMatrix(podatki[ , c("Age", "Projects.Completed", "Productivity....", "Satisfaction.Rate....", "Salary")], smooth=FALSE)
library(Hmisc)
##
## Attaching package: 'Hmisc'
## The following object is masked from 'package:psych':
##
## describe
## The following objects are masked from 'package:base':
##
## format.pval, units
rcorr(as.matrix(podatki[, c("Age", "Projects.Completed", "Productivity....", "Satisfaction.Rate....", "Salary")]))
## Age Projects.Completed Productivity....
## Age 1.00 0.76 0.02
## Projects.Completed 0.76 1.00 0.06
## Productivity.... 0.02 0.06 1.00
## Satisfaction.Rate.... 0.04 -0.01 0.05
## Salary 0.83 0.87 0.03
## Satisfaction.Rate.... Salary
## Age 0.04 0.83
## Projects.Completed -0.01 0.87
## Productivity.... 0.05 0.03
## Satisfaction.Rate.... 1.00 -0.02
## Salary -0.02 1.00
##
## n= 200
##
##
## P
## Age Projects.Completed Productivity....
## Age 0.0000 0.7658
## Projects.Completed 0.0000 0.3854
## Productivity.... 0.7658 0.3854
## Satisfaction.Rate.... 0.6199 0.8792 0.4829
## Salary 0.0000 0.0000 0.7198
## Satisfaction.Rate.... Salary
## Age 0.6199 0.0000
## Projects.Completed 0.8792 0.0000
## Productivity.... 0.4829 0.7198
## Satisfaction.Rate.... 0.7970
## Salary 0.7970
fit <- lm(Projects.Completed ~ + Age + Productivity.... + Satisfaction.Rate.... + Salary,
data = podatki)
vif(fit)
## Age Productivity.... Satisfaction.Rate....
## 3.322670 1.003222 1.011425
## Salary
## 3.320714
S preizkusom vif sem preveril ali je morda prisotna previsoka povezanost med izbranimi spremenljivkami.
Vrednost mora biti manjša od 5 in čimbližje 1. V mojem primeru so vse vrednosti manjše od 5 kar pomeni, da med pojasnjevalnimi spremenljivkami ni prevelike povezanosti.
mean(vif(fit))
## [1] 2.164508
S funkcijo mean vif sem preveril koliko znaša povprečje VIF statistike.
podatki$StdOstanki <- round(rstandard(fit), 3)
podatki$CooksD <- round(cooks.distance(fit), 3)
hist(podatki$StdOstanki,
xlab = "Standarizirani ostanki",
ylab = "Frekvenca",
main = "Histogram standardiziranih ostankov")
S histogramom standardizianih ostankov sem preveril morebitno prisotnost
osamelcev. Ker so vsi vzorci v intervalu med -3 in 3, nisem zavrgel
nobenega.
hist(podatki$CooksD,
xlab = "Cookove razdalje",
ylab = "Frekvenca",
main = "Histogram Cookovih razdalj")
S histogramom Cookovih razdalj sem preveril ali je morda katera enota z
močnim vplivom. V mojem primeru ni nobene enote, ki bi imela močen
vpliv.
podatki$StdOcenVrednosti <- scale(fit$fitted.values)
scatterplot(y = podatki$StdOstanki, x = podatki$StdOcenVrednosti,
ylab = "Standarizirani ostanki",
xlab = "Standardizirane ocenjene vrednosti",
smooth = FALSE)
Na zgornjem grafikonu lahko razberem, da je prisotna heteroskedastičnost
in linearnost.
summary(fit)
##
## Call:
## lm(formula = Projects.Completed ~ +Age + Productivity.... + Satisfaction.Rate.... +
## Salary, data = podatki)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.5236 -2.1677 -0.3891 2.3984 6.6149
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.491e+00 9.440e-01 -5.816 2.43e-08 ***
## Age 6.202e-02 4.106e-02 1.510 0.133
## Productivity.... 8.876e-03 7.749e-03 1.145 0.253
## Satisfaction.Rate.... -3.537e-04 7.672e-03 -0.046 0.963
## Salary 1.879e-04 1.485e-05 12.654 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.114 on 195 degrees of freedom
## Multiple R-squared: 0.7687, Adjusted R-squared: 0.764
## F-statistic: 162 on 4 and 195 DF, p-value: < 2.2e-16
Iz zgornjih podatkov lahko razberem, da ima spremenljivka b4 oziroma Salary (plača) vpliv na število končanih projektov. Če se plača poveča za eno enoto USD se število projektov poveča za 1.879e-04.
Za leta, produktivnost in Zadovoljstvo na delovnem mestu nemoremo z zagotovostjo trditi, da obstaja povezava z končanimi projekti.
Formula: Projects.Completed= -5.491e+00+6.202e-02Age+8.876e-03Productivity….-3.537e-04*Satisfaction.Rate….+1.879e-04Salary
Multiple R-squared: pojasnil sem 76,87% variabilnosti
#install.packages("ppcor")
library(ppcor)
## Loading required package: MASS
parcialna_korelacija <- pcor(podatki[ , c("Age", "Projects.Completed", "Productivity....", "Satisfaction.Rate....", "Salary")])
round(parcialna_korelacija$estimate, 2)
## Age Projects.Completed Productivity....
## Age 1.00 0.11 -0.01
## Projects.Completed 0.11 1.00 0.08
## Productivity.... -0.01 0.08 1.00
## Satisfaction.Rate.... 0.09 0.00 0.05
## Salary 0.54 0.67 -0.04
## Satisfaction.Rate.... Salary
## Age 0.09 0.54
## Projects.Completed 0.00 0.67
## Productivity.... 0.05 -0.04
## Satisfaction.Rate.... 1.00 -0.06
## Salary -0.06 1.00
Z parcialno korelacijo smo pojasnili kakšna je povezava med spremenljivkami. Povezava med Salary in Projects.Completed je pozitivna in srednje močna ob izločenemu vplivu Age, Projects.completed, Productivity… in Satisfaction.Rate.
#install.packages("lm.beta")
library(lm.beta)
lm.beta(fit)
##
## Call:
## lm(formula = Projects.Completed ~ +Age + Productivity.... + Satisfaction.Rate.... +
## Salary, data = podatki)
##
## Standardized Coefficients::
## (Intercept) Age Productivity....
## NA 0.094813693 0.039511453
## Satisfaction.Rate.... Salary
## -0.001596825 0.794164302
S zgornjo funkcijo izračunamo standardizirane regresijske koeficiente. Višja kot je absolutna vrednost bolje pojasnjuje. V našem primeru najbolje pojasnjuje Salary nato Age, Productivity…. in kot zadnja Satisfaction.Rate…