library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(haven)
## Warning: package 'haven' was built under R version 4.0.4
library(writexl)
## Warning: package 'writexl' was built under R version 4.0.5
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.5
library(GGally)
## Warning: package 'GGally' was built under R version 4.0.5
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
data2019 = read_sav("r28iall_42.sav")

data = data2019 %>% select(xl90, xj60, xj13.2, x_age, xj21.3, status, x_age, xh5, xj4.1, xj6.2, xj11.1, xj29, xj72.171, xj72.173, xm20.61, xm20.62, xm20.63, xm20.64, xm20.65, xm20.66, xm20.620, xm20.69, xm20.610, xm20.611, xm20.612, xm20.613, xm20.614, xm20.615, xm20.616, xm20.617, xm20.618, xm20.619, xm20.67, xm20.7, xm39) 

data = data %>% filter(is.na(xl90) == FALSE & is.na(xj60) == FALSE & is.na(xj13.2) == FALSE)

data$xl90 = as.numeric(data$xl90)
data$xj60 = as.numeric(data$xj60)
data$xj13.2 = as.numeric(data$xj13.2)
data$x_age = as.numeric(data$x_age)
data$xj21.3 = as.numeric(data$xj21.3)
data$status = as.numeric(data$status)
data$xh5 = as.numeric(data$xh5)
data$xj4.1 = as.numeric(data$xj4.1)
data$xj6.2 = as.numeric(data$xj6.2)
data$xj11.1 = as.numeric(data$xj11.1)
data$xj29 = as.numeric(data$xj29)
data$xj72.171 = as.numeric(data$xj72.171)
data$xj72.173 = as.numeric(data$xj72.173)
data$xm20.61 = as.numeric(data$xm20.61)
data$xm20.62 = as.numeric(data$xm20.62)
data$xm20.63 = as.numeric(data$xm20.63)
data$xm20.64 = as.numeric(data$xm20.64)
data$xm20.65 = as.numeric(data$xm20.65)
data$xm20.66 = as.numeric(data$xm20.66)
data$xm20.620 = as.numeric(data$xm20.620)
data$xm20.69 = as.numeric(data$xm20.69)
data$xm20.610 = as.numeric(data$xm20.610)
data$xm20.611 = as.numeric(data$xm20.611)
data$xm20.612 = as.numeric(data$xm20.612)
data$xm20.613 = as.numeric(data$xm20.613)
data$xm20.614 = as.numeric(data$xm20.614)
data$xm20.615 = as.numeric(data$xm20.615)
data$xm20.616 = as.numeric(data$xm20.616)
data$xm20.617 = as.numeric(data$xm20.617)
data$xm20.618 = as.numeric(data$xm20.618)
data$xm20.619 = as.numeric(data$xm20.619)
data$xm20.67 = as.numeric(data$xm20.67)
data$xm20.7 = as.numeric(data$xm20.7)
data$xm39 = as.numeric(data$xm39)

data[is.na(data$xj72.173), "xj72.173"] <- 0 #про детей моложе 18
data[is.na(data$xm20.614), "xm20.614"] <- 2 #про гинекологические заболевания

data = data %>% filter(xm39 < 9999990) %>% filter(xm20.7 < 9999990) %>% filter(xm20.618 < 9999990) %>% filter(xm20.617 < 9999990) %>% filter(xm20.616 < 9999990) %>% filter(xm20.615 < 9999990) %>% filter(xm20.613 < 9999990) %>% filter(xm20.612 < 9999990) %>% filter(xm20.610 < 9999990) %>% filter(xm20.620 < 9999990) %>% filter(xm20.64 < 9999990) %>% filter(xm20.63 < 9999990) %>% filter(xm20.62 < 9999990) %>% filter(xj72.173 < 9999990) %>% filter(xj72.171 < 9999990) %>% filter(xj4.1 < 9999990) %>% filter(xh5 < 9999990) %>% filter(status < 9999990) %>% filter(x_age < 9999990) %>% filter(xl90 < 9999990)  %>% filter(xj13.2 < 9999990) %>% filter(xj60 < 9999990) %>% filter(xj21.3 < 9999990) %>% filter(xj6.2 < 99999990) %>% filter(xj11.1 < 9999990) %>% filter(xj29 < 9999990) %>% filter(xm20.61 < 9999990) %>% filter(xm20.65 < 9999990) %>% filter(xm20.66 < 9999990) %>% filter(xm20.69 < 9999990) %>% filter(xm20.611 < 9999990) %>% filter(xm20.619 < 9999990) %>% filter(xm20.67 < 9999990) %>% filter(xm20.614 < 9999990)

