library(readxl)
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

Импортируем данные

df <- read_excel("../Книга1.xlsx", sheet = 1)

Проверка

str(df)
## Classes 'tbl_df', 'tbl' and 'data.frame':    583 obs. of  3 variables:
##  $ Возраст: num  12 12 12 12 12 12 12 12 12 12 ...
##  $ Пол    : num  2 2 2 1 1 2 1 1 1 1 ...
##  $ 9      : num  4 3 3 4 4 2 3 3 3 4 ...
summary(df)
##     Возраст           Пол              9        
##  Min.   :12.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:13.00   1st Qu.:1.000   1st Qu.:3.000  
##  Median :14.00   Median :2.000   Median :4.000  
##  Mean   :14.44   Mean   :1.513   Mean   :3.458  
##  3rd Qu.:16.00   3rd Qu.:2.000   3rd Qu.:4.000  
##  Max.   :17.00   Max.   :2.000   Max.   :4.000

Редактируем названия и типы шкал rename()

df <- df %>%
        rename(Age = Возраст, Sex = Пол, Q9 = "9") %>% 
        mutate(Sex = factor(Sex, levels = c(1, 2), labels = c("Пол1", "Пол2") )) %>% 
        mutate(Q9 = factor(Q9, levels = c(1:4)
                           , labels = c("проблема_1", "проблема_2", "проблема_3", "проблема_4")))

Частотные таблицы

table(df$Age)
## 
##  12  13  14  15  16  17 
##  38 116 160 121 118  30
table(df$Sex)
## 
## Пол1 Пол2 
##  284  299
table(df$Q9)
## 
## проблема_1 проблема_2 проблема_3 проблема_4 
##          7         14        267        295

Перекрестные таблицы

t_AS <- table(df$Age, df$Sex)
t_AQ <- table(df$Age, df$Q9)
t_SQ <- table(df$Sex, df$Q9)
t_SQA <- table(df$Sex, df$Q9, df$Age)

Так как есть нулевые значения в некоторых клетках, то Хи-квадрат может показывать неадеватные результаты. Дополнительно использовал Точный критерий фишера.

Пол х Проблема

t_SQ
##       
##        проблема_1 проблема_2 проблема_3 проблема_4
##   Пол1          4          6        131        143
##   Пол2          3          8        136        152
chisq.test(t_SQ)
## Warning in chisq.test(t_SQ): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  t_SQ
## X-squared = 0.41112, df = 3, p-value = 0.9379
fisher.test(t_SQ, simulate.p.value = TRUE)
## 
##  Fisher's Exact Test for Count Data with simulated p-value (based
##  on 2000 replicates)
## 
## data:  t_SQ
## p-value = 0.9445
## alternative hypothesis: two.sided

Значимых отличий не обнаружено.

Возрст х Проблема

t_AQ
##     
##      проблема_1 проблема_2 проблема_3 проблема_4
##   12          0          3         20         15
##   13          1          3         61         51
##   14          3          2         64         91
##   15          1          3         57         60
##   16          1          3         51         63
##   17          1          0         14         15
chisq.test(t_AQ)
## Warning in chisq.test(t_AQ): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  t_AQ
## X-squared = 15.324, df = 15, p-value = 0.4283
fisher.test(t_AQ, simulate.p.value = TRUE)
## 
##  Fisher's Exact Test for Count Data with simulated p-value (based
##  on 2000 replicates)
## 
## data:  t_AQ
## p-value = 0.4363
## alternative hypothesis: two.sided

Значимых отличий не обнаруежено

Возраст х Пол

t_AS
##     
##      Пол1 Пол2
##   12   12   26
##   13   46   70
##   14   88   72
##   15   70   51
##   16   52   66
##   17   16   14
chisq.test(t_AS)
## 
##  Pearson's Chi-squared test
## 
## data:  t_AS
## X-squared = 16.126, df = 5, p-value = 0.006493
fisher.test(t_AS, simulate.p.value = TRUE)
## 
##  Fisher's Exact Test for Count Data with simulated p-value (based
##  on 2000 replicates)
## 
## data:  t_AS
## p-value = 0.005997
## alternative hypothesis: two.sided

Возраст и пол распределены неравномерно p = 0,006

Пол х Проблема х Возраст

t_SQA
## , ,  = 12
## 
##       
##        проблема_1 проблема_2 проблема_3 проблема_4
##   Пол1          0          1          6          5
##   Пол2          0          2         14         10
## 
## , ,  = 13
## 
##       
##        проблема_1 проблема_2 проблема_3 проблема_4
##   Пол1          1          1         26         18
##   Пол2          0          2         35         33
## 
## , ,  = 14
## 
##       
##        проблема_1 проблема_2 проблема_3 проблема_4
##   Пол1          1          1         37         49
##   Пол2          2          1         27         42
## 
## , ,  = 15
## 
##       
##        проблема_1 проблема_2 проблема_3 проблема_4
##   Пол1          1          2         31         36
##   Пол2          0          1         26         24
## 
## , ,  = 16
## 
##       
##        проблема_1 проблема_2 проблема_3 проблема_4
##   Пол1          0          1         24         27
##   Пол2          1          2         27         36
## 
## , ,  = 17
## 
##       
##        проблема_1 проблема_2 проблема_3 проблема_4
##   Пол1          1          0          7          8
##   Пол2          0          0          7          7

График

Пол и тип ответа

barplot(t_SQ, legend.text = TRUE)

Возраст и тип ответа

barplot(t_AQ, legend.text = TRUE)

Возраст и Пол

mosaicplot(t_AS)