knitr::opts_chunk$set(message = FALSE)
library(skimr)
sel_data = data %>% select(idind,x_age,xh5,xj72.172, region, status,x_marst, x_educ, x_diplom, xj72.19,xj72.18,xj131.1,x_occup08,xj4.1,xj6,xj6.1a,xj6.2,xj11,xj11.1,xj13,xj14,xj18.2,xj21a,xj21b,xj26,xj29.2.1,xj32, xj60,xj129)
names(sel_data) <- c("id", "age", "sex","childnum","region","location","marital","educ","diplom","religion","belief","mass","occupation","industry","subordinate","meanhourday","meanhourweek","organization","official","worknumber","companydebt","pay_work_cut","vacation","vacationlong","owner","careermove","secondjob","mondaywage","statrtobelieve")
#dim(sel_data)
#skim(sel_data)
sel_data = sel_data %>% na_if('НЕТ ОТВЕТА') %>% na_if('ОТКАЗ ОТ ОТВЕТА') %>% na_if('ЗАТРУДНЯЮСЬ ОТВЕТИТЬ')
sel_data$meanhourweek = as.numeric(sel_data$meanhourweek)
sel_data$meanhourday = as.numeric(sel_data$meanhourday)
sel_data$mondaywage = as.numeric(sel_data$mondaywage)
sel_data$age = as.numeric(sel_data$age)
sel_data$childnum = as.numeric(sel_data$childnum)
sel_data %>% skim()
| Name | Piped data |
| Number of rows | 12228 |
| Number of columns | 29 |
| _______________________ | |
| Column type frequency: | |
| factor | 23 |
| numeric | 6 |
| ________________________ | |
| Group variables | None |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| sex | 0 | 1.00 | FALSE | 2 | ЖЕН: 6941, МУЖ: 5287 |
| region | 0 | 1.00 | FALSE | 38 | Мос: 1063, Рес: 556, Мос: 547, Кра: 420 |
| location | 0 | 1.00 | FALSE | 4 | Обл: 4990, Сел: 3285, Гор: 3133, ПГТ: 820 |
| marital | 1820 | 0.85 | FALSE | 6 | Сос: 4967, Ник: 2122, Bдо: 1443, Жив: 957 |
| educ | 1827 | 0.85 | FALSE | 24 | ест: 2625, тех: 2227, 10 : 1596, сре: 1334 |
| diplom | 1827 | 0.85 | FALSE | 6 | зак: 3087, зак: 2738, зак: 2719, нез: 990 |
| religion | 1962 | 0.84 | FALSE | 32 | ПРА: 8309, НИ : 1084, МУС: 759, КАТ: 14 |
| belief | 2245 | 0.82 | FALSE | 5 | Вы : 4751, Вы : 2755, Вы : 1441, Вы : 709 |
| mass | 4907 | 0.60 | FALSE | 7 | НЕС: 2633, НИК: 1795, РЕЖ: 1267, РАЗ: 977 |
| occupation | 7143 | 0.42 | FALSE | 10 | спе: 995, раб: 923, спе: 906, ква: 641 |
| industry | 7157 | 0.41 | FALSE | 30 | ТОР: 1069, ОБР: 549, ТРА: 461, ЗДР: 377 |
| subordinate | 7129 | 0.42 | FALSE | 2 | Нет: 4145, Да: 954, ЗАТ: 0, ОТК: 0 |
| organization | 7127 | 0.42 | FALSE | 2 | Вы : 4665, Не : 436, ЗАТ: 0, ОТК: 0 |
| official | 7582 | 0.38 | FALSE | 2 | Офо: 4296, Не : 350, ЗАТ: 0, ОТК: 0 |
| worknumber | 8834 | 0.28 | FALSE | 196 | 100: 196, 50: 185, 30: 182, 20: 171 |
| companydebt | 7576 | 0.38 | FALSE | 2 | Нет: 4547, Да: 105, ЗАТ: 0, ОТК: 0 |
| pay_work_cut | 7589 | 0.38 | FALSE | 2 | Нет: 4420, Да: 219, ЗАТ: 0, ОТК: 0 |
| vacation | 7576 | 0.38 | FALSE | 2 | Да: 3320, Нет: 1332, ЗАТ: 0, ОТК: 0 |
| vacationlong | 8919 | 0.27 | FALSE | 66 | 28: 1342, 14: 363, 30: 205, 36: 157 |
| owner | 7577 | 0.38 | FALSE | 2 | Нет: 4521, Да: 130, ЗАТ: 0, ОТК: 0 |
| careermove | 7875 | 0.36 | FALSE | 2 | Нет: 4217, Да: 136, ЗАТ: 0, ОТК: 0 |
| secondjob | 7122 | 0.42 | FALSE | 2 | Нет: 4936, Да: 170, ЗАТ: 0, ОТК: 0 |
| statrtobelieve | 5145 | 0.58 | FALSE | 2 | СТА: 4255, ВЕР: 2828, ЗАТ: 0, ОТК: 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1.00 | 37025.83 | 16722.08 | 3 | 26040.75 | 39742.5 | 50990.75 | 59413 | ▂▂▅▆▇ |
| age | 0 | 1.00 | 43.36 | 23.06 | 1 | 25.00 | 44.0 | 62.00 | 98 | ▆▇▇▆▂ |
| childnum | 4537 | 0.63 | 1.79 | 0.86 | 1 | 1.00 | 2.0 | 2.00 | 9 | ▇▁▁▁▁ |
| meanhourday | 7276 | 0.40 | 15.89 | 7.50 | 1 | 6.00 | 21.0 | 21.00 | 23 | ▃▁▁▁▇ |
| meanhourweek | 7451 | 0.39 | 41.15 | 11.09 | 1 | 38.00 | 38.0 | 46.00 | 83 | ▁▂▇▁▁ |
| mondaywage | 2049 | 0.83 | 810.26 | 541.32 | 1 | 342.00 | 811.0 | 1283.00 | 1791 | ▇▆▆▇▅ |
Исходя из крайней искаженности данных в столбце meanhourday (то есть много данных с 20+ часов), мы решили работать со временем, измеренным в часах в неделю.
religion2=sel_data
#Anderson-Darling & Shapiro tests
ad.test(religion2$meanhourday)
##
## Anderson-Darling normality test
##
## data: religion2$meanhourday
## A = 745.75, p-value < 2.2e-16
shapiro.test(religion2$meanhourday)
##
## Shapiro-Wilk normality test
##
## data: religion2$meanhourday
## W = 0.68341, p-value < 2.2e-16
ad.test(religion2$meanhourweek)
##
## Anderson-Darling normality test
##
## data: religion2$meanhourweek
## A = 262.63, p-value < 2.2e-16
shapiro.test(religion2$meanhourweek) #тесты показывают ненормальность распределения на уровне значимости <0.001
##
## Shapiro-Wilk normality test
##
## data: religion2$meanhourweek
## W = 0.87799, p-value < 2.2e-16
# Distribution of CONT variable
ggdensity(data=religion2, x = "meanhourweek", fill = "light blue", title = "meanhourweak") + labs(title = "Плотность распределения рабочего времени в неделю", x = "Время в часах в неделю", y = "Плотность распределения") +
scale_x_continuous(limits = c(0, 86)) +
stat_overlay_normal_density(color = "red", linetype = "dashed") + theme_bw() + theme(text = element_text(size=12), axis.text.x = element_text(angle=90, hjust=1), plot.background = element_rect())
## Warning: Removed 7451 rows containing non-finite values (stat_density).
## Warning: Removed 7451 rows containing non-finite values
## (stat_overlay_normal_density).
## Warning: Removed 40 row(s) containing missing values (geom_path).
religion2$meanhourday=as.numeric(religion2$meanhourday)
# Distribution of PHYS variable
ggdensity(data=religion2, x = "meanhourday", fill = "light blue", title = "meanhourday") + labs(title = "Плотность распределения рабочего времени в день", x = "Время в часах в день", y = "Плотность распределения") +
scale_x_continuous(limits = c(0, 23)) +
stat_overlay_normal_density(color = "red", linetype = "dashed") + theme_bw() + theme(text = element_text(size=12), axis.text.x = element_text(angle=90, hjust=1), plot.background = element_rect())
## Warning: Removed 7276 rows containing non-finite values (stat_density).
## Warning: Removed 7276 rows containing non-finite values
## (stat_overlay_normal_density).
## Warning: Removed 325 row(s) containing missing values (geom_path).
#исходя из данных расчетов, можем использовать только непараметрические тесты
По той причине, что мы рассматриваем время работы, а в датасете есть и крайне молодые, и пожилые люди, мы решили распределить взраст по 4 категориям
sel_data$age %>% summary()
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 25.00 44.00 43.36 62.00 98.00
#98 человек не работают -> подравняем возраст
sel_data = sel_data %>% filter(age<=70 & age> 14)
sel_data = sel_data %>% mutate(age_cat = case_when(age<=17 ~ "школьники",
age>17 & age <=30 ~'репр.возр.молодежь',
age>30 & age <=60 ~'мужчины и женщины',
age>60~"пожилые",
TRUE~ 'другое'))
sel_data %>% filter(age_cat!='школьники') %>% ggplot()+geom_boxplot(mapping = aes(x = as.factor(age_cat) ,y=meanhourweek)) + labs(title = "Распределение рабочего времени в неделю по возрасту", x = "Возрастная категория", y = "Часы в неделю") + theme_bw() + theme(text = element_text(size=9), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect())
## Warning: Removed 3723 rows containing non-finite values (stat_boxplot).
Много различных религий с очень малыми количествами наблюдений. Кроме этого, некоторые религии сгруппированы неправильно, и мы решили оставить глобальные религии (несмотря на малое количество наблюдений), а все остальное определить общей группой “Другое”.
#Религия
sel_data %>% count(religion)
## religion n
## 1 ПРАВОСЛАВИЕ 6982
## 2 КАТОЛИЦИЗМ 9
## 3 ПРОТЕСТАНТИЗМ 10
## 4 МУСУЛЬМАНСТВО 678
## 5 ИУДАИЗМ 4
## 6 БУДДИЗМ, ЛАМАИЗМ 7
## 7 КРИШНАИЗМ 3
## 8 ИНДУИЗМ 1
## 9 СВИДЕТЕЛИ ИЕГОВЫ 5
## 10 ХРИСТИАНСТВО 9
## 11 ВЕРЮ ВО ЧТО-ТО СВЕРХЪЕСТЕСТВЕННОЕ 2
## 12 БАПТИСТ 2
## 13 СТАРОВЕРЫ 2
## 14 АРМЯНСКАЯ АПОСТОЛЬСКАЯ ЦЕРКОВЬ 2
## 15 ЕВАНГЕЛИСТЫ 2
## 16 В БОГА ВЕРЮ И ВСЕ 1
## 17 ИСЛАМ 1
## 18 Я НЕ РАЗБИРАЮСЬ, ВЕРЮ НЕМНОГО ВО ЧТО-ТО ВЫСШЕЕ 1
## 19 АРМЯНО-ГРИГОРИАНСКАЯ, ГРИГОРИАНСТВО 4
## 20 ЯЗЫЧЕСТВО 7
## 21 ОБЪЕДИНЕНИЕ РЕЛИГИЙ 1
## 22 АРМЯНСКАЯ ПРАВОСЛАВНАЯ ЦЕРКОВЬ 3
## 23 АГНОСТИЦИЗМ 1
## 24 ПАСТАФАРИАНСТВО 1
## 25 СОЛНЦЕВЕРУЮЩИЙ 7
## 26 ДАОСИЗМ 1
## 27 БАХАИ, БАХАИЗМ 1
## 28 Итсизм 1
## 29 Монотеизм 1
## 30 НИ К КАКОЙ РЕЛИГИИ 958
## 31 <NA> 135
sel_data = sel_data %>% mutate(religion1 = case_when(religion=='ПРАВОСЛАВИЕ'| religion == 'ХРИСТИАНСТВО'~'ПРАВОСЛАВИЕ',religion=='БЕЗ РЕЛИГИИ'~'НИ К КАКОЙ РЕЛИГИИ',religion=='МУСУЛЬМАНСТВО'~'МУСУЛЬМАНСТВО',religion=='ПРОТЕСТАНТИЗМ'~'ПРОТЕСТАНТИЗМ',religion=='КАТОЛИЦИЗМ'~'КАТОЛИЦИЗМ', religion =="БУДДИЗМ, ЛАМАИЗМ"~"БУДДИЗМ, ЛАМАИЗМ",religion=="ИУДАИЗМ"~"ИУДАИЗМ", TRUE~"ДРУГОЕ"))
ggplot(data =subset(sel_data,!is.na(religion1)))+geom_boxplot(mapping = aes(x = as.factor(religion1) ,y=meanhourweek)) + labs(title = "Распределение рабочего времени в неделю по религии", x = "Название религии", y = "Часы в неделю") + theme_bw() + theme(text = element_text(size=9), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect())
## Warning: Removed 4119 rows containing non-finite values (stat_boxplot).
Посмотрим, в каком соотношении находятся уровни отношения к религии по различным группам религий - это важно в силу того, что принадлежность к религии не говорит ничего об образе жизни человека, а следовательно, и о времени, проводимом на работе.
#Отношение к религии (by religion)
subset(sel_data,!is.na(belief)) %>% ggplot()+ geom_bar(aes(x = religion1, fill = belief), position ='fill', na.rm = T) + labs(title = "Отношение к религии и религия", x = "Название религии", y = "Процентное соотношение") + theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=90, hjust=1), plot.background = element_rect()) + scale_fill_manual(values = c("light blue","cadetblue3", "cadetblue4", "deepskyblue", "deepskyblue3"))
legend_title <- "Отношение к вере"
Некоторые тесты требуют бинарность переменной и мы приблизительно разделим значения времени на работе относительно медианы, равной 38.
#median(sel_data$meanhourweek,na.rm= T)
#skim(sel_data$meanhourweek)
sel_data = sel_data %>% mutate(meanhourweek1 = case_when(meanhourweek<40~ 'меньше 40 часов',
meanhourweek>=40~'не меньше 40 часов',
TRUE~'unknown'))
sel_data$meanhourweek1 = as.factor(sel_data$meanhourweek1)
sel_data$meanhourweek1 %>% summary() #много NA
## unknown меньше 40 часов не меньше 40 часов
## 4119 2941 1782
Здесь мы разделим людей по семейному положению, исходя из существующих типов ответов.
sel_data = sel_data %>% mutate(marital1 = case_when(marital =="Живете вместе, но не зарегистрированы"|marital == "Состоите в зарегистрированном браке"~'в браке',
T~"не в браке"))
На данном шаге разделим респондентов на верующих и неверующих(нейтральных), исходя из существующих типов ответов.
sel_data = sel_data %>% mutate(belief_cat = case_when(belief =="Вы верующий человек" |belief =="Вы скорее верующий, чем неверующий человек"~ "Верующий", belief =="Вы скорее неверующий, чем верующий человек"|belief == "Вы неверующий человек"|belief == 'Вы атеист'~"Неверующий"))
ggplot(data =subset(sel_data,!is.na(belief_cat))) + geom_bar(aes(x = belief_cat), na.rm =T,col = 'blue', fill = "light blue")+ labs(title = "Количество людей по отношению к религии", x = "Категория", y = "Количество человек") + theme_bw() + theme(text = element_text(size=12), axis.text.x = element_text(angle=0, hjust=1), plot.background = element_rect())
Распределение времени работы для вышеприведенных категорий.
sel_data %>% group_by(belief_cat) %>% summarize(m = mean(meanhourweek, na.rm = T))#средние отличаются
## # A tibble: 3 x 2
## belief_cat m
## <chr> <dbl>
## 1 Верующий 40.9
## 2 Неверующий 42.2
## 3 <NA> 41.5
ggplot(data =subset(sel_data,!is.na(belief_cat)))+geom_boxplot(mapping = aes(x = as.factor(belief_cat), y=as.numeric(meanhourweek)), na.rm =T) + labs(title = "Разница во времени, отведенном на работу в неделю", x = "Категория", y = "Количество часов в неделю") + theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect())
#Верующие и неверующие по религиям
ggplot(data =subset(sel_data,!is.na(belief_cat)))+geom_boxplot(mapping = aes(x = as.factor(belief_cat), y=as.numeric(meanhourweek),fill = religion1), na.rm=T) + labs(title = "Разница во времени, отведенном на работу в неделю", x = "Отношение к религии", y = "Количество часов в неделю") +theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect()) + scale_fill_manual(values = c("cyan", "darkslategray1", "cadetblue3", "cadetblue4", "deepskyblue", "deepskyblue3", "deepskyblue4"))
sel_data %>% filter(belief_cat == "Верующий") %>% group_by(religion1) %>% summarize(m = mean(meanhourweek, na.rm = T)) %>% arrange(-m)
## # A tibble: 7 x 2
## religion1 m
## <chr> <dbl>
## 1 ИУДАИЗМ 50.5
## 2 КАТОЛИЦИЗМ 47.6
## 3 БУДДИЗМ, ЛАМАИЗМ 46
## 4 МУСУЛЬМАНСТВО 41.9
## 5 ДРУГОЕ 41.3
## 6 ПРАВОСЛАВИЕ 40.8
## 7 ПРОТЕСТАНТИЗМ 39
sel_data %>% filter(belief_cat == "Неверующий") %>% group_by(religion1) %>% summarize(m = mean(meanhourweek, na.rm = T)) %>% arrange(-m)
## # A tibble: 4 x 2
## religion1 m
## <chr> <dbl>
## 1 МУСУЛЬМАНСТВО 45.8
## 2 ДРУГОЕ 42.5
## 3 ПРАВОСЛАВИЕ 41.8
## 4 БУДДИЗМ, ЛАМАИЗМ NaN
#Явные раличия у людей в религии среди Верующих и Неверующих заметны среди мусульман и православных
#Пол (в статьях написано, что религиозные женщины работают меньше)
legend_title <- "Пол"
ggplot(data =subset(sel_data,!is.na(belief_cat)))+geom_boxplot(mapping = aes(x = as.factor(belief_cat), y=as.numeric(meanhourweek),fill = sex), na.rm=T)+ labs(title = "Разница во времени, отведенном на работу в неделю, по полу", x = "Отношение к религии", y = "Количество часов в неделю")+ theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect()) + scale_fill_manual(legend_title,values=c("light blue"," cadetblue4"))
sel_data %>% filter(belief_cat == "Верующий") %>% group_by(sex) %>% summarize(m = mean(meanhourweek, na.rm = T)) %>% arrange(-m)
## # A tibble: 2 x 2
## sex m
## <fct> <dbl>
## 1 МУЖСКОЙ 43.9
## 2 ЖЕНСКИЙ 39.0
sel_data %>% filter(belief_cat == "Неверующий") %>% group_by(sex) %>% summarize(m = mean(meanhourweek, na.rm = T)) %>% arrange(-m)
## # A tibble: 2 x 2
## sex m
## <fct> <dbl>
## 1 МУЖСКОЙ 43.9
## 2 ЖЕНСКИЙ 38.8
#противоречие (у нас наоборот), посмотрим для опрделенных религий
legend_title <- "Пол"
sel_data %>% filter(belief_cat == "Верующий") %>% group_by(sex,religion1) %>% summarize(m = mean(meanhourweek, na.rm = T)) %>% arrange(-m) %>% ggplot() + geom_bar(aes(x=religion1,y = m, fill = sex),stat = 'identity', position = 'dodge')+ labs(title = "Разница во времени, отведенном на работу в неделю, по полу", x = "Религия", y = "Количество часов в неделю")+ theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect()) + scale_fill_manual(legend_title,values=c("light blue"," cadetblue4"))
## Warning: Removed 3 rows containing missing values (geom_bar).
#Верующие мусульманки в среднем работают больше часов в неделю и нам нужно определить, почему это так
Здесь мы посмотрим на распределения времени относительно количества детей в семье, а потом, разбив семьи на многодетные и малодетные, посмотрим, как время на работе распределено по религиям для двух типов семей.
a = sel_data %>% filter(childnum <8)
ggplot(data =subset(a,!is.na(childnum)))+geom_boxplot(mapping = aes(x = as.factor(childnum) ,y=as.numeric(meanhourweek,na.rm = T))) + labs(title = "Разница во времени, отведенном на работу в неделю, по наличию детей", x = "Количество детей", y = "Количество часов в неделю")+ theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect())
## Warning: Removed 2568 rows containing non-finite values (stat_boxplot).
#Для упрощения
sel_data = sel_data %>% mutate(fam_cat = case_when(childnum<=2 ~ "малодетные", childnum>2~"многодетные",
TRUE~""))
sel_data %>%filter(fam_cat!='') %>% ggplot() + geom_boxplot(mapping = aes(x =as.factor(fam_cat),y=meanhourweek,fill = religion1))+ labs(title = "Разница во времени, отведенном на работу в неделю, по количеству детей", x = "Категория семьи", y = "Количество часов в неделю") + theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect()) + scale_fill_manual(values = c("cyan", "darkslategray1", "cadetblue3", "cadetblue4", "deepskyblue", "deepskyblue3", "deepskyblue4"))
## Warning: Removed 2575 rows containing non-finite values (stat_boxplot).
Пропорции официально и неофициально устроенных по отношению к религии.
off = sel_data %>% filter(!is.na(official))
legend_title <- "Трудоустройство"
ggplot(data =subset(off,!is.na(belief_cat))) + geom_bar(aes(x = belief_cat, fill = official), na.rm =T,position = 'fill' ) + labs(color = "Занятость" , title = "Соотношения формально и неформально занятых по \n отношению к религии", x = "Отношение к религии", y = "Процентное соотношение")+ theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect()) + scale_fill_manual(legend_title,values=c("light blue"," cadetblue4"))
legend_title <- "Трудоустройство"
ggplot(data =subset(off,!is.na(belief_cat)))+geom_boxplot(mapping = aes(x = as.factor(belief_cat), y=as.numeric(meanhourweek),fill = official), na.rm=T)+ labs(title = "Разница во времени, отведенном на работу в неделю, по типу трудоустройства", x = "Отношение к религии", y = "Количество часов в неделю")+ theme_bw() + theme(text = element_text(size=9), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect()) + scale_fill_manual(legend_title,values=c("light blue"," cadetblue4"))
Пропорции людей с законченным и незаконченным образованиями по отношению к религии.
sel_data$diplom %>% unique()
## [1] законченное среднее образование
## [2] незаконченное среднее образование (7 - 8 кл)
## [3] законченное среднее специальное образование
## [4] законченное высшее образование и выше
## [5] незаконченное среднее образование (7 - 8 кл) + что-то еще
## [6] окончил 0 - 6 классов
## [7] <NA>
## 9 Levels: окончил 0 - 6 классов ...
sel_data = sel_data %>% mutate(finished = case_when(diplom =="законченное среднее специальное образование"|diplom == 'законченное высшее образование и выше'|diplom == 'законченное среднее образование'~"законченное",
TRUE~'незакончнное'))
legend_title <- "Тип образования"
ggplot(data =subset(sel_data,!is.na(belief_cat))) + geom_bar(aes(x = belief_cat, fill = finished), na.rm =T,position = 'fill' )+ labs(title = "Соотношения по наличию высшего или среднего оразования", x = "Отношение к религии", y = "Процентное соотношение") + theme_bw() + theme(text = element_text(size=10), axis.text.x = element_text(angle=40, hjust=1), plot.background = element_rect()) + scale_fill_manual(legend_title,values=c("light blue"," cadetblue4"))
legend_title <- "Тип образования"
ggplot(data =subset(sel_data,!is.na(belief_cat)))+geom_boxplot(mapping = aes(x = as.factor(belief_cat), y=as.numeric(meanhourweek),fill = finished), na.rm=T)+ labs(title = "Разница во времени, отведенному на работу в неделю, по наличию образования", x = "Категория", y = "Количество часов в неделю")+ theme_bw() + theme(text = element_text(size=9), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect()) + scale_fill_manual(legend_title,values=c("light blue"," cadetblue4"))
sel_data_filtered = sel_data %>% filter(meanhourweek1=='меньше 40 часов'|meanhourweek1=='не меньше 40 часов')
Общая стратегия работы с тестами Тесты По той причине, что религия человека и отношение к религии не являются явными аргументами в используемых нами функциях, была выбрана следующая стратегия работы: 1. Создать бинарную переменную для отношения к религии. 2. Посмотреть, есть ли различия в средних по времени работы для бинарной переменной по религии. 3. Гипотеза 4. Посмотреть, есть ли различия в распределении по рассматриваемой переменной, учитывая отношения к религии, с учетом бинарной переменной с помощью различных тестов в зависимости от количества категорий и типов данных. 5. Интерпретировать результат
Распрдеделение целевой переменной (среднего времени) не соответствует нормальному и по этой причине мы импользуем непараметрические тесты
\(H_0\) нет разницы во времени работы между различными религиями
Исходя из статистической значимости результата, отвергаем нулевую гипотезу на уровне значимости 0,01 по критерию Краскела-Уоллиса.
sel_data$religion1 = as.factor(sel_data$religion1)
kruskal.test(meanhourweek~religion1, data = sel_data)
##
## Kruskal-Wallis rank sum test
##
## data: meanhourweek by religion1
## Kruskal-Wallis chi-squared = 19.985, df = 6, p-value = 0.002787
#наблюдаются значимые различия на уровне 0,01, движемся дальше
Статистический тест на различия между религиями и верующими/неверующими +тест на различия между типами отношения к религии
\(H_0\) нет разницы во времени на работе среди верующих и неверующих
Результат теста: различия во времени работы для разных людей по религии могут объяснятся тем, что они придержиыаются различных позиций относительно религии (верующий/неверующий) и результат устойчив (Критерий Хи-квадрат + тест Краскела-Уоллиса)
#1
ch = chisq.test(sel_data$religion1, sel_data$belief_cat) #в распределении различия наблюдаются
## Warning in chisq.test(sel_data$religion1, sel_data$belief_cat): Chi-squared
## approximation may be incorrect
ch$observed
## sel_data$belief_cat
## sel_data$religion1 Верующий Неверующий
## БУДДИЗМ, ЛАМАИЗМ 6 1
## ДРУГОЕ 129 907
## ИУДАИЗМ 4 0
## КАТОЛИЦИЗМ 9 0
## МУСУЛЬМАНСТВО 575 34
## ПРАВОСЛАВИЕ 5509 1260
## ПРОТЕСТАНТИЗМ 7 0
#2 сделан выше в графиках
#3
sel_data$belief_cat = as.factor(sel_data$belief_cat)
wilcox.test(meanhourweek~belief_cat, data = sel_data)
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by belief_cat
## W = 1861734, p-value = 0.0001317
## alternative hypothesis: true location shift is not equal to 0
#есть статистически значимые различия между отношением к религии по критерию Манна-Уитни
#по очищенному датасету с категориальным временем сделаем тест
independence_test(meanhourweek~belief_cat, data = sel_data)
##
## Asymptotic General Independence Test
##
## data: meanhourweek by belief_cat (Верующий, Неверующий)
## Z = -3.4236, p-value = 0.0006179
## alternative hypothesis: two.sided
chisq.test(sel_data_filtered$meanhourweek1, sel_data_filtered$belief_cat)#значимая разница
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: sel_data_filtered$meanhourweek1 and sel_data_filtered$belief_cat
## X-squared = 5.9651, df = 1, p-value = 0.01459
\(H_0\) нет разницы во времени на работе среди мужчин и женщин
Результат теста: различия во времени работы для разных людей по религии могут объясняться полом респондента
#1 Различия в распределении по полу наблюдаются
ch = chisq.test(sel_data$sex, sel_data$belief_cat)
ch$observed
## sel_data$belief_cat
## sel_data$sex Верующий Неверующий
## МУЖСКОЙ 2285 1389
## ЖЕНСКИЙ 3954 813
#2 тот же самый из прошлого чанка
#3
wilcox.test(meanhourweek~sex,data = sel_data) #выполняется по критерию Манна-Уитни
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by sex
## W = 3498394, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
#Результат теста: различия во времени работы для разных людей по религии могут объяснятся полом
\(H_0\) нет разницы по временем работы среди верующих и неверующих людей в зависимости от семейного положения
Результаты тестов Хи-Квадрат показали незначимые различия, а по тесту Краскела-Уоллиса статистически значимый результат на уровне 0,1. Из этого следует неустойчивость результата, т.е не “robust”. Различия между верующими и неверующими могут наблюдается в категории “Вдовец (вдова)”, но во всех остальных случаях результат статистически незначим. Различия во времени работы для разных групп по религии скорее не могут объясняться тем, что они находятся в разных семейных положениях.
#Тест для исходной переменной marital
#1 Различия есть
chisq = chisq.test(sel_data$marital, sel_data$belief_cat)
chisq$observed
## sel_data$belief_cat
## sel_data$marital Верующий Неверующий
## Никогда в браке не состояли 1189 715
## Состоите в зарегистрированном браке 3308 960
## Живете вместе, но не зарегистрированы 621 256
## Разведены и в браке не состоите 568 175
## Bдовец (вдова) 531 80
## ОФИЦИАЛЬНО ЗАРЕГИСТРИРОВАНЫ, НО ВМЕСТЕ НЕ ПРОЖИВАЮТ 18 15
#2+
#3+
kruskal.test(meanhourweek~marital, data=sel_data) #на уровне 0.1
##
## Kruskal-Wallis rank sum test
##
## data: meanhourweek by marital
## Kruskal-Wallis chi-squared = 11.21, df = 5, p-value = 0.04736
#Результат теста: различия во времени работы для разных людей по религии могут объяснятся тем, что у них разное семейное положение
sel_data$marital %>% unique()
## [1] Bдовец (вдова)
## [2] Состоите в зарегистрированном браке
## [3] Живете вместе, но не зарегистрированы
## [4] Никогда в браке не состояли
## [5] Разведены и в браке не состоите
## [6] ОФИЦИАЛЬНО ЗАРЕГИСТРИРОВАНЫ, НО ВМЕСТЕ НЕ ПРОЖИВАЮТ
## [7] <NA>
## 9 Levels: Никогда в браке не состояли ... НЕТ ОТВЕТА
#Проверим устойчивость теста, проведением теста Хи-Квадрат для каждой отдельной категории семейного статуса
chi_data = sel_data %>% select(meanhourweek, belief_cat, marital)
chi_data$x1 = ifelse(sel_data$marital =='Состоите в зарегистрированном браке',1,0)
chi_data$x2 = ifelse(sel_data$marital =='Живете вместе, но не зарегистрированы',1,0)
chi_data$x3 = ifelse(sel_data$marital =='Разведены и в браке не состоите',1,0)
chi_data$x4 = ifelse(sel_data$marital =='Bдовец (вдова)',1,0)
chi_data$x5 = ifelse(sel_data$marital =='Никогда в браке не состояли',1,0)
chi_data$x6 = ifelse(sel_data$marital =='ОФИЦИАЛЬНО ЗАРЕГИСТРИРОВАНЫ, НО ВМЕСТЕ НЕ ПРОЖИВАЮТ',1,0)
chi_data =chi_data %>% mutate_if(is.numeric, as.factor)
chi_data$meanhourweek = as.numeric(chi_data$meanhourweek)
t1 = wilcox.test(meanhourweek~x1,data = chi_data)
t2 = wilcox.test(meanhourweek~x2,data = chi_data)
t3 = wilcox.test(meanhourweek~x3,data = chi_data)
t4 = wilcox.test(meanhourweek~x4,data = chi_data)
t5 = wilcox.test(meanhourweek~x5,data = chi_data)
t6 = wilcox.test(meanhourweek~x6,data = chi_data)
t1 #-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x1
## W = 2724434, p-value = 0.8941
## alternative hypothesis: true location shift is not equal to 0
t2#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x2
## W = 1156318, p-value = 0.1315
## alternative hypothesis: true location shift is not equal to 0
t3#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x3
## W = 980335, p-value = 0.4127
## alternative hypothesis: true location shift is not equal to 0
t4#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x4
## W = 545678, p-value = 0.004992
## alternative hypothesis: true location shift is not equal to 0
t5#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x5
## W = 1427998, p-value = 0.2605
## alternative hypothesis: true location shift is not equal to 0
t6#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x6
## W = 31171, p-value = 0.9024
## alternative hypothesis: true location shift is not equal to 0
\(H_0\) нет разницы во времени работы среди людей в браке и не в браке.(т.е среди тех, кто проживают вместе и нет)
Различия во времени работы для разных групп по религии не могут объясняться семейным положением (в браке и не в браке)
Исходя из этих тестов, результат устойчиво статистически незначим по критерию Манна-Уитни
#1 Различия есть
ch = chisq.test(sel_data$marital1, sel_data$belief_cat)
ch$observed
## sel_data$belief_cat
## sel_data$marital1 Верующий Неверующий
## в браке 3929 1216
## не в браке 2310 986
#2 +
#3 различия не подтверждаются - результат статистически незначим
wilcox.test(meanhourweek~marital1, data=sel_data)
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by marital1
## W = 2384837, p-value = 0.322
## alternative hypothesis: true location shift is not equal to 0
\(H_0\) нет разницы между верующими замужними женщинами
Результат статистически незначим по тесту перестановок, т.е черная вертикальная линия показывает, что значение разницы в средних превосходит допустимые интервалы 5% и даже 10% (точнее по 2,5 и 5 слева и справа на графике распределения случайных разниц соотвественно), что говорит о высоком значении p-value. Различия во времени работы в данной выборке для разных групп по религии скорее не могут объясняться семейным положением (в браке) верующих и неверующих женщин. Мы не можем сделать вывода о какой-либо разнице, исходя из результата теста.
a = sel_data %>% filter(!is.na(meanhourweek))
a = a %>% filter(!is.na(belief_cat))
all_means = a %>% group_by(sex, belief_cat,marital1) %>% summarize(mean = mean(meanhourweek,na.rm =T))
all_means
## # A tibble: 8 x 4
## # Groups: sex, belief_cat [4]
## sex belief_cat marital1 mean
## <fct> <fct> <chr> <dbl>
## 1 МУЖСКОЙ Верующий в браке 44.0
## 2 МУЖСКОЙ Верующий не в браке 43.3
## 3 МУЖСКОЙ Неверующий в браке 44.1
## 4 МУЖСКОЙ Неверующий не в браке 43.5
## 5 ЖЕНСКИЙ Верующий в браке 38.9
## 6 ЖЕНСКИЙ Верующий не в браке 39.2
## 7 ЖЕНСКИЙ Неверующий в браке 38.6
## 8 ЖЕНСКИЙ Неверующий не в браке 39.1
difference = all_means$mean[5] - all_means$mean[7]
difference
## [1] 0.2608339
set.seed(1)
count_diff <- function(number_of_permutations = 1000) {
diff.random <- rep(NA_real_, number_of_permutations)
for (i in 1 : number_of_permutations) {
shuffled = sample(a$meanhourweek, nrow(a))
bel.random = shuffled[a$sex == "ЖЕНСКИЙ" & a$belief_cat=='Верующий' & a$marital1=='в браке']
notbel.random = shuffled[a$sex == "ЖЕНСКИЙ" & a$belief_cat=='Неверующий' & a$marital1=='в браке']
diff.random[i] = mean(bel.random) - mean(notbel.random)
}
return(diff.random)
}
number_of_permutations <- 3500
diff.random <- count_diff(number_of_permutations)
df <- data.frame(diff.random = diff.random)
g <-
ggplot(df) +
geom_histogram(aes(diff.random), fill="light blue") +
geom_vline(xintercept=difference, color="black") # реальная разнмца
q <- quantile(diff.random, c(0.025, 0.975))
g = g +
geom_vline(xintercept=q[1], color="red") +
geom_vline(xintercept=q[2], color="red") + labs(title = "Распределение случайных значений разницы в средних", x = "Распределение переменных", y = "Количество")+ theme_bw() + theme(text = element_text(size=11), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect())
g
\(H_0\) нет разницы между замужними женщинами, относящихся к Мусульманству и Православию
Результат статистически незначим по тесту перестановок, т.е черная вертикальная линия показывает, что значение разницы в средних превосходит допустимые интервалы 5% и даже 10% (точнее по 2,5 и 5 слева и справа на графике распределения случайных разниц соотвественно), что говорит о высоком (более 10%) значении p-value. Различия во времени работы в данной выборке для разных групп по религии скорее не могут объясняться семейным положением (в браке) мусульманок и православных женщин. Мы не можем сделать вывода о какой-либо разнице, исходя из результата теста.
Проведем идентичный тест для мусульманок и православных женщин, т.к в России эта разница может быть существенной в силу культурных особенностей в определенных регионах + больше данных для этих категорий людей
b = sel_data
rel_test_data = b %>% filter(religion1=="ПРАВОСЛАВИЕ" | religion1=="МУСУЛЬМАНСТВО")
rel_test_data = rel_test_data %>% filter(!is.na(meanhourweek))
wilcox.test(meanhourweek~religion1, rel_test_data)
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by religion1
## W = 393264, p-value = 0.0019
## alternative hypothesis: true location shift is not equal to 0
#общий тест, не учитывающий пола, показал статистическую значимость разницы
all_means1 = rel_test_data %>% group_by(sex, religion1, marital1) %>% summarize(mean = mean(meanhourweek))
all_means1
## # A tibble: 8 x 4
## # Groups: sex, religion1 [4]
## sex religion1 marital1 mean
## <fct> <fct> <chr> <dbl>
## 1 МУЖСКОЙ МУСУЛЬМАНСТВО в браке 44.9
## 2 МУЖСКОЙ МУСУЛЬМАНСТВО не в браке 39.2
## 3 МУЖСКОЙ ПРАВОСЛАВИЕ в браке 43.7
## 4 МУЖСКОЙ ПРАВОСЛАВИЕ не в браке 43.4
## 5 ЖЕНСКИЙ МУСУЛЬМАНСТВО в браке 39.2
## 6 ЖЕНСКИЙ МУСУЛЬМАНСТВО не в браке 44.0
## 7 ЖЕНСКИЙ ПРАВОСЛАВИЕ в браке 38.9
## 8 ЖЕНСКИЙ ПРАВОСЛАВИЕ не в браке 39.1
Разница не значима статистически = нет вывода
difference = all_means1$mean[5] - all_means1$mean[7]
difference
## [1] 0.2697584
set.seed(2)
count_diff <- function(number_of_permutations = 1000) {
diff.random <- rep(NA_real_, number_of_permutations)
# вектор с неопределенными (пустыми) значениями,в который будем записывать вычисленные разницы
for (i in 1 : number_of_permutations) {
# перемешиваем значения
shuffled = sample(rel_test_data$meanhourweek, nrow(rel_test_data))
# выбираем те значения, которые после перемешивания относятся к мусульманству
bel.random = shuffled[rel_test_data$sex == "ЖЕНСКИЙ" & rel_test_data$religion1=='МУСУЛЬМАНСТВО' & rel_test_data$marital1=='в браке']
# выбираем те значения, которые после перемешивания оиносятся к православию
notbel.random = shuffled[rel_test_data$sex == "ЖЕНСКИЙ" & rel_test_data$religion1=='ПРАВОСЛАВИЕ' & rel_test_data$marital1=='в браке']
# вычисляем разность средних
diff.random[i] = mean(bel.random) - mean(notbel.random)
}
return(diff.random)
}
number_of_permutations <- 3500
diff.random <- count_diff(number_of_permutations)
df <- data.frame(diff.random = diff.random)
m <-
ggplot(df) +
geom_histogram(aes(diff.random), fill="light blue") +
geom_vline(xintercept=difference, color="black") # реальная разнмца
q1 <- quantile(diff.random, c(0.025, 0.975))
m = m +
geom_vline(xintercept=q1[1], color="red") +
geom_vline(xintercept=q1[2], color="red") + labs(title = "Распределение случайных значений разницы в средних", x = "Распределение переменных", y = "Количество")+ theme_bw() + theme(text = element_text(size=11), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect())
m
\(H_0\) нет разницы между временем работы женатых мужчин, относящихся к Мусульманству и Православию
Результат статистически незначим по тесту перестановок, т.е черная вертикальная линия показывает, что значение разницы в средних превосходит допустимые интервалы 5% и даже 10% (точнее по 2,5 и 5 слева и справа на графике распределения случайных разниц соотвественно), что говорит о высоком (более 10%) значении p-value. Различия во времени работы в данной выборке для разных групп по религии скорее не могут объясняться семейным положением (в браке) мусульманских и православных мужчин. Мы не можем сделать вывода о какой-либо разнице, исходя из результата теста, т.к разница незначима
all_means1
## # A tibble: 8 x 4
## # Groups: sex, religion1 [4]
## sex religion1 marital1 mean
## <fct> <fct> <chr> <dbl>
## 1 МУЖСКОЙ МУСУЛЬМАНСТВО в браке 44.9
## 2 МУЖСКОЙ МУСУЛЬМАНСТВО не в браке 39.2
## 3 МУЖСКОЙ ПРАВОСЛАВИЕ в браке 43.7
## 4 МУЖСКОЙ ПРАВОСЛАВИЕ не в браке 43.4
## 5 ЖЕНСКИЙ МУСУЛЬМАНСТВО в браке 39.2
## 6 ЖЕНСКИЙ МУСУЛЬМАНСТВО не в браке 44.0
## 7 ЖЕНСКИЙ ПРАВОСЛАВИЕ в браке 38.9
## 8 ЖЕНСКИЙ ПРАВОСЛАВИЕ не в браке 39.1
difference = all_means1$mean[1] - all_means1$mean[3]
difference
## [1] 1.158804
set.seed(3)
count_diff <- function(number_of_permutations = 1000) {
diff.random <- rep(NA_real_, number_of_permutations)
for (i in 1 : number_of_permutations) {
shuffled = sample(rel_test_data$meanhourweek, nrow(rel_test_data))
bel.random = shuffled[rel_test_data$sex == "МУЖСКОЙ" & rel_test_data$religion1=='МУСУЛЬМАНСТВО' & rel_test_data$marital1=='в браке']
notbel.random = shuffled[rel_test_data$sex == "МУЖСКОЙ" & rel_test_data$religion1=='ПРАВОСЛАВИЕ' & rel_test_data$marital1=='в браке']
# вычисляем разность средних
diff.random[i] = mean(bel.random) - mean(notbel.random)
}
return(diff.random)
}
set.seed(3)
number_of_permutations <- 3500
diff.random <- count_diff(number_of_permutations)
df <- data.frame(diff.random = diff.random)
q2 <- quantile(diff.random, c(0.025, 0.975))
g <-
ggplot(df) +
geom_histogram(aes(diff.random), fill="light blue") +
geom_vline(xintercept=difference, color="black") # реальная разница
g = g +
geom_vline(xintercept=q2[1], color="red") +
geom_vline(xintercept=q1[2], color="red")+ labs(title = "Распределение случайных значений разницы в средних", x = "Распределение переменных", y = "Количество")+ theme_bw() + theme(text = element_text(size=11), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect())
g
\(H_0\) нет разницы во времени на работе среди возрастных категорий
Результат теста: результат недостаточно устойчив в различных аспектах. Например, разница во времени значима для пожилых людей на уровне 0,01, но зачимость не наблюдается для двух остальных категорий по критерию Хи-Квадрат. Но дисперсионный критерий Краскалла-Уолиса показывает значимость на уровне 0,01. Из полученных результатов можно предположить, что различия во времени работы для пожилых людей по религии могут объсняться их степенью отношения к религии.
#1 Различия есть
chisq = chisq.test(sel_data$age_cat, sel_data$belief_cat)
chisq$observed
## sel_data$belief_cat
## sel_data$age_cat Верующий Неверующий
## мужчины и женщины 3750 1153
## пожилые 1395 346
## репр.возр.молодежь 896 559
## школьники 198 144
#2+
#3
kruskal.test(meanhourweek~age_cat, data=sel_data) #на уровне 0.01
##
## Kruskal-Wallis rank sum test
##
## data: meanhourweek by age_cat
## Kruskal-Wallis chi-squared = 15.302, df = 3, p-value = 0.001576
Теперь проверим значимость по тесту Хи-Квадрат
#по школьникам всего одно наблюдение, поэтому мы не будем их рассматривать
#чтобы убедиться в устойчивости, сделаем еще один тест (Хи-Квадрат)
chi_data = sel_data %>% select(meanhourweek,belief_cat, age_cat)
chi_data$x1 = ifelse(sel_data$age_cat =='пожилые',1,0)
chi_data$x2 = ifelse(sel_data$age_cat =='мужчины и женщины',1,0)
chi_data$x3 = ifelse(sel_data$age_cat =='репр.возр.молодежь',1,0)
chi_data =chi_data %>% mutate_if(is.numeric, as.factor)
chi_data$meanhourweek = as.numeric(chi_data$meanhourweek)
t1 = wilcox.test(meanhourweek~x1,data = chi_data)
t2 = wilcox.test(meanhourweek~x2,data = chi_data)
t3 = wilcox.test(meanhourweek~x3,data = chi_data)
t1 #+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x1
## W = 1010702, p-value = 0.0001979
## alternative hypothesis: true location shift is not equal to 0
t2#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x2
## W = 2022106, p-value = 0.2618
## alternative hypothesis: true location shift is not equal to 0
t3#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x3
## W = 1407987, p-value = 0.1037
## alternative hypothesis: true location shift is not equal to 0
Посмотрим еще один тест на исходном столбце с данными по возрасту.
\(H_0\) нет различий в часах работы по возрасту
Наблюдается значимая разница на уровне 0,01.
independence_test(meanhourweek~age, data = sel_data)# результат значимый
##
## Asymptotic General Independence Test
##
## data: meanhourweek by age
## Z = -4.1629, p-value = 3.142e-05
## alternative hypothesis: two.sided
\(H_0\) нет разницы во времени, проводимом на работе, в зависимости от количества детей
Различия во времени работы для разных групп по религии скорее не могут объясняться количеством детей.
#1+
chisq = chisq.test(sel_data$childnum, sel_data$belief_cat)
## Warning in chisq.test(sel_data$childnum, sel_data$belief_cat): Chi-squared
## approximation may be incorrect
chisq$observed
## sel_data$belief_cat
## sel_data$childnum Верующий Неверующий
## 1 1878 556
## 2 2167 597
## 3 540 124
## 4 85 23
## 5 31 6
## 6 19 5
## 7 8 3
## 8 1 1
## 9 4 1
#2+
#3-
sel_data$childnum = as.factor(sel_data$childnum)
kruskal.test(meanhourweek~childnum, data=sel_data)
##
## Kruskal-Wallis rank sum test
##
## data: meanhourweek by childnum
## Kruskal-Wallis chi-squared = 10.367, df = 7, p-value = 0.1687
sel_data$childnum = as.numeric(sel_data$childnum)
independence_test(meanhourweek~childnum, data=sel_data)
##
## Asymptotic General Independence Test
##
## data: meanhourweek by childnum
## Z = 0.91613, p-value = 0.3596
## alternative hypothesis: two.sided
Различия во времени работы для разных групп по религии скорее не могут объясняться типом семьи (многодетная/малодетная) по критерию Манна-Уитни и по асимптотического тесту на зависимость.
a = sel_data %>% filter(fam_cat !='')
a$fam_cat = as.factor(a$fam_cat)
#1 Различия есть
chisq = chisq.test(a$fam_cat, a$belief_cat)
chisq$observed
## a$belief_cat
## a$fam_cat Верующий Неверующий
## малодетные 4045 1153
## многодетные 688 163
#2+
#3-
independence_test(meanhourweek~fam_cat,data=a)
##
## Asymptotic General Independence Test
##
## data: meanhourweek by fam_cat (малодетные, многодетные)
## Z = -1.1266, p-value = 0.2599
## alternative hypothesis: two.sided
wilcox.test(meanhourweek~fam_cat,data=a) #устойчиво незначимый результат
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by fam_cat
## W = 669456, p-value = 0.1073
## alternative hypothesis: true location shift is not equal to 0
\(H_0\) нет разницы во времени, проводимом на работе, в зависимости от статуса законченности образования
Различия во времени работы для разных групп по религии могут объясняться степенью законченности образования по критерию Манна-Уитни на уровне 0,01.
sel_data$finished = as.factor(sel_data$finished)
#1 Различия есть
chisq = chisq.test(sel_data$finished, sel_data$belief_cat)
chisq$observed
## sel_data$belief_cat
## sel_data$finished Верующий Неверующий
## законченное 5422 1741
## незакончнное 817 461
#2+
#3+
wilcox.test(meanhourweek~finished, data = sel_data)#znach
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by finished
## W = 760962, p-value = 0.004098
## alternative hypothesis: true location shift is not equal to 0
\(H_0\) нет разницы во времени, проводимом на работе, в зависимости от проф. группы человека
По критерию Краскала-Уоллиса различия во времени работы для разных групп по религии могут объясняться профессиональной группой человека
#1 Различия есть
chisq = chisq.test(sel_data$occupation, sel_data$belief_cat)
## Warning in chisq.test(sel_data$occupation, sel_data$belief_cat): Chi-squared
## approximation may be incorrect
chisq$observed
## sel_data$belief_cat
## sel_data$occupation Верующий
## военнослужащие 25
## законодатели; крупные чиновники; руководители высш. и сред. звена 220
## специалисты высшего уровня квалификации 675
## специалисты среднего уровня квалификации; чиновники 747
## служащие офисные и по обслуживанию клиентов 202
## работники сферы торговли и услуг 660
## квалифицированные работники сельского, лесного хоз-ва и рыбоводства 4
## квалифицированные рабочие, занятые ручным трудом 391
## квалифицированные рабочие, использующие машины и механизмы 382
## неквалифицированные рабочие всех отраслей 270
## sel_data$belief_cat
## sel_data$occupation Неверующий
## военнослужащие 7
## законодатели; крупные чиновники; руководители высш. и сред. звена 65
## специалисты высшего уровня квалификации 189
## специалисты среднего уровня квалификации; чиновники 218
## служащие офисные и по обслуживанию клиентов 55
## работники сферы торговли и услуг 209
## квалифицированные работники сельского, лесного хоз-ва и рыбоводства 5
## квалифицированные рабочие, занятые ручным трудом 222
## квалифицированные рабочие, использующие машины и механизмы 223
## неквалифицированные рабочие всех отраслей 83
#2+
#3+
kruskal.test(meanhourweek~occupation, data = sel_data) #значимый результат на уровне 0,01
##
## Kruskal-Wallis rank sum test
##
## data: meanhourweek by occupation
## Kruskal-Wallis chi-squared = 460.18, df = 9, p-value < 2.2e-16
Теперь сделаем тесты по каждой проф.группе и отметим, что разница незначима для двух групп:
законодатели; крупные чиновники; руководители высш. и сред. звена
квалифицированные работники сельского, лесного хоз-ва и рыбоводства
Значит, различия во времени работы для разных групп по религии могут объясняться проф.группой человека в случаях кроме вышеуказанных на уровнях 0,01
#Проверим устойчивость теста проведением теста Хи-Квадрат для каждой отдельной категории профессиональной деятельности
chi_data = sel_data %>% select(meanhourweek, belief_cat, occupation)
chi_data$x1 = ifelse(sel_data$occupation =='военнослужащие',1,0)
chi_data$x2 = ifelse(sel_data$occupation =='законодатели; крупные чиновники; руководители высш. и сред. звена',1,0)
chi_data$x3 = ifelse(sel_data$occupation =='специалисты высшего уровня квалификации',1,0)
chi_data$x4 = ifelse(sel_data$occupation =='специалисты среднего уровня квалификации; чиновники',1,0)
chi_data$x5 = ifelse(sel_data$occupation =='служащие офисные и по обслуживанию клиентов',1,0)
chi_data$x6 = ifelse(sel_data$occupation =='работники сферы торговли и услуг',1,0)
chi_data$x7 = ifelse(sel_data$occupation =='квалифицированные работники сельского, лесного хоз-ва и рыбоводства',1,0)
chi_data$x8 = ifelse(sel_data$occupation =='квалифицированные рабочие, занятые ручным трудом',1,0)
chi_data$x9 = ifelse(sel_data$occupation =='квалифицированные рабочие, использующие машины и механизмы',1,0)
chi_data$x10 = ifelse(sel_data$occupation =='неквалифицированные рабочие всех отраслей',1,0)
chi_data$x11 = ifelse(sel_data$occupation =='работники сферы торговли и услуг',1,0)
chi_data =chi_data %>% mutate_if(is.numeric, as.factor)
chi_data$meanhourweek = as.numeric(chi_data$meanhourweek)
t1 = wilcox.test(meanhourweek~x1,data = chi_data)
t2 = wilcox.test(meanhourweek~x2,data = chi_data)
t3 = wilcox.test(meanhourweek~x3,data = chi_data)
t4 = wilcox.test(meanhourweek~x4,data = chi_data)
t5 = wilcox.test(meanhourweek~x5,data = chi_data)
t6 = wilcox.test(meanhourweek~x6,data = chi_data)
t7 = wilcox.test(meanhourweek~x7,data = chi_data)
t8 = wilcox.test(meanhourweek~x8,data = chi_data)
t9 = wilcox.test(meanhourweek~x9,data = chi_data)
t10 = wilcox.test(meanhourweek~x10,data = chi_data)
t11 = wilcox.test(meanhourweek~x11,data = chi_data)
t1 #+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x1
## W = 41066, p-value = 0.0003511
## alternative hypothesis: true location shift is not equal to 0
t2#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x2
## W = 583009, p-value = 0.5457
## alternative hypothesis: true location shift is not equal to 0
t3#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x3
## W = 2183760, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
t4#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x4
## W = 1930108, p-value = 8.488e-06
## alternative hypothesis: true location shift is not equal to 0
t5#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x5
## W = 638836, p-value = 0.006268
## alternative hypothesis: true location shift is not equal to 0
t6#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x6
## W = 1228720, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
t7#-
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x7
## W = 15279, p-value = 0.3356
## alternative hypothesis: true location shift is not equal to 0
t8#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x8
## W = 1084804, p-value = 9.989e-07
## alternative hypothesis: true location shift is not equal to 0
t9#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x9
## W = 906100, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
t10#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x10
## W = 860608, p-value = 3.223e-05
## alternative hypothesis: true location shift is not equal to 0
t11#+
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x11
## W = 1228720, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
\(H_0\) нет разницы во времени, проводимом на работе в зависимости от сферы деятельности человека
По критерию Краскала-Уоллиса различия во времени работы для разных групп по религии могут объясняться сферой деятельности человека на уровне 0.01
#1 Различия есть
chisq = chisq.test(sel_data$industry, sel_data$belief_cat)
## Warning in chisq.test(sel_data$industry, sel_data$belief_cat): Chi-squared
## approximation may be incorrect
chisq$observed
## sel_data$belief_cat
## sel_data$industry Верующий Неверующий
## ЛЕГКАЯ, ПИЩЕВАЯ ПРОМЫШЛЕННОСТЬ 183 90
## ГРАЖДАНСКОЕ МАШИНОСТРОЕНИЕ 57 36
## ВОЕННО-ПРОМЫШЛЕННЫЙ КОМПЛЕКС 80 23
## НЕФТЕГАЗОВАЯ ПРОМЫШЛЕННОСТЬ 99 39
## ДРУГАЯ ОТРАСЛЬ ТЯЖЕЛОЙ ПРОМЫШЛЕННОСТИ 122 56
## СТРОИТЕЛЬСТВО 216 111
## ТРАНСПОРТ, СВЯЗЬ 306 145
## СЕЛЬСКОЕ ХОЗЯЙСТВО 105 74
## ОРГАНЫ УПРАВЛЕНИЯ 85 33
## ОБРАЗОВАНИЕ 426 90
## НАУКА, КУЛЬТУРА 119 25
## ЗДРАВООХРАНЕНИЕ 318 43
## АРМИЯ, МВД, ОРГАНЫ БЕЗОПАСНОСТИ 186 65
## ТОРГОВЛЯ, БЫТОВОЕ ОБСЛУЖИВАНИЕ 769 252
## ФИНАНСЫ 109 37
## ЭНЕРГЕТИЧЕСКАЯ ПРОМЫШЛЕННОСТЬ 61 27
## ЖИЛИЩНО-КОММУНАЛЬНОЕ ХОЗЯЙСТВО 134 56
## ОПЕРАЦИИ С НЕДВИЖИМОСТЬЮ 26 6
## СОЦИАЛЬНОЕ ОБСЛУЖИВАНИЕ 26 4
## ЮРИСПРУДЕНЦИЯ 25 3
## ЦЕРКОВЬ 3 0
## ХИМИЧЕСКАЯ ПРОМЫШЛЕННОСТЬ 6 6
## ДЕРЕВООБРАБАТЫВАЮЩАЯ ПРОМЫШЛЕННОСТЬ, ЛЕСНОЕ ХОЗЯЙСТВО 5 9
## СПОРТ, ТУРИЗМ, РАЗВЛЕЧЕНИЯ 19 10
## УСЛУГИ НАСЕЛЕНИЮ 32 8
## IT, ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ 12 9
## ЭКОЛОГИЯ, ЗАЩИТА ОКРУЖАЮЩЕЙ СРЕДЫ 2 2
## ОРГАНИЗАЦИЯ ОБЩЕСТВЕННОГО ПИТАНИЯ 6 0
## СМИ, ИЗДАТЕЛЬСТВО, ПЕЧАТЬ, ТЕЛЕКОММУНИКАЦИИ 19 7
## РЕКЛАМА, МАРКЕТИНГ 11 4
#2+
#3+
kruskal.test(meanhourweek~industry, data = sel_data)
##
## Kruskal-Wallis rank sum test
##
## data: meanhourweek by industry
## Kruskal-Wallis chi-squared = 505.61, df = 29, p-value < 2.2e-16
\(H_0\) нет разницы во времени, проводимом на работе, в зависимости от наличия подчиненных
По критерию Манна-Уитни различия во времени работы для разных групп по религии не могут объясняться наличием подчиненных, т.к результат теста статистически незначим
#1 Различия есть
chisq = chisq.test(sel_data$subordinate, sel_data$belief_cat)
chisq$observed
## sel_data$belief_cat
## sel_data$subordinate Верующий Неверующий
## Да 694 225
## Нет 2887 1057
#2+
#3-
wilcox.test(meanhourweek~subordinate, data = sel_data)
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by subordinate
## W = 1733678, p-value = 0.2072
## alternative hypothesis: true location shift is not equal to 0
\(H_0\) нет разницы во времени, проводимом на работе, в зависимости от типа трудоустройства
По критерию Манна-Уитни различия во времени работы для разных групп по религии могут объясняться типом трудоустройства, т.к результат теста статистически значим на уровне 0,01
#1 Различия есть
chisq = chisq.test(sel_data$official, sel_data$belief_cat)
chisq$observed
## sel_data$belief_cat
## sel_data$official Верующий Неверующий
## Оформлены официально 3055 1039
## Не оформлены официально 238 100
#2+
#3
wilcox.test(meanhourweek~official, sel_data)# статистически значимый результат
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by official
## W = 527905, p-value = 4.555e-06
## alternative hypothesis: true location shift is not equal to 0
Разделим частоту посещения религиозных мест по степени частотности посещений религиозных мероприятий и перейдем к тесту:
\(H_0\) нет разницы во времени, проводимом на работе, в зависимости от частоты посещения религиозных мест
По критерию Манна-Уитни различия во времени работы для разных групп по религии могут объясняться частотой посещения религиозных мероприятий, т.к результат теста статистически значим на уровне 0,1
sel_data = sel_data %>% mutate(massfreq = case_when(mass=="РАЗ В НЕДЕЛЮ ИЛИ ЧАЩЕ" |mass=="ДВА-ТРИ РАЗА В МЕСЯЦ" |mass=="РАЗ В МЕСЯЦ" ~'часто',mass=="НИКОГДА НЕ ПОСЕЩАЮ" | mass=="РЕЖЕ, ЧЕМ РАЗ В ГОД"| mass=="РАЗ В ГОД"|mass=="НЕСКОЛЬКО РАЗ В ГОД" ~ 'редко', T~'unknown'))
sel_data$massfreq = as.factor(sel_data$massfreq)
sel_data$x = ifelse(sel_data$massfreq=='часто',1,0)
sel_data$x = as.factor(sel_data$x)
#1 Различия есть
chisq = chisq.test(sel_data$x, sel_data$belief_cat)
chisq$observed
## sel_data$belief_cat
## sel_data$x Верующий Неверующий
## 0 5734 2202
## 1 505 0
#2+
#3
wilcox.test(meanhourweek~x, sel_data)# статистически значимый результат
##
## Wilcoxon rank sum test with continuity correction
##
## data: meanhourweek by x
## W = 631899, p-value = 0.008283
## alternative hypothesis: true location shift is not equal to 0
independence_test(meanhourweek~x, data = sel_data)
##
## Asymptotic General Independence Test
##
## data: meanhourweek by x (0, 1)
## Z = 1.7464, p-value = 0.08074
## alternative hypothesis: two.sided
legend_title <- "Частота посещения религиозных мероприятий"
ggplot(data =subset(sel_data,!is.na(belief_cat)))+geom_boxplot(mapping = aes(x = as.factor(belief_cat), y=as.numeric(meanhourweek),fill = x), na.rm=T)+ labs(title = "Разница во времени, отведенном на работу в неделю, по частоте посещения религиозных мест", x = "Категория", y = "Количество часов в неделю")+ theme_bw() + theme(text = element_text(size=8), axis.text.x = element_text(angle=45, hjust=1), plot.background = element_rect()) + scale_fill_manual(legend_title,values=c("light blue"," cadetblue4"))
очень высокие значения ошибок и очень низкие R-squared
sel_data$childnum = as.numeric(sel_data$childnum)
regr = lm(meanhourweek~age+ childnum + sex + belief_cat + finished + massfreq+occupation +subordinate +mondaywage+secondjob+owner+sex*belief_cat*marital1, data = sel_data)
summary(regr)
##
## Call:
## lm(formula = meanhourweek ~ age + childnum + sex + belief_cat +
## finished + massfreq + occupation + subordinate + mondaywage +
## secondjob + owner + sex * belief_cat * marital1, data = sel_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -49.804 -5.240 -1.029 3.395 47.164
##
## Coefficients:
## Estimate
## (Intercept) 4.586e+01
## age -7.017e-02
## childnum 1.039e-01
## sexЖЕНСКИЙ -2.840e+00
## belief_catНеверующий 1.931e+00
## finishedнезакончнное 1.386e-01
## massfreqредко 9.549e-01
## massfreqчасто 1.036e+00
## occupationзаконодатели; крупные чиновники; руководители высш. и сред. звена -4.566e+00
## occupationспециалисты высшего уровня квалификации -6.517e+00
## occupationспециалисты среднего уровня квалификации; чиновники -2.710e+00
## occupationслужащие офисные и по обслуживанию клиентов -3.034e+00
## occupationработники сферы торговли и услуг 2.926e+00
## occupationквалифицированные работники сельского, лесного хоз-ва и рыбоводства -1.190e+01
## occupationквалифицированные рабочие, занятые ручным трудом -1.898e+00
## occupationквалифицированные рабочие, использующие машины и механизмы 4.178e-01
## occupationнеквалифицированные рабочие всех отраслей -4.385e+00
## subordinateНет -1.848e+00
## mondaywage 1.876e-03
## secondjobНет 3.096e+00
## ownerНет -2.610e+00
## marital1не в браке 1.133e+00
## sexЖЕНСКИЙ:belief_catНеверующий -2.248e+00
## sexЖЕНСКИЙ:marital1не в браке -1.318e+00
## belief_catНеверующий:marital1не в браке -7.194e-03
## sexЖЕНСКИЙ:belief_catНеверующий:marital1не в браке 2.102e+00
## Std. Error
## (Intercept) 3.326e+00
## age 1.732e-02
## childnum 2.314e-01
## sexЖЕНСКИЙ 5.212e-01
## belief_catНеверующий 1.835e+00
## finishedнезакончнное 7.074e-01
## massfreqредко 1.756e+00
## massfreqчасто 1.895e+00
## occupationзаконодатели; крупные чиновники; руководители высш. и сред. звена 2.263e+00
## occupationспециалисты высшего уровня квалификации 2.197e+00
## occupationспециалисты среднего уровня квалификации; чиновники 2.192e+00
## occupationслужащие офисные и по обслуживанию клиентов 2.306e+00
## occupationработники сферы торговли и услуг 2.218e+00
## occupationквалифицированные работники сельского, лесного хоз-ва и рыбоводства 6.292e+00
## occupationквалифицированные рабочие, занятые ручным трудом 2.223e+00
## occupationквалифицированные рабочие, использующие машины и механизмы 2.226e+00
## occupationнеквалифицированные рабочие всех отраслей 2.288e+00
## subordinateНет 5.373e-01
## mondaywage 4.192e-04
## secondjobНет 9.630e-01
## ownerНет 1.226e+00
## marital1не в браке 1.365e+00
## sexЖЕНСКИЙ:belief_catНеверующий 1.045e+00
## sexЖЕНСКИЙ:marital1не в браке 1.482e+00
## belief_catНеверующий:marital1не в браке 2.098e+00
## sexЖЕНСКИЙ:belief_catНеверующий:marital1не в браке 2.502e+00
## t value
## (Intercept) 13.787
## age -4.051
## childnum 0.449
## sexЖЕНСКИЙ -5.448
## belief_catНеверующий 1.053
## finishedнезакончнное 0.196
## massfreqредко 0.544
## massfreqчасто 0.547
## occupationзаконодатели; крупные чиновники; руководители высш. и сред. звена -2.017
## occupationспециалисты высшего уровня квалификации -2.966
## occupationспециалисты среднего уровня квалификации; чиновники -1.236
## occupationслужащие офисные и по обслуживанию клиентов -1.316
## occupationработники сферы торговли и услуг 1.319
## occupationквалифицированные работники сельского, лесного хоз-ва и рыбоводства -1.892
## occupationквалифицированные рабочие, занятые ручным трудом -0.854
## occupationквалифицированные рабочие, использующие машины и механизмы 0.188
## occupationнеквалифицированные рабочие всех отраслей -1.917
## subordinateНет -3.439
## mondaywage 4.474
## secondjobНет 3.215
## ownerНет -2.129
## marital1не в браке 0.830
## sexЖЕНСКИЙ:belief_catНеверующий -2.150
## sexЖЕНСКИЙ:marital1не в браке -0.889
## belief_catНеверующий:marital1не в браке -0.003
## sexЖЕНСКИЙ:belief_catНеверующий:marital1не в браке 0.840
## Pr(>|t|)
## (Intercept) < 2e-16
## age 5.23e-05
## childnum 0.653539
## sexЖЕНСКИЙ 5.48e-08
## belief_catНеверующий 0.292613
## finishedнезакончнное 0.844729
## massfreqредко 0.586645
## massfreqчасто 0.584514
## occupationзаконодатели; крупные чиновники; руководители высш. и сред. звена 0.043762
## occupationспециалисты высшего уровня квалификации 0.003043
## occupationспециалисты среднего уровня квалификации; чиновники 0.216578
## occupationслужащие офисные и по обслуживанию клиентов 0.188341
## occupationработники сферы торговли и услуг 0.187247
## occupationквалифицированные работники сельского, лесного хоз-ва и рыбоводства 0.058563
## occupationквалифицированные рабочие, занятые ручным трудом 0.393192
## occupationквалифицированные рабочие, использующие машины и механизмы 0.851097
## occupationнеквалифицированные рабочие всех отраслей 0.055325
## subordinateНет 0.000592
## mondaywage 7.95e-06
## secondjobНет 0.001318
## ownerНет 0.033350
## marital1не в браке 0.406326
## sexЖЕНСКИЙ:belief_catНеверующий 0.031615
## sexЖЕНСКИЙ:marital1не в браке 0.373911
## belief_catНеверующий:marital1не в браке 0.997264
## sexЖЕНСКИЙ:belief_catНеверующий:marital1не в браке 0.400913
##
## (Intercept) ***
## age ***
## childnum
## sexЖЕНСКИЙ ***
## belief_catНеверующий
## finishedнезакончнное
## massfreqредко
## massfreqчасто
## occupationзаконодатели; крупные чиновники; руководители высш. и сред. звена *
## occupationспециалисты высшего уровня квалификации **
## occupationспециалисты среднего уровня квалификации; чиновники
## occupationслужащие офисные и по обслуживанию клиентов
## occupationработники сферы торговли и услуг
## occupationквалифицированные работники сельского, лесного хоз-ва и рыбоводства .
## occupationквалифицированные рабочие, занятые ручным трудом
## occupationквалифицированные рабочие, использующие машины и механизмы
## occupationнеквалифицированные рабочие всех отраслей .
## subordinateНет ***
## mondaywage ***
## secondjobНет **
## ownerНет *
## marital1не в браке
## sexЖЕНСКИЙ:belief_catНеверующий *
## sexЖЕНСКИЙ:marital1не в браке
## belief_catНеверующий:marital1не в браке
## sexЖЕНСКИЙ:belief_catНеверующий:marital1не в браке
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.14 on 3159 degrees of freedom
## (5657 observations deleted due to missingness)
## Multiple R-squared: 0.1362, Adjusted R-squared: 0.1294
## F-statistic: 19.93 on 25 and 3159 DF, p-value: < 2.2e-16