data[data$xm20.61 == 2, "xm20.61"] <- 0
data[data$xm20.62 == 2, "xm20.62"] <- 0
data[data$xm20.63 == 2, "xm20.63"] <- 0
data[data$xm20.64 == 2, "xm20.64"] <- 0
data[data$xm20.65 == 2, "xm20.65"] <- 0
data[data$xm20.66 == 2, "xm20.66"] <- 0
data[data$xm20.67 == 2, "xm20.67"] <- 0
data[data$xm20.69 == 2, "xm20.69"] <- 0
data[data$xm20.610 == 2, "xm20.610"] <- 0
data[data$xm20.611 == 2, "xm20.611"] <- 0
data[data$xm20.612 == 2, "xm20.612"] <- 0
data[data$xm20.613 == 2, "xm20.613"] <- 0
data[data$xm20.614 == 2, "xm20.614"] <- 0
data[data$xm20.615 == 2, "xm20.615"] <- 0
data[data$xm20.616 == 2, "xm20.616"] <- 0
data[data$xm20.617 == 2, "xm20.617"] <- 0
data[data$xm20.618 == 2, "xm20.618"] <- 0
data[data$xm20.619 == 2, "xm20.619"] <- 0
data[data$xm20.620 == 2, "xm20.620"] <- 0
data = data %>% mutate(quant_chron_zabol = xm20.61 + xm20.62 + xm20.620 + xm20.63 + xm20.64 + xm20.65 + xm20.66 + xm20.67 + xm20.69 + xm20.610 + xm20.611 + xm20.612 + xm20.613 + xm20.614 + xm20.615 + xm20.616 + xm20.617 + xm20.618 + xm20.619) %>% dplyr::select(-xm20.61,-xm20.62,-xm20.620,-xm20.63,-xm20.64,-xm20.65,-xm20.66,-xm20.67,-xm20.69,-xm20.610,-xm20.611,-xm20.612,-xm20.613,-xm20.614,-xm20.615,-xm20.616,-xm20.617,-xm20.618,-xm20.619)

data$xj21.3 = as.factor(data$xj21.3)
data$status = as.factor(data$status)
data$xh5 = as.factor(data$xh5)
data$xj4.1 = as.factor(data$xj4.1)
data$xj11.1 = as.factor(data$xj11.1)
data$xj29 = as.factor(data$xj29)
data$xj72.171 = as.factor(data$xj72.171)
data$xj72.173 = as.factor(data$xj72.173)
data$xm20.7 = as.factor(data$xm20.7)
data$xm39 = as.factor(data$xm39)

data = data %>% filter(xj60 > 0, xj13.2 > 0, xj6.2 < 100)
data$xl90 = data$xl90/12

