Анализируются различия в оценках уверенности в нахождении заработка (V21) в зависимости от образования (высшее / без высшего).
if (!require("readxl")) install.packages("readxl", repos = "https://cran.r-project.org")
if (!require("knitr")) install.packages("knitr", repos = "https://cran.r-project.org")
if (!require("kableExtra")) install.packages("kableExtra", repos = "https://cran.r-project.org")
if (!require("ggplot2")) install.packages("ggplot2", repos = "https://cran.r-project.org")
if (!require("vcd")) install.packages("vcd", repos = "https://cran.r-project.org")
if (!require("DescTools")) install.packages("DescTools", repos = "https://cran.r-project.org")
library(readxl); library(knitr); library(kableExtra); library(ggplot2); library(vcd); library(DescTools)
data <- read_excel("База по климату.xlsx")
df <- data.frame(V21 = as.numeric(data$V21), education_raw = as.numeric(data$V33))
df <- df[complete.cases(df), ]
df <- df[df$V21 != 99, ]
df <- df[df$education_raw %in% c(1, 2, 3, 4), ]
df$education <- factor(ifelse(df$education_raw == 4, "Высшее", "Без высшего"), levels = c("Без высшего", "Высшее"))
df$confidence <- factor(df$V21, levels = 1:5, labels = c("Абсолютно уверен", "Скорее уверен", "Затрудняюсь", "Скорее не уверен", "Совсем не уверен"))
n_total <- nrow(df)
n_higher <- sum(df$education == "Высшее"); n_no_higher <- sum(df$education == "Без высшего")
Комментарий: После очистки (исключение кода 99 и пропусков) осталось 665 наблюдений. С высшим образованием — 68 (10.2%), без высшего — 597 (89.8%).
ct <- table(df$education, df$confidence)
kable(ct, caption = "Таблица 1 — Образование × Уверенность в заработке (абс.)") %>% kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
| Абсолютно уверен | Скорее уверен | Затрудняюсь | Скорее не уверен | Совсем не уверен | |
|---|---|---|---|---|---|
| Без высшего | 143 | 157 | 94 | 108 | 95 |
| Высшее | 12 | 7 | 26 | 12 | 11 |
ct_pct <- round(prop.table(ct, margin = 1) * 100, 1)
kable(ct_pct, caption = "Таблица 2 — Распределение по строкам (%)") %>% kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
| Абсолютно уверен | Скорее уверен | Затрудняюсь | Скорее не уверен | Совсем не уверен | |
|---|---|---|---|---|---|
| Без высшего | 24.0 | 26.3 | 15.7 | 18.1 | 15.9 |
| Высшее | 17.6 | 10.3 | 38.2 | 17.6 | 16.2 |
# Доля "уверенных" (1+2) по группам
confident_higher <- round(sum(ct_pct["Высшее", 1:2]), 1)
confident_no <- round(sum(ct_pct["Без высшего", 1:2]), 1)
not_conf_higher <- round(sum(ct_pct["Высшее", 4:5]), 1)
not_conf_no <- round(sum(ct_pct["Без высшего", 4:5]), 1)
Вывод по таблице: Среди респондентов с высшим образованием «уверены» или «скорее уверены» в нахождении заработка 27.9%, без высшего — 50.3%. «Не уверены» или «совсем не уверены»: высшее — 33.8%, без высшего — 34%. Респонденты без высшего образования более уверены.
chi_test <- chisq.test(ct)
chi_stat <- round(chi_test$statistic, 3)
chi_df <- chi_test$parameter
chi_p <- chi_test$p.value
| Показатель | Значение |
|---|---|
| χ² Пирсона | 24.502 |
| Степени свободы | 4 |
| p-value | 6.334e-05 |
| Вывод | Связь СТАТИСТИЧЕСКИ ЗНАЧИМА (p < 0.05) |
Вывод: χ² = 24.502, p = 6.334e-05. Отвергаем H₀ о независимости: уровень образования значимо связан с уверенностью в заработке.
cramer_v <- round(sqrt(chi_test$statistic / (sum(ct) * (min(dim(ct)) - 1))), 4)
strength <- ifelse(cramer_v < 0.1, "слабая", ifelse(cramer_v < 0.3, "умеренная", "сильная"))
Вывод: Коэффициент Крамера V = 0.192 — умеренная связь между образованием и уверенностью в заработке.
mosaic(~ education + confidence, data = df, shade = TRUE, legend = TRUE,
direction = c("v", "h"),
main = "Образование × Уверенность в заработке",
gp_labels = gpar(fontsize = 9))
Рис. 1 — Мозаичная диаграмма
Вывод по графику: Площадь каждого прямоугольника пропорциональна частоте. Синие ячейки — наблюдаемая частота выше ожидаемой (данная комбинация образования и уверенности встречается чаще, чем при независимости). Красные — ниже ожидаемой. Насыщенность цвета отражает силу отклонения. Окрашенные ячейки подтверждают значимую ассоциацию.
assoc(ct, shade = TRUE, main = "Ассоциативный график: Образование × Уверенность")
Рис. 2 — Ассоциативный график
Вывод по графику: Столбики выше нулевой линии — частота превышает ожидаемую, ниже — меньше ожидаемой. Цвет отражает уровень значимости стандартизированных остатков Пирсона. Этот график дополняет мозаичную диаграмму, акцентируя направление отклонений.
ggplot(df, aes(x = confidence, fill = education)) +
geom_bar(position = "dodge") +
labs(title = "Уверенность в заработке по уровню образования", x = "Уровень уверенности (V21)", y = "Количество", fill = "Образование") +
scale_fill_manual(values = c("Без высшего" = "#8B9F6B", "Высшее" = "#5C6B3C")) +
theme_minimal() + theme(axis.text.x = element_text(angle = 25, hjust = 1))
Рис. 3 — Распределение уверенности по образованию
Вывод по графику: Столбчатая диаграмма наглядно показывает абсолютные частоты. Группа «без высшего» существенно больше, поэтому для корректного сравнения следует ориентироваться на процентные распределения (Таблица 2).
wilcox_test <- wilcox.test(V21 ~ education, data = df)
w_stat <- round(wilcox_test$statistic, 1)
w_p <- wilcox_test$p.value
median_higher <- median(df$V21[df$education == "Высшее"])
median_no <- median(df$V21[df$education == "Без высшего"])
mean_higher <- round(mean(df$V21[df$education == "Высшее"]), 2)
mean_no <- round(mean(df$V21[df$education == "Без высшего"]), 2)
| Показатель | Без высшего | Высшее |
|---|---|---|
| Медиана V21 | 2 | 3 |
| Среднее V21 | 2.76 | 3.04 |
| Тест | Значение |
|---|---|
| W | 1.7745^{4} |
| p-value | 0.08209 |
| Вывод | Различия НЕ значимы |
Вывод: Медиана уверенности для группы с высшим образованием = 3, без высшего = 2. Тест Манна-Уитни не выявил значимых различий (p = 0.08209).
Анализ выполнен в R с использованием пакетов vcd, DescTools и ggplot2.