Kadrovska služba, ki skrbi za izobraževanje zaposlenih, je poskušala določiti optimalno število izobraževanj za skupino zaposlenih, ki delajo na proizvodni liniji. Naključno so izbrali 38 novih zaposlenih in opazovali število izdelkov, ki so jih proizvedli na mesec. Nato so jih poslali na prvo usposabljanje in ponovili opazovanje števila izdelanih izdelkov. Poslali so jih tudi na drugo in tretje usposabljanje. Koliko izobraževanj naj podjetje ponudi zaposlenim na podlagi teh podatkov?

enota: zaposlen vzorec: 38 spr: število izdelkov, ki so jih proizvedli na začetku, po usposabljanju 1 in po usposabljanju 2 in po usposabljanju 3

library(readxl)
podatki <- read_xlsx("./Produktivnost.xlsx")
podatki <- as.data.frame(podatki)
head(podatki) ##širok format 
##   ID Zacetek PU1 PU2 PU3
## 1  1      85 133 136 134
## 2  2      90 123 138 135
## 3  3      96 120 135 141
## 4  4      93 129 132 134
## 5  5      84 117 138 131
## 6  6      91 128 132 141

Opis:

H0: povp začetek = povp PU1 = povp PU2 = povp PU3 H1: Vsaj eno povprečje je drugačno

Repitet ANOVA - ANALIZA VARIANCE ZA ODVOSNE VZORCE

PREDPOSTAVKE ZA TA PRIZKUS: - normalnost porazdelitve v vseh spremenljivkah (naredimo 4 Shapiro -Wilkove poizkuse) - speričnost (VARIANCE RAZLIK -diferenc MORAJO BITI ENAKE) - popravljamo s Mavchlijevim prizkusom

 H0: VSE VARIANCE RAZLIK SO ENAKE
 H1: Vsaj ena je drugačna
library(rstatix)
## Warning: package 'rstatix' was built under R version 4.4.2
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.2
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2
## ── Conflicts ──────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks rstatix::filter(), stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
podatki_dolg <- podatki %>%
                 pivot_longer(                               #pivot_longer delamo iz širokega v dolg format
                   cols = c("Zacetek", "PU1", "PU2", "PU3"), 
                   names_to = "Obdobje", 
                   values_to = "Proizvodi") %>%
                 as.data.frame()

podatki_dolg$Obdobje <- factor(podatki_dolg$Obdobje,
                               levels = c("Zacetek", "PU1", "PU2", "PU3"),
                               labels = c("Zacetek", "PU1", "PU2", "PU3"))

head(podatki_dolg, 10)
##    ID Obdobje Proizvodi
## 1   1 Zacetek        85
## 2   1     PU1       133
## 3   1     PU2       136
## 4   1     PU3       134
## 5   2 Zacetek        90
## 6   2     PU1       123
## 7   2     PU2       138
## 8   2     PU3       135
## 9   3 Zacetek        96
## 10  3     PU1       120
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.4.2
ggboxplot(podatki_dolg, 
          x = "Obdobje", 
          y = "Proizvodi",
          xlab = "Obdobje",
          ylab = "Število proizvodov") 

največje razlike so med začetkom in PU1. Izgledajo precej normalno porazdeljene

library(rstatix)

podatki_dolg %>%
  group_by(Obdobje) %>%
  shapiro_test(Proizvodi)
## # A tibble: 4 × 4
##   Obdobje variable  statistic      p
##   <fct>   <chr>         <dbl>  <dbl>
## 1 Zacetek Proizvodi     0.975 0.545 
## 2 PU1     Proizvodi     0.959 0.179 
## 3 PU2     Proizvodi     0.957 0.146 
## 4 PU3     Proizvodi     0.947 0.0685

Normalnost je izpolnjena saj so vse p-vr. > od 0,05

library(rstatix)

podatki_dolg %>%
  group_by(Obdobje) %>%
  get_summary_stats(Proizvodi, type = "mean_sd") #vzami dolg format, grupiraj po obdobju in kaj nam naj izpiše
## # A tibble: 4 × 5
##   Obdobje variable      n  mean    sd
##   <fct>   <fct>     <dbl> <dbl> <dbl>
## 1 Zacetek Proizvodi    38  89.9  4.53
## 2 PU1     Proizvodi    38 125.   4.97
## 3 PU2     Proizvodi    38 135.   5.50
## 4 PU3     Proizvodi    38 138.   4.95

Pri povprelju vidimo največjo razliko med začetkom in prvim uposabljanjem.

library(rstatix)

#rANOVA
ANOVA_results <- anova_test(dv = Proizvodi, #Dependent variable - glavna spremenljivka
                            wid = ID, #Subject identifier -ID (povemo da prve štiri meritve pripadajo isti osebi)
                            within = Obdobje, #Within-subject factor variable - gledam znotraj obdobji, za vsako obdobje ločeno
                            data = podatki_dolg)

ANOVA_results #Summary of results.
## ANOVA Table (type III tests)
## 
## $ANOVA
##    Effect DFn DFd      F        p p<.05   ges
## 1 Obdobje   3 111 760.45 8.09e-74     * 0.938
## 
## $`Mauchly's Test for Sphericity`
##    Effect     W     p p<.05
## 1 Obdobje 0.981 0.983      
## 
## $`Sphericity Corrections`
##    Effect   GGe       DF[GG]    p[GG] p[GG]<.05   HFe       DF[HF]
## 1 Obdobje 0.987 2.96, 109.54 7.01e-73         * 1.082 3.25, 120.11
##      p[HF] p[HF]<.05
## 1 8.09e-74         *