colnames(data)
##  [1] "xl90"              "xj60"              "xj13.2"           
##  [4] "x_age"             "xj21.3"            "status"           
##  [7] "xh5"               "xj4.1"             "xj6.2"            
## [10] "xj11.1"            "xj29"              "xj72.171"         
## [13] "xj72.173"          "xm20.7"            "xm39"             
## [16] "quant_chron_zabol"
colnames(data) = c("sick_days", "monthly_income", "average_wage", "age", "harmful_work", "status", "gender", "branch", "hours", "official_work", "entrepreneurship", "children", "children_count", "disability", "operations", "quant_chron_zabol")
summary(data)
##    sick_days        monthly_income     average_wage         age       
##  Min.   : 0.08333   Min.   :   1800   Min.   :  3000   Min.   :18.00  
##  1st Qu.: 0.58333   1st Qu.:  20000   1st Qu.: 18000   1st Qu.:33.00  
##  Median : 0.83333   Median :  30000   Median : 25000   Median :41.00  
##  Mean   : 1.34806   Mean   :  40875   Mean   : 30641   Mean   :42.11  
##  3rd Qu.: 1.50000   3rd Qu.:  43000   3rd Qu.: 38000   3rd Qu.:51.00  
##  Max.   :22.91667   Max.   :2550000   Max.   :420000   Max.   :80.00  
##                                                                       
##  harmful_work status  gender      branch        hours       official_work
##  1: 211       1:639   1:529   14     :242   Min.   : 4.00   1:1259       
##  2:1096       2:388   2:778   10     :159   1st Qu.:40.00   2:  48       
##               3: 57           7      :132   Median :40.00                
##               4:223           12     :102   Mean   :42.01                
##                               1      : 87   3rd Qu.:45.00                
##                               6      : 74   Max.   :96.00                
##                               (Other):511                                
##  entrepreneurship children children_count disability operations
##  1:  44           1:1050   0:715          1:  43     1: 111    
##  2:1263           2: 257   1:330          2:1264     2:1196    
##                            2:218                               
##                            3: 39                               
##                            4:  3                               
##                            5:  1                               
##                            6:  1                               
##  quant_chron_zabol
##  Min.   : 0.000   
##  1st Qu.: 0.000   
##  Median : 1.000   
##  Mean   : 1.744   
##  3rd Qu.: 3.000   
##  Max.   :13.000   
## 
ggplot(data, mapping = aes(x = as.numeric(monthly_income), y = sick_days)) + 
  geom_point(alpha = 0.5) +
  scale_x_log10() +
  scale_y_log10() +
  ggtitle('Соотношение логарифма количества пропущенных дней на логарифм дохода') +
  xlab('Логарифм общего дохода за последний месяц') +
  ylab('Логарифм среднего количества пропущенных дней за месяц')

ggplot(data, mapping = aes(x = average_wage , y = sick_days)) + 
  geom_point(alpha = 0.5) +
  scale_x_log10() +
  scale_y_log10() +
  ggtitle('Соотношение логарифма количества пропущенных дней на логарифм зп') +
  xlab('Логарифм общего средней зп за год') +
  ylab('Логарифм среднего количества пропущенных дней за месяц')

ggplot(data, mapping = aes(x = monthly_income, y = sick_days, color = operations)) + 
  geom_point(alpha = 0.5) +
  scale_x_log10() +
  scale_y_log10() +
  scale_color_discrete(name = "Наличие операций",labels=c("Да", "Нет")) +
  ggtitle('Соотношение логарифма количества пропущенных рабочих дней\n на логарифм дохода',
          subtitle = 'Распределение по наличию хирургических операций за последние 12 месяцев') +
  xlab('Логарифм общего дохода за последний месяц') +
  ylab('Логарифм среднего количества пропущенных дней за месяц')

ggplot(data = data)+
  geom_bar(aes(x = gender, fill = gender))+
    ggtitle('Распределение полов в выборке') +
    scale_fill_discrete(name = "Пол",labels=c("Мужской", "Женский")) +
  xlab('Пол') +
  ylab('Количество')

ggplot(data = data)+
  geom_bar(aes(x = status, fill = status))+
    ggtitle('Распределение типов населенного пункта в выборке') +
  scale_fill_discrete(name = "Тип",labels=c("Областной центр", "Город", "ПГТ", "Село")) +
  xlab('Тип') +
  ylab('Количество')

ggplot(data = data)+
  geom_bar(aes(x = age))+
    ggtitle('Распределение возрастов в выборке') +
  xlab('Возраст') +
  ylab('Количество')

ggplot(data = data)+
  geom_bar(aes(x = children_count))+
    ggtitle('Распределение по количеству детей младше 18-ти лет в выборке') +
  xlab('Количество детей') +
  ylab('Количество респондентов')

ggplot(data = data)+
  geom_bar(aes(x = official_work, fill = official_work))+
    ggtitle('Распределение количества работающих по трудовому договору в выборке') +
  scale_fill_discrete(name = "Да/Нет",labels=c("Да", "Нет")) +
  xlab('Наличие договора') +
  ylab('Количество респондентов')

