Abstract
У статті досліджується структура суспільної довіри до міліції в Україні на основі даних п’ятого раунду Європейського соціального дослідження за 2011 рік. Застосовуючи факторний аналіз змішаних даних (FAMD), ми аналізуємо багатовимірний конструкт довіри, що включає як оцінки ефективності міліції (кількісні змінні), так і сприйняття її процесуальної та розподільчої справедливості (категоріальні змінні). Результати виявляють дві ключові осі. Перший вимір являє собою узагальнену вісь “довіра-недовіра”, що інтегрує всі аспекти оцінки, вказуючи на цілісність сприйняття. Другий, важливіший з теоретичної точки зору вимір, відображає стиль відповіді респондентів. Він протиставляє категоричні (крайні) оцінки процесуальної справедливості поміркованим, вказуючи на рівень поляризації громадської думки незалежно від оцінок ефективності. Це свідчить, що для аналізу довіри важливою є не лише суть оцінки, а й ступінь її категоричності. Аналіз підтвердив методологічні проблеми з індикаторами розподільчої справедливості в українському контексті. На підставі кластерного аналізу за методом k-середніх побудовано емпіричну типологію.
Довіра до державних інституцій, зокрема до правоохоронних органів, є наріжним каменем демократичного суспільства та соціального порядку. Високий рівень довіри сприяє співпраці громадян з правоохоронцями, легітимізує їхні дії та підвищує ефективність системи кримінальної юстиції. Теоретичною основою для вимірювання довіри в рамках ЄСД слугує модель, розроблена Дж. Джексоном та колегами, яка передбачає три латентні фактори: довіра до ефективності (TrEf), процесуальної справедливості (TrFa) та перерозподільчої справедливості (TrRs).
Результати цього дослідження варто розглядати через призму теорії процедурної справедливості Тома Тайлера (Tom Tyler). Ключова ідея Тайлера полягає в тому, що легітимність влади в очах громадян залежить не стільки від результатів її діяльності (рівня розкриття злочинів), скільки від того, наскільки справедливими та поважливими є процедури, які вона використовує. Коли громадяни відчувають, що до них ставляться з повагою та неупереджено, вони схильні визнавати легітимність влади та добровільно дотримуватися законів.
Попередній аналіз українських даних ЄСД 2011 року виявив низку методологічних проблем, пов’язаних з фактором перерозподільчої справедливості (TrRs). Метою даного дослідження є аналіз структури довіри до міліції в Україні, використовуючи адаптовану двофакторну модель (TrEf та TrFa), та демонстрація можливостей факторного аналізу змішаних даних (FAMD) для роботи з даними, що поєднують різні типи шкал вимірювання.
Аналіз базується на даних п’ятого раунду Європейського соціального дослідження, проведеного в Україні у 2011 році Центром SOCIS. Вибірка склала 1931 респондент для населення віком від 15 років. Після видалення пропущених значень за ключовими змінними, фінальний розмір вибірки для аналізу склав 771 респонденти. Вбірка не зважувалася.
У даному дослідженні аналізується дані щодо довіри до міліції, яка функціонувала в Україні на момент збору даних. Слід зазначити, що у 2015 році в Україні відбулася реформа правоохоронних органів, внаслідок якої міліцію було реорганізовано в Національну поліцію.
Теоретичною основою для вимірювання довіри в рамках ЄСД слугує
модель, розроблена Jonathan Jackson, Mike Hough, Stephen Farrall, Jan de
Keijser та Kauko Aromaa. Вона передбачала три латентні фактори:
1) довіра до ефективності (TrEf);
2) довіра до процесуальної справедливості (TrFa);
3) довіра до перерозподільчої справедливості
(TrRs).
Довіра до ефективності поліції (Trust in police effectiveness, TrEf) вимірюється за допомогою:
Ґрунтуючись на тому, що Ви чули, або на Вашому власному досвіді, як Ви вважаєте, наскільки міліція в Україні успішна у попередженні злочинів, що пов’язані із застосуванням насильства або загрозою застосування насильства? (plcpvcr)
А наскільки, на Вашу думку, міліція в Україні успішна у затриманні грабіжників, які вчиняють пограбування квартир зі зломом? (plcpbrg)
Якщо б в районі, неподалік від місця Вашого проживання, був би скоєний злочин із застосуванням насильства або пограбування квартири, і була викликана міліція, як Ви думаєте, наскільки повільно чи швидко вона діставалися б до місця злочину? (plcarcr)
Довіра до процесуальної справедливості поліції (Trust in police procedural fairness, TrFa) вимірюється за допомогою:
Ґрунтуючись на тому, що Ви чули або на Вашому власному досвіді, як часто, на Вашу думку, міліція в Україні ставиться до людей з повагою. (plcrspc)
Як Ви вважаєте, як часто міліція в Україні приймає справедливі та неупереджені рішення стосовно тих справ, якими займається? Ви б сказали, що… (plcfrdc)
Як Ви думаєте, як часто міліція, розглядаючи справи людей в Україні, пояснює свої рішення і дії, коли її просять це зробити? Ви сказали б, що… (plcexdc)
Довіра до перерозподільчої справедливості (Trust in police distributive fairness, TrRs) вимірюється за допомогою:
Коли потерпілі звертаються в міліцію, як Ви вважаєте, чи поводиться міліція з ними гірше, якщо вони багаті люди, бідні люди, або однаково поводиться як з багатими, так і з бідними? (plcvcrp)
Як Ви вважаєте, коли потерпілі звертаються в міліцію, чи ставиться вона до деяких людей гірше через їхню расу або національність, чи ставиться до всіх однаково? (plcvcrc)
З огляду на змішаний характер даних (поєднання кількісних та якісних змінних), було застосовано факторний аналіз змішаних даних (FAMD). Цей метод є узагальненням аналізу головних компонент (PCA) та множинного аналізу відповідностей (MCA), що дозволяє одночасно аналізувати змінні різних типів, збалансовуючи їхній вплив на результат. За допомогою кластерного аналізу за методом k-середніх побудована еміпрична типологія респондентів.
Проведене дослідження дозволяє зробити декілька концептуально важливих висновків, які структурують сприйняття громадянами діяльності міліції та мають практичне значення для реформ.
Сприйняття довіри до міліції має складну двовимірну структуру.
Перший вимір, “Узагальнена вісь довіри/недовіри”, є
інтегрованим конструктом. Це означає, що респонденти, які вважають
міліцію ефективною, схильні також вважати її справедливою, і навпаки, що
свідчить про універсальну поляризацію громадської думки від довіри до
недовіри.
Другий вимір, який описує назва “Стиль відповіді: категоричність vs поміркованість”, структурує дані за іншим принципом. Він відокремлює респондентів не за змістом їхніх оцінок (це робить перший вимір), а за стилем їх висловлення. На одному полюсі цієї осі опиняються ті, хто дає крайні, категоричні відповіді на питання про справедливість (як “зовсім не часто”, так і “дуже часто”), а на іншому — ті, хто обирає більш помірковані варіанти (“не дуже часто”). Це вказує на існування фактору поляризації думок, який є ортогональним до загального рівня довіри.
Особливої уваги заслуговує той факт, що другий вимір практично повністю формується саме змінними процесуальної справедливості, в той час як змінні ефективності не мають на нього впливу. Це дозволяє зробити важливий додатковий висновок: саме сфера процесуальної справедливості — те, як міліція поводиться з громадянами, чи виявляє повагу, чи діє неупереджено — є джерелом найбільш поляризованих та емоційно насичених оцінок. На відміну від більш абстрактних оцінок ефективності (наприклад, рівня розкриття злочинів), досвід взаємодії з представниками влади є глибоко особистим. Він формує стійкі, категоричні переконання, що виливаються або у виражену лояльність, або у принципову, безкомпромісну критику. Таким чином, другий вимір не просто фіксує “стиль відповіді”, а й вказує на те, що процесуальна справедливість є головним полем ідеологічної та емоційної боротьби за легітимність правоохоронних органів в очах суспільства.
Важливо, що індикатори розподільчої справедливості мають незначний внесок, що свідчить про їхню слабку інтегрованість у загальну модель довіри в українському контексті.
На основі цих вимірів було виділено три якісно відмінні групи
громадян:
“Принципові критики” (24.8%) — характеризуються
глибокою недовірою, яка живиться насамперед відчуттям несправедливого та
неповажного ставлення. Для них проблема не стільки в неефективності,
скільки в порушенні базових норм легітимності.
“Помірковані скептики” (56.0%) — найбільший сегмент
“прагматичної більшості”, чий скепсис має утилітарний характер. Вони
оцінюють міліцію передусім з точки зору її функціональної
неспроможності, не маючи високих очікувань щодо процедурної
справедливості.
“Лояльні оптимісти” (19.2%) — єдина група, що
демонструє виражену довіру, позитивно оцінюючи як результати роботи
міліції, так і справедливість її дій. Ця група є ядром підтримки
державних інституцій.
Дослідження доводить, що для побудови реальної довіри суспільства недостатньо фокусуватися лише на показниках ефективності. Ключовим полем боротьби за довіру є сфера процедурної справедливості, що вимагає зміни повсякденних практик взаємодії поліції з громадянами, впровадження прозорих механізмів підзвітності та фундаментальної зміни внутрішньої культури від каральної до сервісної.
Варто зазначити, що значне зменшення вибірки (з 1931 до 771) через
пропущені значення може вказувати на систематичну помилку (non-response
bias).
Водночас дослідження фіксує “нульову точку” довіри напередодні реформи,
що відкриває перспективи для подальших досліджень: порівняльного аналізу
на свіжіших даних для оцінки змін у структурі довіри, лонгітюдного
аналізу її динаміки та якісного поглиблення через інтерв’ю з
представниками виявлених типів.
#-------------------------------------------------------------------------------
# Крок 1: Завантаження та підготовка даних (без змін)
#-------------------------------------------------------------------------------
# Завантаження даних
base_file_name <- "ESS5e03_5-subset.sav"
base_df <- read_sav(base_file_name)
# Визначення змінних
vars_to_select <- c("plcpvcr", "plccbrg", "plcarcr", "plcrspc",
"plcfrdc", "plcexdc", "plcvcrp", "plcvcrc")
# Відбір та очищення даних
ess_famd_data_clean <- base_df %>%
select(all_of(vars_to_select)) %>%
na.omit()
ess_famd_data_clean<- ess_famd_data_clean %>%
filter(
plcpvcr >= 0 & plcpvcr <= 10,
plccbrg >= 0 & plccbrg <= 10,
plcarcr >= 0 & plcarcr <= 10,
plcexdc != 5 # Припускаю, що це правильна умова, оскільки вона вже була
)## Розподіли відповідей респондентів на запитання анкети
## How successful police are at preventing crimes in country (plcpvcr) <numeric>
## # total N=771 valid N=771 mean=3.57 sd=2.11
##
## Value | Label | N | Raw % | Valid % | Cum. %
## ---------------------------------------------------------------
## 0 | Extremely unsuccessful | 81 | 10.51 | 10.51 | 10.51
## 1 | 01 | 62 | 8.04 | 8.04 | 18.55
## 2 | 02 | 87 | 11.28 | 11.28 | 29.83
## 3 | 03 | 152 | 19.71 | 19.71 | 49.55
## 4 | 04 | 106 | 13.75 | 13.75 | 63.29
## 5 | 05 | 160 | 20.75 | 20.75 | 84.05
## 6 | 06 | 61 | 7.91 | 7.91 | 91.96
## 7 | 07 | 39 | 5.06 | 5.06 | 97.02
## 8 | 08 | 14 | 1.82 | 1.82 | 98.83
## 9 | 09 | 8 | 1.04 | 1.04 | 99.87
## 10 | Extremely successful | 1 | 0.13 | 0.13 | 100.00
## 77 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 88 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 99 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
##
## How successful police are at catching house burglars in country (plccbrg) <numeric>
## # total N=771 valid N=771 mean=3.68 sd=2.14
##
## Value | Label | N | Raw % | Valid % | Cum. %
## ---------------------------------------------------------------
## 0 | Extremely unsuccessful | 68 | 8.82 | 8.82 | 8.82
## 1 | 01 | 61 | 7.91 | 7.91 | 16.73
## 2 | 02 | 99 | 12.84 | 12.84 | 29.57
## 3 | 03 | 146 | 18.94 | 18.94 | 48.51
## 4 | 04 | 104 | 13.49 | 13.49 | 62.00
## 5 | 05 | 158 | 20.49 | 20.49 | 82.49
## 6 | 06 | 57 | 7.39 | 7.39 | 89.88
## 7 | 07 | 47 | 6.10 | 6.10 | 95.98
## 8 | 08 | 19 | 2.46 | 2.46 | 98.44
## 9 | 09 | 10 | 1.30 | 1.30 | 99.74
## 10 | Extremely successful | 2 | 0.26 | 0.26 | 100.00
## 77 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 88 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 99 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
##
## How quickly would police arrive at a violent crime scene near to where you live (plcarcr) <numeric>
## # total N=771 valid N=771 mean=4.06 sd=2.33
##
## Value | Label | N | Raw % | Valid % | Cum. %
## ----------------------------------------------------------------------------------------
## 0 | Extremely slowly | 57 | 7.39 | 7.39 | 7.39
## 1 | 1 | 50 | 6.49 | 6.49 | 13.88
## 2 | 2 | 94 | 12.19 | 12.19 | 26.07
## 3 | 3 | 144 | 18.68 | 18.68 | 44.75
## 4 | 4 | 86 | 11.15 | 11.15 | 55.90
## 5 | 5 | 154 | 19.97 | 19.97 | 75.88
## 6 | 6 | 54 | 7.00 | 7.00 | 82.88
## 7 | 7 | 66 | 8.56 | 8.56 | 91.44
## 8 | 8 | 45 | 5.84 | 5.84 | 97.28
## 9 | 9 | 13 | 1.69 | 1.69 | 98.96
## 10 | Extremely quickly | 8 | 1.04 | 1.04 | 100.00
## 55 | Violent crimes never occur near to where I live | 0 | 0.00 | 0.00 | 100.00
## 77 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 88 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 99 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
##
## How often do police treat people in country with respect (plcrspc) <numeric>
## # total N=771 valid N=771 mean=1.98 sd=0.70
##
## Value | Label | N | Raw % | Valid % | Cum. %
## ---------------------------------------------------------
## 1 | Not at all often | 182 | 23.61 | 23.61 | 23.61
## 2 | Not very often | 434 | 56.29 | 56.29 | 79.90
## 3 | Often | 140 | 18.16 | 18.16 | 98.05
## 4 | Very often | 15 | 1.95 | 1.95 | 100.00
## 7 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 8 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 9 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
##
## How often do police make fair, impartial decisions (plcfrdc) <numeric>
## # total N=771 valid N=771 mean=1.96 sd=0.67
##
## Value | Label | N | Raw % | Valid % | Cum. %
## ---------------------------------------------------------
## 1 | Not at all often | 180 | 23.35 | 23.35 | 23.35
## 2 | Not very often | 453 | 58.75 | 58.75 | 82.10
## 3 | Often | 129 | 16.73 | 16.73 | 98.83
## 4 | Very often | 9 | 1.17 | 1.17 | 100.00
## 7 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 8 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 9 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
##
## How often do the police explain their decisions and actions when asked (plcexdc) <numeric>
## # total N=771 valid N=771 mean=1.91 sd=0.68
##
## Value | Label | N | Raw % | Valid % | Cum. %
## -------------------------------------------------------------------------------
## 1 | Not at all often | 206 | 26.72 | 26.72 | 26.72
## 2 | Not very often | 438 | 56.81 | 56.81 | 83.53
## 3 | Often | 117 | 15.18 | 15.18 | 98.70
## 4 | Very often | 10 | 1.30 | 1.30 | 100.00
## 5 | No one ever asks the police to explain | 0 | 0.00 | 0.00 | 100.00
## 7 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 8 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 9 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
##
## How police treat victims of crime: Rich/poor (plcvcrp) <numeric>
## # total N=771 valid N=771 mean=2.13 sd=0.38
##
## Value | Label | N | Raw % | Valid % | Cum. %
## ----------------------------------------------------------------------
## 1 | Rich people treated worse | 13 | 1.69 | 1.69 | 1.69
## 2 | Poor people treated worse | 648 | 84.05 | 84.05 | 85.73
## 3 | Rich and poor treated equally | 110 | 14.27 | 14.27 | 100.00
## 7 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 8 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 9 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
##
## How police treat victims of crime: Different races/ethnic groups (plcvcrc) <numeric>
## # total N=771 valid N=771 mean=1.97 sd=0.91
##
## Value | Label | N | Raw % | Valid % | Cum. %
## ---------------------------------------------------------------------------------
## 1 | People from different race treated worse | 332 | 43.06 | 43.06 | 43.06
## 2 | People from same race treated worse | 133 | 17.25 | 17.25 | 60.31
## 3 | People from all races treated equally | 306 | 39.69 | 39.69 | 100.00
## 7 | Refusal | 0 | 0.00 | 0.00 | 100.00
## 8 | Don't know | 0 | 0.00 | 0.00 | 100.00
## 9 | No answer | 0 | 0.00 | 0.00 | 100.00
## <NA> | <NA> | 0 | 0.00 | <NA> | <NA>
#===============================================================================
# КРОК 1: ПІДГОТОВКА ДАНИХ
#===============================================================================
# Перетворення на фактори
vars_categorical <- c("plcrspc", "plcfrdc", "plcexdc", "plcvcrp", "plcvcrc")
ess_famd_data_clean <- ess_famd_data_clean %>%
mutate(across(all_of(vars_categorical), as.factor))
# Робимо назви рівнів унікальними
for (col_name in vars_categorical) {
levels(ess_famd_data_clean[[col_name]]) <- paste(col_name,
levels(ess_famd_data_clean[[col_name]]),
sep = ".")
}Метою FAMD (факторного аналізу змішаних даних) є зменшення розмірності вашого набору даних, який містить як неперервні (кількісні), так і категоризовані (якісні) змінні. Аналіз створює нові, синтетичні осі (виміри, Dim.1, Dim.2 і т.д.), які є комбінаціями вихідних змінних і пояснюють основні закономірності у даних.
Variance (Дисперсія) показує, скільки “інформації” або варіативності
даних захоплює кожна вісь. Вісь 1 (Dim.1) є найважливішою, оскільки вона
пояснює найбільшу частину варіативності (3.97).
% of var. (Відсоток дисперсії): Те саме, але у відсотках.
Вісь 1 (Dim.1) пояснює 24.8% всієї варіативності у ваших даних.
Вісь 2 (Dim.2) пояснює 12.8%.
Cumulative % of var. (Накопичений відсоток) - сумарний відсоток. Перші
дві осі разом пояснюють 37.6% варіативності. Це пристойний, хоча і не
вичерпний, результат для соціальних даних. Це означає, що двовимірний
графік цих осей вже дасть гарне уявлення про основні структури у даних.
Перші три осі пояснюють майже 50%.
Висновок. Основну увагу слід приділити інтерпретації перших двох (або
трьох) осей, оскільки вони є найважливішими.
#===============================================================================
# Крок 2: ВИКОНАННЯ FAMD (БЕЗ ЗМІН)
#===============================================================================
res.famd <- FAMD(ess_famd_data_clean, graph = FALSE)
print(summary(res.famd, nb.dec = 2, nbelements=Inf, nbind=0, ncp=2))##
## Call:
## FAMD(base = ess_famd_data_clean, graph = FALSE)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## Variance 3.97 2.04 1.88 1.15 1.03
## % of var. 24.78 12.78 11.73 7.18 6.46
## Cumulative % of var. 24.78 37.56 49.29 56.46 62.92
##
## Continuous variables
## Dim.1 ctr cos2 Dim.2 ctr cos2
## plcpvcr | 0.80 16.33 0.65 | -0.06 0.19 0.00 |
## plccbrg | 0.81 16.49 0.65 | -0.07 0.21 0.00 |
## plcarcr | 0.77 14.97 0.59 | -0.09 0.40 0.01 |
##
## Categories
## Dim.1 ctr cos2 v.test Dim.2 ctr cos2 v.test
## plcrspc.1 | -1.68 4.23 0.48 -13.00 | 1.38 10.78 0.32 14.90 |
## plcrspc.2 | -0.30 0.32 0.08 -4.69 | -0.86 10.06 0.64 -19.04 |
## plcrspc.3 | 2.71 8.49 0.73 17.79 | 0.45 0.89 0.02 4.13 |
## plcrspc.4 | 3.66 1.65 0.17 7.17 | 4.03 7.56 0.21 11.02 |
## plcfrdc.1 | -2.01 6.01 0.58 -15.47 | 1.51 12.68 0.32 16.13 |
## plcfrdc.2 | -0.07 0.02 0.01 -1.24 | -0.93 12.28 0.80 -21.65 |
## plcfrdc.3 | 2.78 8.21 0.70 17.35 | 0.84 2.79 0.06 7.27 |
## plcfrdc.4 | 4.17 1.29 0.13 6.31 | 4.94 6.82 0.18 10.43 |
## plcexdc.1 | -1.78 5.41 0.57 -15.01 | 1.31 10.90 0.30 15.30 |
## plcexdc.2 | 0.03 0.00 0.00 0.44 | -0.91 11.32 0.76 -20.32 |
## plcexdc.3 | 2.69 6.99 0.66 15.86 | 0.78 2.21 0.06 6.41 |
## plcexdc.4 | 4.06 1.36 0.14 6.49 | 3.95 4.84 0.14 8.78 |
## plcvcrp.1 | -0.32 0.01 0.00 -0.58 | 0.52 0.11 0.00 1.32 |
## plcvcrp.2 | -0.41 0.89 0.55 -13.07 | -0.15 0.45 0.07 -6.68 |
## plcvcrp.3 | 2.45 5.43 0.59 13.90 | 0.82 2.31 0.07 6.51 |
## plcvcrc.1 | -0.51 0.72 0.17 -6.20 | -0.37 1.41 0.09 -6.24 |
## plcvcrc.2 | -0.25 0.07 0.01 -1.57 | -0.07 0.02 0.00 -0.64 |
## plcvcrc.3 | 0.66 1.11 0.23 7.49 | 0.43 1.78 0.10 6.81 |
## NULL
# Отримуємо координати з результатів FAMD
coords <- as.data.frame(res.famd$ind$coord[, 1:2])
# Дамо їм зрозумілі імена
names(coords) <- c("Dim.1", "Dim.2")
# Об'єднуємо координати з оригінальними даними
# Важливо: порядок рядків має збігатися
plot_data <- cbind(coords, ess_famd_data_clean)
# Створюємо вектор з назвами змінних, які нас цікавлять
target_vars <- c(
"plcpvcr", "plccbrg", "plcarcr"
)
# Створюємо порожній список для зберігання результатів
mean_coords_list <- list()
# Проходимо по кожній змінній у циклі
for (var_name in target_vars) {
# Пропускаємо змінні, яких немає в датафреймі (про всяк випадок)
if (!var_name %in% names(plot_data)) next
# Використовуємо dplyr для групування та розрахунку середніх
# .data[[var_name]] дозволяє використовувати змінну з циклу в dplyr
mean_coords <- plot_data %>%
group_by(.data[[var_name]]) %>%
summarise(
Mean_Dim.1 = mean(Dim.1, na.rm = TRUE),
Mean_Dim.2 = mean(Dim.2, na.rm = TRUE),
Count = n() # Додамо кількість спостережень у кожній групі
) %>%
# Перейменовуємо стовпець з категоріями, щоб він мав назву змінної
rename(Category = .data[[var_name]])
# Зберігаємо результат у списку
mean_coords_list[[var_name]] <- round(mean_coords, 2 )
}
cat("Середні значення для категорій метричних змінних")## Середні значення для категорій метричних змінних
## $plcpvcr
## # A tibble: 11 × 4
## Category Mean_Dim.1 Mean_Dim.2 Count
## <dbl> <dbl> <dbl> <dbl>
## 1 0 -2.33 0.8 81
## 2 1 -1.93 0.28 62
## 3 2 -1.47 0.11 87
## 4 3 -0.59 -0.26 152
## 5 4 0.35 -0.44 106
## 6 5 1.1 -0.31 160
## 7 6 1.77 -0.02 61
## 8 7 2.83 0.25 39
## 9 8 3.57 1.47 14
## 10 9 4.53 1.35 8
## 11 10 6.86 4.96 1
##
## $plccbrg
## # A tibble: 11 × 4
## Category Mean_Dim.1 Mean_Dim.2 Count
## <dbl> <dbl> <dbl> <dbl>
## 1 0 -2.63 0.89 68
## 2 1 -1.91 0.27 61
## 3 2 -1.41 0.16 99
## 4 3 -0.56 -0.3 146
## 5 4 0.4 -0.45 104
## 6 5 0.83 -0.31 158
## 7 6 1.85 0.1 57
## 8 7 2.5 0.27 47
## 9 8 3.74 0.87 19
## 10 9 4.15 0.78 10
## 11 10 3.87 1.71 2
##
## $plcarcr
## # A tibble: 11 × 4
## Category Mean_Dim.1 Mean_Dim.2 Count
## <dbl> <dbl> <dbl> <dbl>
## 1 0 -2.75 1.18 57
## 2 1 -1.88 0.14 50
## 3 2 -1.39 0.2 94
## 4 3 -0.72 -0.21 144
## 5 4 0.18 -0.37 86
## 6 5 0.51 -0.3 154
## 7 6 1.24 -0.26 54
## 8 7 1.99 0.02 66
## 9 8 2.59 0.16 45
## 10 9 3.85 1.24 13
## 11 10 3.31 0.59 8
Інтерпретація результатів факторного аналізу змішаних
даних
Факторний аналіз виявив дві основні осі громадської думки щодо міліції,
які разом пояснюють 37,56% загальної дисперсії та відображають не лише
валентність оцінок (позитивна/негативна), але й когнітивні стратегії їх
формування.
Перший вимір (24,78% дисперсії) - континуум довіри до
міліції
Цей вимір створює біполярний континуум від високої до низької довіри,
інтегруючи оцінки ефективності та справедливості міліції в єдину
латентну змінну. Позитивний полюс (+2,0 ÷ +4,0) об’єднує респондентів з
високою довірою:
Ефективність: високі оцінки успішності у запобіганні насильницьким
злочинам (plcpvcr = 0,80), затриманні грабіжників (plccbrg = 0,81) та
швидкості реагування (plcarcr = 0,77)
Процесуальна справедливість: переконання, що міліція “часто” чи “дуже
часто” поводиться з повагою (plcrspc.4 = 3,66), приймає справедливі
рішення (plcfrdc.4 = 4,17) та надає пояснення (plcexdc.4 = 4,06)
Дистрибутивна справедливість: сприйняття рівного ставлення до різних
соціальних груп (plcvcrp.3 = 2,45)
Негативний полюс (-1,5 ÷ -2,0) характеризується системною недовірою:
Низькі оцінки ефективності міліції у всіх сферах діяльності
Переконання, що міліція “зовсім не часто” діє справедливо (plcrspc.1 =
-1,68; plcfrdc.1 = -2,01; plcexdc.1 = -1,78)
Сприйняття дискримінації бідних (plcvcrp.2 = -0,41) та етнічних меншин
(plcvcrc.1 = -0,51)
Другий вимір (12,78% дисперсії) - поляризація оцінок
процесуальної справедливості.
Цей вимір ортогональний до загальних оцінок ефективності (координати
змінних ефективності близькі до нуля) та відображає різні когнітивні
стратегії оцінювання справедливості міліцейських процедур.
Позитивний полюс (+1,3 ÷ +4,9) концентрує категоричні оцінки обох
полярностей:
Крайньо негативні: “зовсім не часто” справедлива (plcrspc.1 = 1,38;
plcfrdc.1 = 1,51; plcexdc.1 = 1,31).
Крайньо позитивні: “дуже часто” справедлива (plcrspc.4 = 4,03; plcfrdc.4
= 4,94; plcexdc.4 = 3,95).
Негативний полюс (-0,8 ÷ -0,9) представляють помірковані критичні оцінки:
Відповіді “не дуже часто” на всі питання про справедливість
(plcrspc.2 = -0,86; plcfrdc.2 = -0,93; plcexdc.2 = -0,91).
Відповіді “часто” мають слабші, але також негативні координати.
#===============================================================================
# КРОК 3: РОЗШИРЕНИЙ АНАЛІЗ ТА ВІЗУАЛІЗАЦІЯ
#===============================================================================
#-------------------------------------------------------------------------------
# 3.1. Аналіз власних значень (Eigenvalues)
#-------------------------------------------------------------------------------
# Виведемо таблицю власних значень, % поясненої дисперсії та кумулятивний %
eig.val <- get_eigenvalue(res.famd)
print("Власні значення та пояснена дисперсія:")## [1] "Власні значення та пояснена дисперсія:"
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 3.965108 24.781922 24.78192
## Dim.2 2.044603 12.778770 37.56069
## Dim.3 1.876401 11.727507 49.28820
## Dim.4 1.148056 7.175352 56.46355
## Dim.5 1.033417 6.458859 62.92241
# Ваш Scree Plot - це чудовий спосіб візуалізувати цю таблицю
fviz_eig(res.famd, addlabels = TRUE, ylim = c(0, 20)) +
labs(title = "Графік власних значень (Scree Plot)",
x = "Виміри",
y = "% поясненої дисперсія")Рисунок 1. Графік власних значень (Scree Plot) для FAMD
Рисунок 2. Проекція змінних на факторну площину (Вим. 1 і 2), що ілюструє їхній зв’язок з вимірами та внесок у пояснену дисперсію
#-------------------------------------------------------------------------------
# 3.2. Детальний аналіз змінних
#-------------------------------------------------------------------------------
#------- 3.2.1. Візуалізація КІЛЬКІСНИХ змінних (нові опції) ------------------
# Графік лише кількісних змінних (correlation circle)
# Це допомагає сфокусуватися на кореляціях між неперервними змінними
fviz_famd_var(res.famd, "quanti.var", repel = TRUE, col.var = "black") +
labs(title = "Графік кількісних змінних")Рисунок 3. Графік кількісних змінних (correlation circle)
# Зафарбуємо кількісні змінні за їхнім ВНЕСКОМ (contribution) у виміри
fviz_famd_var(res.famd, "quanti.var", col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE) +
labs(title = "Кількісні змінні (зафарбовані за внеском)")Рисунок 4. Внесок кількісних змінних у перші два виміри
#------- 3.2.2. Візуалізація КАТЕГОРІАЛЬНИХ змінних --------------
# Графік лише категорій якісних змінних
# Це допомагає побачити, які категорії є близькими або протилежними
fviz_famd_var(res.famd, "quali.var", repel = TRUE, col.var = "#FC4E07") +
labs(title = "Категорії якісних змінних")Рисунок 5. Графік категорій якісних змінних на факторній площині
Для поглиблення інтерпретації та створення типології респондентів було здійснено розподіл категорій змінних за квадрантами факторної площини.
Вісь 1 (Горизонтальна, Dim.1): ЗАГАЛЬНА ОЦІНКА МІЛІЦІЇ
Правий полюс (+): Позитивна оцінка ефективності та справедливості.
Лівий полюс (-): Негативна оцінка ефективності та справедливості.
Вісь 2 (Вертикальна, Dim.2): СТИЛЬ ВІДПОВІДІ (КАТЕГОРИЧНІСТЬ vs.
ПОМІРКОВАНІСТЬ)
Верхній полюс (+): Категоричні, крайні відповіді (наприклад, “зовсім не
часто”, “дуже часто”).
Нижній полюс (-): Помірковані, менш крайні відповіді (наприклад, “не
дуже часто”).
Розподіл кожної категорії за її положенням у чотирьох
квадрантах.
Верхній лівий квадрант (Dim.1 < 0, Dim.2 >
0)
Профіль респондентів: “Радикальні Критики”
Респонденти, чиї відповіді потрапляють сюди, не просто негативно
оцінюють міліцію, а роблять це в найбільш категоричній та
безкомпромісній формі.
Змінна: plcfrdc (Як часто міліція приймає справедливі, неупереджені
рішення?)
Альтернатива: plcfrdc.1 (“Not at all often” / Зовсім не часто)
Координати: (Dim.1: -2.01, Dim.2: 1.51)
Змінна: plcexdc (Як часто міліція пояснює свої рішення та дії, коли її
просять?)
Альтернатива: plcexdc.1 (“Not at all often” / Зовсім не часто)
Координати: (Dim.1: -1.78, Dim.2: 1.31)
Змінна: plcrspc (Як часто міліція ставиться до людей з повагою?)
Альтернатива: plcrspc.1 (“Not at all often” / Зовсім не часто)
Координати: (Dim.1: -1.68, Dim.2: 1.38)
Змінна: plcvcrp (Як міліція ставиться до жертв злочину:
багатих/бідних?)
Альтернатива: plcvcrp.1 (“Rich people treated worse” / До багатих
ставляться гірше)
Координати: (Dim.1: -0.32, Dim.2: 0.52) — Примітка: Ця категорія не є
центральною для квадранта, але тяжіє до нього.
Нижній лівий квадрант (Dim.1 < 0, Dim.2 <
0)
Профіль респондентів: “Помірковані Критики”
Це найчисельніша група критиків. Вони також негативно оцінюють поліцію,
але їхні відповіді є більш поміркованими. Вони висловлюють невдоволення,
але не в ультимативній формі.
Змінна: plcfrdc (Як часто міліція приймає справедливі, неупереджені
рішення?)
Альтернатива: plcfrdc.2 (“Not very often” / Не дуже часто)
Координати: (Dim.1: -0.07, Dim.2: -0.93)
Змінна: plcexdc (Як часто міліція пояснює свої рішення та дії?)
Альтернатива: plcexdc.2 (“Not very often” / Не дуже часто)
Координати: (Dim.1: 0.03, Dim.2: -0.91) — Примітка: майже на осі Y, але
чітко в нижній частині.
Змінна: plcrspc (Як часто міліція ставиться до людей з повагою?)
Альтернатива: plcrspc.2 (“Not very often” / Не дуже часто)
Координати: (Dim.1: -0.30, Dim.2: -0.86)
Змінна: plcvcrc (Як міліція ставиться до жертв злочину: різні
раси/етнічні групи?)
Альтернатива: plcvcrc.1 (“People from different race treated worse” / До
людей іншої раси ставляться гірше)
Координати: (Dim.1: -0.51, Dim.2: -0.37)
Змінна: plcvcrp (Як міліція ставиться до жертв злочину:
багатих/бідних?)
Альтернатива: plcvcrp.2 (“Poor people treated worse” / До бідних
ставляться гірше)
Координати: (Dim.1: -0.41, Dim.2: -0.15)
Верхній правий квадрант (Dim.1 > 0, Dim.2 >
0)
Профіль респондентів: “Переконані Прихильники / Ідеалісти”
Респонденти тут не просто позитивно оцінюють поліцію, вони роблять це
впевнено та категорично. Це група з найвищим рівнем довіри.
Змінна: plcfrdc (Як часто міліція приймає справедливі, неупереджені
рішення?)
Альтернатива: plcfrdc.4 (“Very often” / Дуже часто) та plcfrdc.3
(“Often” / Часто)
Координати: (4.17, 4.94) та (2.78, 0.84)
Змінна: plcexdc (Як часто міліція пояснює свої рішення та дії?)
Альтернатива: plcexdc.4 (“Very often” / Дуже часто) та plcexdc.3
(“Often” / Часто)
Координати: (4.06, 3.95) та (2.69, 0.78)
Змінна: plcrspc (Як часто міліція ставиться до людей з повагою?)
Альтернатива: plcrspc.4 (“Very often” / Дуже часто) та plcrspc.3
(“Often” / Часто) Координати: (3.66, 4.03) та (2.71, 0.45)
Змінна: plcvcrp (Як міліція ставиться до жертв злочину:
багатих/бідних?)
Альтернатива: plcvcrp.3 (“Rich and poor treated equally” / До багатих і
бідних ставляться однаково) Координати: (2.45, 0.82)
Змінна: plcvcrc (Як міліція ставиться до жертв злочину: різні
раси/етнічні групи?)
Альтернатива: plcvcrc.3 (“People from all races treated equally” / До
людей усіх рас ставляться однаково) Координати: (0.66, 0.43)
Категорії, чиє положення на карті перших двох вимірів є
статистично незначущим або слабко представленим. Включення їх
до інтерпретації квадрантів було б помилковим, оскільки їхня історія
розповідається іншими, менш значущими осями.
Атрибут: plcvcrc (Як міліція ставиться до жертв злочину: різні
раси/етнічні групи?)
Альтернатива: plcvcrc.2 (“People from same race treated worse” / До
людей моєї раси ставляться гірше)
Причина виключення:
Координати: (-0.25, -0.07) — дуже близько до центру.
Якість представлення (cos2): Сумарна якість на осях Dim.1 та Dim.2
складає лише 0.01 (0.01 + 0.00). Це означає, що 99% варіативності цієї
відповіді пояснюється іншими осями, а не цією картою.
Статистична значущість (v.test): Значення -1.57 та -0.64 є
незначущими.
Змістовний висновок: Думка, що міліція гірше ставиться до представників
“своєї” раси, не вписується в основний поділ на “критиків” та
“прихильників” і не корелює зі стилем відповіді. Це унікальна
позиція.
Атрибут: plcvcrp (Як міліція ставиться до жертв злочину:
багатих/бідних?)
Альтернатива: plcvcrp.1 (“Rich people treated worse” / До багатих
ставляться гірше)
Причина виключення:
Координати: (-0.32, 0.52) — відносно близько до центру.
Якість представлення (cos2): Сумарна якість на осях Dim.1 та Dim.2
складає лише 0.00.
Статистична значущість (v.test): Значення -0.58 та 1.32 є
незначущими.
Змістовний висновок. Ця відповідь, яку обрали дуже мало респондентів
(N=13), також не має стабільного зв’язку з основними осями громадської
думки.
# Зафарбуємо категорії за їхньою ЯКІСТЮ представлення (cos2)
fviz_famd_var(res.famd, "quali.var", col.var = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE) +
labs(title = "Категорії якісних змінних (зафарбовані за cos2)")Рисунок 6. Якість представлення (cos2) категорій якісних змінних
#------- 3.2.3. Аналіз внесків змінних (Contributions) -----------------------
# Червона лінія показує очікуваний середній внесок.
fviz_contrib(res.famd, choice = "var", axes = 1, top = 20) +
labs(title = "Внесок змінних у Вимір 1")Рисунок 7. Внесок змінних у Вимір 2 (Dim.2)
fviz_contrib(res.famd, choice = "var", axes = 2, top = 20) +
labs(title = "Внесок змінних у Вимір 2")Рисунок 7. Внесок змінних у Вимір 2 (Dim.2)
#-------------------------------------------------------------------------------
# 3.3. Аналіз індивідів (респондентів)
#-------------------------------------------------------------------------------
# Графік, зафарбований за якістю представлення (cos2)
fviz_famd_ind(res.famd,
col.ind = "cos2",
gradient.cols = c("#00AFBB", "yellow", "#FC4E07"),
repel = FALSE,
geom = "point",
alpha.ind = 0.5) +
labs(title = "Графік індивідів (зафарбовано за якістю представлення, cos2)")Рисунок 8. Графік індивідів, зафарбований за якістю представлення (cos2)
#-------------------------------------------------------------------------------
# --- Крок 1: Завантаження бібліотек та підготовка даних ---
# Отримуємо координати респондентів по перших двох вимірах
ind_coords <- as.data.frame(res.famd$ind$coord[, 1:2])
colnames(ind_coords) <- c("Dim.1", "Dim.2")
# Перетворюємо дані з широкого формату в довгий для ggplot2
# Це найкраща практика для побудови таких графіків
coords_long <- ind_coords %>%
pivot_longer(
cols = c("Dim.1", "Dim.2"),
names_to = "Dimension",
values_to = "Value"
)
# Поглянемо на результат перетворення
head(coords_long)## # A tibble: 6 × 2
## Dimension Value
## <chr> <dbl>
## 1 Dim.1 -0.923
## 2 Dim.2 -1.50
## 3 Dim.1 -2.34
## 4 Dim.2 2.04
## 5 Dim.1 -1.84
## 6 Dim.2 -0.343
# --- Крок 2: Побудова скрипічного графіка з боксплотом та середнім ---
ggplot(coords_long, aes(x = Dimension, y = Value, fill = Dimension)) +
# 1. Шар скрипічного графіка (показує щільність розподілу)
# alpha = 0.7 робить його трохи прозорим
geom_violin(trim = FALSE, alpha = 0.7) +
# 2. Шар боксплота (розміщується всередині "скрипки")
# width = 0.1 робить його вузьким, fill = "white" - помітним
geom_boxplot(width = 0.1, fill = "white", outlier.shape = NA) +
# 3. Додаємо точку, що позначає середнє значення
stat_summary(fun = mean, geom = "point", shape = 23, size = 3, fill = "red") +
# 4. Налаштування вигляду графіка
labs(
title = "Розподіл факторних координат респондентів",
subtitle = "Скрипічний графік з боксплотом та середнім значенням (червоний ромб)",
x = "Вимір (Фактор)",
y = "Значення координати"
) +
theme_minimal() +
theme(legend.position = "none") # Вимикаємо легенду, бо вона тут зайваРисунок 9. Візуалізація розподілу факторних координат респондентів
df <- ess_famd_data_clean
ind_coords <- res.famd$ind$coord[, 1:2]
head(ind_coords) # Подивимося на дані## Dim.1 Dim.2
## 1 -0.9231713 -1.5049283
## 2 -2.3400861 2.0394135
## 3 -1.8428411 -0.3430373
## 4 2.1841975 -0.5733398
## 5 4.4270795 0.8522044
## 6 5.1469339 1.3276240
## Dim.1 Dim.2
## Min. :-3.6687 Min. :-1.8025
## 1st Qu.:-1.3722 1st Qu.:-1.3019
## Median :-0.2456 Median :-0.3085
## Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 1.0884 3rd Qu.: 0.9593
## Max. : 6.8562 Max. : 6.6426
fviz_nbclust(ind_coords, kmeans, method = "wss") +
labs(subtitle = "Метод 'ліктя' для визначення оптимального k")Рисунок 10. Визначення оптимальної кількості кластерів методом ‘ліктя’ (Elbow method)
# 2.2. Метод "силуету" (Silhouette method)
# Вимірює, наскільки добре об'єкт вписується у свій кластер порівняно з іншими.
# Шукаємо максимальне значення.
fviz_nbclust(ind_coords, kmeans, method = "silhouette") +
labs(subtitle = "Метод 'силуету' для визначення оптимального k")Рисунок 11. Визначення оптимальної кількості кластерів методом ‘силуету’ (Silhouette method)
# ПРИМІТКА: На основі цих графіків ви приймаєте обґрунтоване рішення про кількість кластерів.
# Для прикладу, припустимо, що обидва методи вказують на k = 3.
optimal_k <- 3
# --- КРОК 3: ПРОВЕДЕННЯ КЛАСТЕРИЗАЦІЇ K-MEANS ---
# 3.1. Запускаємо алгоритм k-means
# nstart = 50 - кількість випадкових початкових ініціалізацій центрів.
# Це допомагає уникнути поганих локальних мінімумів і знайти стабільніше рішення.
set.seed(123) # Для відтворюваності результатів кластеризації
km_result <- stats::kmeans(ind_coords, centers = optimal_k, nstart = 50)
# 3.2. Додавання результатів кластеризації до основного датафрейму
df$cluster <- as.factor(km_result$cluster)
# --- КРОК 4: ВІЗУАЛІЗАЦІЯ ТА ІНТЕРПРЕТАЦІЯ КЛАСТЕРІВ ---
# 4.1. Візуалізація кластерів на факторній мапі
# Ми використовуємо функцію `fviz_cluster` з пакету `factoextra`, але цього разу
# передаємо їй результат k-means та об'єкт FAMD.
fviz_cluster(km_result, data = ind_coords,
geom = "point",
ellipse.type = "convex", # Можна змінити на "confidence" або "norm"
palette = "jco",
ggtheme = theme_minimal(),
main = paste0("Кластеризація методом k-середніх (k=", optimal_k, ")")
)Рисунок 12. Візуалізація результатів кластеризації на факторній площині
# 4.2. Профілювання кластерів (описова статистика)
# Оскільки k-means не надає автоматичного опису, ми робимо це вручну,
# розраховуючи середні значення вихідних змінних для кожного кластера.
# Це допоможе зрозуміти, чим групи відрізняються.
# Додаємо координати до датафрейму для зручності
df$Dim1 <- res.famd$ind$coord[, 1]
df$Dim2 <- res.famd$ind$coord[, 2]
# Розрахунок середніх по вимірах для кожного кластера
cluster_profile <- df %>%
group_by(cluster) %>%
summarise(
N = n(), # Кількість респондентів у кластері
Avg_Dim1 = mean(Dim1), # Середнє по осі "довіра-недовіра"
Avg_Dim2 = mean(Dim2), # Середнє по осі "процедури vs ефективність"
) %>%
mutate(Percent = N / sum(N) * 100) # Відсоток від загальної вибірки
print("--- Профіль кластерів ---")## [1] "--- Профіль кластерів ---"
## # A tibble: 3 × 5
## cluster N Avg_Dim1 Avg_Dim2 Percent
## <fct> <int> <dbl> <dbl> <dbl>
## 1 1 191 -2.10 1.52 24.8
## 2 2 432 -0.150 -1.01 56.0
## 3 3 148 3.14 0.985 19.2
Джерело даних
European Social Survey (ESS). (2011). European Social Survey Round 5 Data (Data file edition 3.4). NSD - Norwegian Center for Research Data.
Kassambara, A. (2017). Practical guide to principal component methods in R: PCA, M(CA), FAMD, MFA, HCPC, factoextra. STHDA.
Дата оновлення: 02.07.2025