$Mauchly's Test for Sphericity S TEM SMO PREVERILI SPERIČNOST IN KER SPERIČNOST VELJA, GLEDAMO PRVO P. VR. Effect W p p<.05 1 Obdobje 0.981 0.983

Uporabimo p-vr<0,01 (PRVO P. VR v prvi vrstici= 8,.09e-74), ker speričnost v drugi vrstici velja.

če bi bila speričnost kršena (v drugi vsrtici) bi gledali ZADNJO P- VR. - 7.01e-73.

get_anova_table(ANOVA_results, correction = "auto")
## ANOVA Table (type III tests)
## 
##    Effect DFn DFd      F        p p<.05   ges
## 1 Obdobje   3 111 760.45 8.09e-74     * 0.938

z “ges” merimo velikost učinka - vedno uporabljamo Chone (slajd 6 - 5.predavanje)

library(effectsize)
## 
## Attaching package: 'effectsize'
## The following objects are masked from 'package:rstatix':
## 
##     cohens_d, eta_squared
interpret_eta_squared(0.938, rules = "cohen1992") #kjer je ges delamo s eta squerom
## [1] "large"
## (Rules: cohen1992)

uliek je visok oz. razlike so velike

library(rstatix)

#Comparing all paires of variables - združenje vseh parov variabilnosti oz VSE MOŽNE KOMBINACIJE
pwc <- podatki_dolg %>%
  pairwise_t_test(Proizvodi ~ Obdobje, 
                  paired = TRUE,
                  p.adjust.method = "bonferroni") #naredimo popravek p.vr., ki jih pomnožimo s 6, ker imamo 6 kombinacij

pwc
## # A tibble: 6 × 10
##   .y.      group1 group2    n1    n2 statistic    df        p    p.adj
## * <chr>    <chr>  <chr>  <int> <int>     <dbl> <dbl>    <dbl>    <dbl>
## 1 Proizvo… Zacet… PU1       38    38    -32.4     37 9.74e-29 5.84e-28
## 2 Proizvo… Zacet… PU2       38    38    -39.7     37 6.28e-32 3.77e-31
## 3 Proizvo… Zacet… PU3       38    38    -44.7     37 8.16e-34 4.9 e-33
## 4 Proizvo… PU1    PU2       38    38     -8.35    37 4.88e-10 2.93e- 9
## 5 Proizvo… PU1    PU3       38    38    -11.6     37 6.70e-14 4.02e-13
## 6 Proizvo… PU2    PU3       38    38     -2.49    37 1.7 e- 2 1.04e- 1
## # ℹ 1 more variable: p.adj.signif <chr>

s pomočjo “****” ali p vr. ugotavljamo zavračanje ali ne zavračanje

library(rstatix)

#Friedman ANOVA.; Uporabimo, če normalnost ni izpolnjena

FriedmanANOVA <- friedman_test(Proizvodi ~ Obdobje | ID,
                               data = podatki_dolg)

FriedmanANOVA #Summary of results.
## # A tibble: 1 × 6
##   .y.           n statistic    df        p method       
## * <chr>     <int>     <dbl> <dbl>    <dbl> <chr>        
## 1 Proizvodi    38      98.9     3 2.69e-21 Friedman test

H0: Lokacoije porazdelitve so enake H1: Lokacije porazdelitev niso enake.

Zavrenmo H0

library(effectsize)
effectsize::kendalls_w(Proizvodi ~ Obdobje | ID,
                       data = podatki_dolg)
## Warning: 2 block(s) contain ties.
## Kendall's W |       95% CI
## --------------------------
## 0.87        | [0.83, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].
interpret_kendalls_w(0.87)
## [1] "almost perfect agreement"
## (Rules: landis1977)

“almost perfect agreement” - to pomeni da so skoraj vsi najbolj produktivni po prvem predavanju potem dveh predavanjih in potem po treh. Zaposleni so precej skladni glede produktivnosti.

library(rstatix)

#Wilcoxon signed rank tests - comparing all possible pairs. - Wilcoxonov prizkus predznačenih rangov
pairs_nonpar <- wilcox_test(Proizvodi ~ Obdobje, 
                            paired = TRUE, 
                            p.adjust.method = "bonferroni",
                            data = podatki_dolg)

pairs_nonpar
## # A tibble: 6 × 9
##   .y.       group1  group2    n1    n2 statistic            p    p.adj
## * <chr>     <chr>   <chr>  <int> <int>     <dbl>        <dbl>    <dbl>
## 1 Proizvodi Zacetek PU1       38    38        0  0.0000000794  4.76e-7
## 2 Proizvodi Zacetek PU2       38    38        0  0.000000079   4.74e-7
## 3 Proizvodi Zacetek PU3       38    38        0  0.0000000796  4.78e-7
## 4 Proizvodi PU1     PU2       38    38       24  0.000000514   3.08e-6
## 5 Proizvodi PU1     PU3       38    38        0  0.0000000794  4.76e-7
## 6 Proizvodi PU2     PU3       38    38      202. 0.041         2.45e-1
## # ℹ 1 more variable: p.adj.signif <chr>