ggplot(data = data)+
  geom_bar(aes(x = entrepreneurship, fill = entrepreneurship))+
    ggtitle('Распределение количества занимающихся\n предпринимательством в выборке') +
  scale_fill_discrete(name = "Да/Нет",labels=c("Да", "Нет")) +
  xlab('Предприминательская ли деятельность') +
  ylab('Количество респондентов')

ggplot(data = data)+
  geom_bar(aes(x = disability, fill = disability))+
    ggtitle('Распределение количества человек имеющих инвалидность в выборке') +
  scale_fill_discrete(name = "Да/Нет",labels=c("Да", "Нет")) +
  xlab('Наличие инвалидности') +
  ylab('Количество респондентов')

ggplot(data = data)+
  geom_bar(aes(x = branch, fill = branch))+
    ggtitle('Распределение по отраслям в выборке')+
  xlab('Номер отрасли') +
  ylab('Количество респондентов') +
  scale_fill_discrete(name = "Отрасль")#, labels=c('ЛЕГКАЯ, ПИЩЕВАЯ ПРОМЫШЛЕННОСТЬ', 'ГРАЖДАНСКОЕ МАШИНОСТРОЕНИЕ', 'ВОЕННО-ПРОМЫШЛЕННЫЙ КОМПЛЕКС', 'НЕФТЕГАЗОВАЯ ПРОМЫШЛЕННОСТЬ', 'ДРУГАЯ ОТРАСЛЬ ТЯЖЕЛОЙ ПРОМЫШЛЕННОСТИ', 'СТРОИТЕЛЬСТВО', 'ТРАНСПОРТ, СВЯЗЬ', 'СЕЛЬСКОЕ ХОЗЯЙСТВО', 'ОРГАНЫ УПРАВЛЕНИЯ', 'ОБРАЗОВАНИЕ', 'НАУКА, КУЛЬТУРА', 'ЗДРАВООХРАНЕНИЕ', 'АРМИЯ, МВД, ОРГАНЫ БЕЗОПАСНОСТИ', 'ТОРГОВЛЯ, БЫТОВОЕ ОБСЛУЖИВАНИЕ', 'ФИНАНСЫ', 'ЭНЕРГЕТИЧЕСКАЯ ПРОМЫШЛЕННОСТЬ', 'ЖИЛИЩНО-КОММУНАЛЬНОЕ ХОЗЯЙСТВО', 'ОПЕРАЦИИ С НЕДВИЖИМОСТЬЮ', 'СОЦИАЛЬНОЕ ОБСЛУЖИВАНИЕ', "ЮРИСПРУДЕНЦИЯ", 'ЦЕРКОВЬ', "ХИМИЧЕСКАЯ ПРОМЫШЛЕННОСТЬ", "ДЕРЕВООБРАБАТЫВАЮЩАЯ ПРОМЫШЛЕННОСТЬ, ЛЕСНОЕ ХОЗЯЙСТВО", "СПОРТ, ТУРИЗМ, РАЗВЛЕЧЕНИЯ", "УСЛУГИ НАСЕЛЕНИЮ", "IT, ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ", "ЭКОЛОГИЯ, ЗАЩИТА ОКРУЖАЮЩЕЙ СРЕДЫ", "ОРГАНИЗАЦИЯ ОБЩЕСТВЕННОГО ПИТАНИЯ", "СМИ, ИЗДАТЕЛЬСТВО, ПЕЧАТЬ, ТЕЛЕКОММУНИКАЦИИ", "РЕКЛАМА, МАРКЕТИНГ", "ОБЩЕСТВЕННЫЕ ОРГАНИЗАЦИИ, СОВЕТ ВЕТЕРАНОВ И ПР.")) +

model = lm(log(sick_days) ~ log(monthly_income), data)
summary(model)
## 
## Call:
## lm(formula = log(sick_days) ~ log(monthly_income), data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.44875 -0.47289 -0.05522  0.50974  3.06295 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)   
## (Intercept)           1.1674     0.3893   2.999  0.00276 **
## log(monthly_income)  -0.1222     0.0376  -3.249  0.00119 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8335 on 1305 degrees of freedom
## Multiple R-squared:  0.008022,   Adjusted R-squared:  0.007262 
## F-statistic: 10.55 on 1 and 1305 DF,  p-value: 0.001189