data("Salaries", package="carData")
table(Salaries$rank, Salaries$discipline)
##
## A B
## AsstProf 24 43
## AssocProf 26 38
## Prof 131 135
table(Salaries$rank, Salaries$sex)
##
## Female Male
## AsstProf 11 56
## AssocProf 10 54
## Prof 18 248
table(Salaries$discipline, Salaries$sex)
##
## Female Male
## A 18 163
## B 21 195
Grupy nie są równoliczne.
library(ggpubr)
## Warning: pakiet 'ggpubr' został zbudowany w wersji R 4.1.2
## Ładowanie wymaganego pakietu: ggplot2
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.1.2
ggboxplot(Salaries, x="rank", y="salary", color="discipline", facet.by="sex")
library(rstatix)
## Warning: pakiet 'rstatix' został zbudowany w wersji R 4.1.2
##
## Dołączanie pakietu: 'rstatix'
## Następujący obiekt został zakryty z 'package:stats':
##
## filter
Salaries %>%
group_by(rank,discipline,sex) %>%
shapiro_test(salary)
## # A tibble: 12 x 6
## rank discipline sex variable statistic p
## <fct> <fct> <fct> <chr> <dbl> <dbl>
## 1 AsstProf A Female salary 0.870 0.226
## 2 AsstProf A Male salary 0.941 0.300
## 3 AsstProf B Female salary 0.889 0.354
## 4 AsstProf B Male salary 0.941 0.0458
## 5 AssocProf A Female salary 0.863 0.269
## 6 AssocProf A Male salary 0.878 0.0113
## 7 AssocProf B Female salary 0.635 0.00117
## 8 AssocProf B Male salary 0.967 0.416
## 9 Prof A Female salary 0.934 0.549
## 10 Prof A Male salary 0.952 0.000259
## 11 Prof B Female salary 0.974 0.923
## 12 Prof B Male salary 0.978 0.0435
Zmienna nie rozkłada się normalnie.
wartosci.odstajace <- Salaries %>%
group_by(rank,discipline,sex) %>%
identify_outliers(salary)
wartosci.odstajace
## # A tibble: 18 x 8
## rank discipline sex yrs.since.phd yrs.service salary is.outlier is.extreme
## <fct> <fct> <fct> <int> <int> <int> <lgl> <lgl>
## 1 Asst~ A Fema~ 7 6 63100 TRUE FALSE
## 2 Asst~ A Male 3 1 63900 TRUE FALSE
## 3 Asst~ A Male 2 0 85000 TRUE TRUE
## 4 Asst~ A Male 8 4 81035 TRUE FALSE
## 5 Asso~ A Fema~ 25 22 62884 TRUE FALSE
## 6 Asso~ A Male 14 8 100102 TRUE FALSE
## 7 Asso~ A Male 9 7 70000 TRUE FALSE
## 8 Asso~ A Male 11 1 104800 TRUE FALSE
## 9 Asso~ A Male 45 39 70700 TRUE FALSE
## 10 Asso~ A Male 10 1 108413 TRUE FALSE
## 11 Asso~ A Male 11 8 104121 TRUE FALSE
## 12 Asso~ B Fema~ 14 7 109650 TRUE TRUE
## 13 Asso~ B Fema~ 12 9 71065 TRUE TRUE
## 14 Asso~ B Male 13 11 126431 TRUE FALSE
## 15 Prof A Male 29 7 204000 TRUE FALSE
## 16 Prof A Male 42 18 194800 TRUE FALSE
## 17 Prof A Male 43 43 205500 TRUE FALSE
## 18 Prof B Male 38 38 231545 TRUE FALSE
Salaries$salary[Salaries$salary%in%wartosci.odstajace$salary] <- NA
Salaries <- na.omit(Salaries)
Salaries <- mutate(Salaries,log=log10(salary))
Salaries %>%
group_by(rank,discipline,sex) %>%
shapiro_test(log)
## # A tibble: 12 x 6
## rank discipline sex variable statistic p
## <fct> <fct> <fct> <chr> <dbl> <dbl>
## 1 AsstProf A Female log 0.813 0.104
## 2 AsstProf A Male log 0.952 0.560
## 3 AsstProf B Female log 0.896 0.387
## 4 AsstProf B Male log 0.931 0.0218
## 5 AssocProf A Female log 0.978 0.717
## 6 AssocProf A Male log 0.891 0.0587
## 7 AssocProf B Female log 0.916 0.517
## 8 AssocProf B Male log 0.981 0.840
## 9 Prof A Female log 0.936 0.575
## 10 Prof A Male log 0.985 0.212
## 11 Prof B Female log 0.976 0.939
## 12 Prof B Male log 0.986 0.236
Nowa zmienna przyjmuje rozkład normalny.
bez interakcji
anova_test(log~rank+discipline+sex, data=Salaries, type = 3)
## Coefficient covariances computed by hccm()
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 rank 2 373 192.140 4.39e-58 * 0.507000
## 2 discipline 1 373 57.846 2.33e-13 * 0.134000
## 3 sex 1 373 0.362 5.48e-01 0.000969
z interakcjami
anova_test(log~rank*discipline*sex, data=Salaries, type = 3)
## Coefficient covariances computed by hccm()
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 rank 2 366 74.804 5.79e-28 * 0.290000
## 2 discipline 1 366 27.566 2.58e-07 * 0.070000
## 3 sex 1 366 0.270 6.04e-01 0.000736
## 4 rank:discipline 2 366 1.248 2.88e-01 0.007000
## 5 rank:sex 2 366 0.114 8.93e-01 0.000621
## 6 discipline:sex 1 366 0.635 4.26e-01 0.002000
## 7 rank:discipline:sex 2 366 0.315 7.30e-01 0.002000
W obu testach wyniki wskazują na to, że zmienne ‘rank’ i ‘discipline’, w przeciwieństwie do ‘sex’, mają z osobna istotny wpływ na zarobki. Nie ma za to zależności między wartością poszczególnych zmiennych a wpływem pozostałych zmiennych na zarobki.
anova_test(log~yrs.since.phd*yrs.service+rank*discipline*sex, data=Salaries, type = 3)
## Coefficient covariances computed by hccm()
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 yrs.since.phd 1 363 9.974 2.00e-03 * 0.027
## 2 yrs.service 1 363 5.055 2.50e-02 * 0.014
## 3 rank 2 363 26.136 2.49e-11 * 0.126
## 4 discipline 1 363 28.508 1.65e-07 * 0.073
## 5 sex 1 363 0.610 4.35e-01 0.002
## 6 yrs.since.phd:yrs.service 1 363 15.060 1.24e-04 * 0.040
## 7 rank:discipline 2 363 1.490 2.27e-01 0.008
## 8 rank:sex 2 363 0.227 7.97e-01 0.001
## 9 discipline:sex 1 363 0.445 5.05e-01 0.001
## 10 rank:discipline:sex 2 363 0.524 5.93e-01 0.003
Lata od doktoratu i staż pracy mogą być istotnymi zmiennymi współoddziałującymi na płacę, ponadto występuje między nimi interakcja.
Salaries %>%
group_by(rank) %>%
shapiro_test(yrs.since.phd)
## # A tibble: 3 x 4
## rank variable statistic p
## <fct> <chr> <dbl> <dbl>
## 1 AsstProf yrs.since.phd 0.933 0.00204
## 2 AssocProf yrs.since.phd 0.739 0.0000000192
## 3 Prof yrs.since.phd 0.971 0.0000328
Salaries %>%
group_by(rank) %>%
shapiro_test(yrs.service)
## # A tibble: 3 x 4
## rank variable statistic p
## <fct> <chr> <dbl> <dbl>
## 1 AsstProf yrs.service 0.922 6.81e- 4
## 2 AssocProf yrs.service 0.662 6.86e-10
## 3 Prof yrs.service 0.979 7.24e- 4
Brak normalności rozkładów.