The primary objective of this research is to examine the determinants of subjective economic well-being across European populations using data from the European Social Survey (ESS) Round 11. By employing association rule mining, (the Apriori algorithm), this study aims to discover the relationships between demographic backgrounds, psychological health, and social capital that define one’s perception of their financial situation.
To ensure the statistical validity, the dataset underwent necessary preprocessing. The central variable, representing the respondents’ feelings about their current income, was filtered to include only valid responses and transformed into a scale ranging from “Comfortable” to “Very difficult.” Furthermore, the educational data was recoded into a simplified categorical framework.
#filtering for hincfel
data_clean <- data %>%
filter(hincfel >= 1 & hincfel <= 4) %>%
mutate(hincfel = factor(hincfel,
levels = c(1, 2, 3, 4),
labels = c("Comfortable", "Coping", "Difficult", "Very_difficult")))
data_clean <- data_clean %>%
mutate(edu_cat = case_when(
edulvlb == 0 ~ "Less than primary",
edulvlb >= 113 & edulvlb <= 223 ~ "Primary",
edulvlb >= 229 & edulvlb <= 423 ~ "Secondary",
edulvlb >= 510 & edulvlb <= 800 ~ "Higher",
TRUE ~ NA_character_
)) %>%
mutate(edu_cat = factor(edu_cat, levels = c("Less than primary", "Primary", "Secondary", "Higher")))The analytical framework was structured by selecting a broad range of socio-economic and psychological factors, which were categorized into three thematic subsets: Demography & Occupation, Health & Well-being, and Social Capital & Trust. By isolating these categories, we can manage the high dimensionality of the European Social Survey data and ensure that the resulting association rules are both theoretically grounded and easier to interpret. The complete list of variables used in this study is in the table below.
| Thematic Subset | Variable Name | Variable Description |
|---|---|---|
| Demography & Occupation | ||
| Demography & Occupation | hincfel | Feeling about household’s income nowadays (Target Variable) |
| Demography & Occupation | gndr | Gender of the respondent |
| Demography & Occupation | agegroup | Age group (categorized) |
| Demography & Occupation | edu_cat | Highest level of education (recoded) |
| Demography & Occupation | domicil | Type of residential area |
| Demography & Occupation | mainact | Main activity status |
| Demography & Occupation | uemp3m | Ever unemployed and seeking work for 3 months or more |
| Health & Well-being | ||
| Health & Well-being | health | Subjective general health |
| Health & Well-being | happy | Subjective happiness level |
| Health & Well-being | slprl | Sleep restless |
| Health & Well-being | aesfdrk | Feeling of safety walking alone in local area after dark |
| Health & Well-being | fltdpr | How often felt depressed in the past week |
| Health & Well-being | flteeff | How often felt that everything was an effort |
| Health & Well-being | fltlnl | How often felt lonely |
| Health & Well-being | enjlf | How often enjoyed life |
| Health & Well-being | pray | How often pray |
| Social Capital & Trust | ||
| Health & Well-being | hincfel_dup | Feeling about income (Target Variable) |
| Social Capital & Trust | ppltrst | Trust in other people |
| Social Capital & Trust | pplfair | Most people try to be fair |
| Social Capital & Trust | pplhlp | Most people try to be helpful |
| Social Capital & Trust | sclmeet | Frequency of social meetings |
| Social Capital & Trust | stfeco | Satisfaction with the national economy |
| Social Capital & Trust | stfgov | Satisfaction with the national government |
| Social Capital & Trust | stfdem | Satisfaction with democracy in the country |
| Social Capital & Trust | trstprl | Trust in the national parliament |
| Social Capital & Trust | trstplt | Trust in politicians |
| Social Capital & Trust | trstprt | Trust in political parties |
| Social Capital & Trust | trstlgl | Trust in the legal system |
| Social Capital & Trust | trstplc | Trust in the police |
| Social Capital & Trust | trstep | Trust in the European Parliament |
| Social Capital & Trust | trstun | Trust in the United Nations |
#demography and occupation variables
subset_demographic <- data_clean %>%
filter(
domicil >= 1 & domicil <= 5,
mainact >= 1 & mainact <= 9,
uemp3m >= 1 & uemp3m <= 2,
agegroup >= 1 & agegroup <= 7,
gndr >= 1 & gndr <= 2
) %>%
dplyr::select(hincfel, gndr, agegroup, edu_cat, domicil, mainact, uemp3m) %>%
mutate(across(everything(), as.factor)) %>%
na.omit()
#health, well-being
subset_health_wellbeing <- data_clean %>%
filter(
health >= 1 & health <= 5,
happy >= 0 & happy <= 10,
slprl >= 1 & slprl <= 4,
aesfdrk >= 1 & aesfdrk <= 4,
fltdpr >= 1 & fltdpr <= 4,
flteeff >= 1 & flteeff <= 4,
fltlnl >= 1 & fltlnl <= 4,
enjlf >= 1 & enjlf <= 4,
pray >= 1 & pray <= 7
) %>%
dplyr::select(
hincfel, health, happy, slprl, aesfdrk,
fltdpr, flteeff, fltlnl, enjlf, pray
) %>%
mutate(across(everything(), as.factor)) %>%
na.omit()
#social capital and trust variables
subset_trust_society <- data_clean %>%
filter(
across(c(ppltrst, pplfair, pplhlp, stfeco, stfgov, stfdem,
trstprl, trstplt, trstprt, trstlgl, trstplc, trstep, trstun),
~ . >= 0 & . <= 10),
sclmeet >= 1 & sclmeet <= 7
) %>%
dplyr::select(hincfel, ppltrst, pplfair, pplhlp, sclmeet, stfeco, stfgov, stfdem,
trstprl, trstplt, trstprt, trstlgl, trstplc, trstep, trstun) %>%
mutate(across(everything(), as.factor)) %>%
na.omit()First, a visual representation of distribution of subjective opinions about respondents’ household income showed that the most frequent responses are Comfortable and Coping.
#hincfel distribution
ggplot(data_clean, aes(x = hincfel)) +
geom_bar(fill = "steelblue", alpha = 0.8) +
geom_text(stat = 'count', aes(label = ..count..), vjust = -0.5, size = 4) +
theme_minimal() +
labs(
title = "How do Europeans feel about their income?",
x = "",
y = "Number of respondents"
) +
theme(plot.title = element_text(face = "bold"))#item frequency plot
itemFrequencyPlot(as(subset_demographic, "transactions"),
topN = 20,
col = "skyblue",
main = "Top 20 Most Frequent Items (Demographic Subset)",
type = "absolute")The data from each subset was converted into transactional objects. To uncover the relationships between these features and the subjective perception of income, the Apriori algorithm was applied to each subset with a minimum support threshold of 0.005 and a confidence level of 0.5. The algorithm was specifically constrained to treat the categories of the hincfel variable as the consequent (RHS). Redundant rules were removed
#transactional datasets
trans_demog <- as(subset_demographic, "transactions")
trans_health <- as(subset_health_wellbeing, "transactions")
trans_trust <- as(subset_trust_society, "transactions")
#rules demog
rules_demog <- apriori(subset_demographic,
parameter = list(supp = 0.005, conf = 0.5, minlen = 2),
appearance = list(rhs = c("hincfel=Comfortable", "hincfel=Coping",
"hincfel=Difficult", "hincfel=Very_difficult"),
default = "lhs"))## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.5 0.1 1 none FALSE TRUE 5 0.005 2
## maxlen target ext
## 10 rules TRUE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 29
##
## set item appearances ...[4 item(s)] done [0.00s].
## set transactions ...[33 item(s), 5979 transaction(s)] done [0.00s].
## sorting and recoding items ... [32 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 4 5 6 7 done [0.00s].
## writing ... [432 rule(s)] done [0.00s].
## creating S4 object ... done [0.00s].
#health rules
rules_health <- apriori(subset_health_wellbeing,
parameter = list(supp = 0.005, conf = 0.5, minlen = 2),
appearance = list(rhs = c("hincfel=Comfortable", "hincfel=Coping",
"hincfel=Difficult", "hincfel=Very_difficult"),
default = "lhs"))## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.5 0.1 1 none FALSE TRUE 5 0.005 2
## maxlen target ext
## 10 rules TRUE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 236
##
## set item appearances ...[4 item(s)] done [0.00s].
## set transactions ...[51 item(s), 47213 transaction(s)] done [0.02s].
## sorting and recoding items ... [50 item(s)] done [0.00s].
## creating transaction tree ... done [0.01s].
## checking subsets of size 1 2 3 4 5 6 7 8 9 done [0.11s].
## writing ... [3512 rule(s)] done [0.00s].
## creating S4 object ... done [0.01s].
#trust rules
rules_trust <- apriori(subset_trust_society,
parameter = list(supp = 0.005, conf = 0.5, minlen = 2),
appearance = list(rhs = c("hincfel=Comfortable", "hincfel=Coping",
"hincfel=Difficult", "hincfel=Very_difficult"),
default = "lhs"))## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.5 0.1 1 none FALSE TRUE 5 0.005 2
## maxlen target ext
## 10 rules TRUE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 209
##
## set item appearances ...[4 item(s)] done [0.00s].
## set transactions ...[154 item(s), 41816 transaction(s)] done [0.02s].
## sorting and recoding items ... [154 item(s)] done [0.00s].
## creating transaction tree ... done [0.01s].
## checking subsets of size 1 2 3 4 5 6 7 8 9 10
## done [0.20s].
## writing ... [1005 rule(s)] done [0.00s].
## creating S4 object ... done [0.01s].
The generated association rules are presented separately for each of the three thematic categories.
The best rules by lift in this category are the one with “Difficult” as their RHS. The best one is {gndr=2,edu_cat=Secondary,mainact=3,uemp3m=2}, which means women with secondary education who are currently unemployed have 66.7% probability (0.667 confidence) of feeling “Difficult” about their household income.
Individuals who report very good health, an extremely high happiness and safety level, who never feel depressed nor lonely and never pray are more twice as likely than an average respondent to feel comfortable with their household income. An interesting observation is that the high heppiness and never praying occurs often in the rules.
The first rule by lift identifies individuals who perceive others as generally fair (pplfair=8), maintain a high frequency of social meetings (sclmeet=6), and possess a moderate trust in political parties (trstprt=6). This profile has a 67% probability (Confidence = 0.670) of reporting a “Comfortable” financial status, with a Lift of 2.046, indicating they are twice as likely to feel financially secure than the average respondent.
Even with very low minimum confidence and support parameters, the rules for a “Very Difficult” situation don’t occur.
# Top 10 for very difficult
rules_poverty_final <- subset(rules_all_categories, rhs %in% "hincfel=Difficult")
top10_poverty <- head(sort(rules_poverty_final, by = "lift"), 10)
# Top 10 for comfortable
rules_success_final <- subset(rules_all_categories, rhs %in% "hincfel=Comfortable")
top10_success <- head(sort(rules_success_final, by = "lift"), 10)
inspect(top10_poverty)## lhs rhs support confidence coverage lift count
## [1] {gndr=2,
## edu_cat=Secondary,
## mainact=3,
## uemp3m=2} => {hincfel=Difficult} 0.005686570 0.6666667 0.008529854 4.096608 34
## [2] {gndr=2,
## edu_cat=Secondary,
## mainact=4,
## uemp3m=2} => {hincfel=Difficult} 0.005184814 0.5961538 0.008697107 3.663313 31
## [3] {gndr=2,
## mainact=3,
## uemp3m=2} => {hincfel=Difficult} 0.006522830 0.5909091 0.011038635 3.631085 39
## [4] {edu_cat=Secondary,
## mainact=4,
## uemp3m=2} => {hincfel=Difficult} 0.009031611 0.5869565 0.015387188 3.606797 54
## [5] {gndr=2,
## mainact=4,
## uemp3m=2} => {hincfel=Difficult} 0.006188326 0.5606061 0.011038635 3.444875 37
## [6] {edu_cat=Secondary,
## mainact=3,
## uemp3m=2} => {hincfel=Difficult} 0.007359090 0.5500000 0.013380164 3.379702 44
## [7] {mainact=4,
## uemp3m=2} => {hincfel=Difficult} 0.011205887 0.5403226 0.020739254 3.320235 67
## [8] {gndr=2,
## edu_cat=Secondary,
## mainact=3} => {hincfel=Difficult} 0.007024586 0.5384615 0.013045660 3.308799 42
## [9] {domicil=3,
## mainact=3} => {hincfel=Difficult} 0.007359090 0.5301205 0.013881920 3.257544 44
## [10] {mainact=3,
## uemp3m=2} => {hincfel=Difficult} 0.009031611 0.5242718 0.017226961 3.221605 54
## lhs rhs support confidence coverage lift count
## [1] {health=1,
## happy=9,
## aesfdrk=1,
## fltdpr=1,
## flteeff=1,
## fltlnl=1,
## pray=7} => {hincfel=Comfortable} 0.006608349 0.7518072 0.008789952 2.343683 312
## [2] {health=1,
## happy=9,
## aesfdrk=1,
## flteeff=1,
## fltlnl=1,
## pray=7} => {hincfel=Comfortable} 0.007053142 0.7516930 0.009383009 2.343327 333
## [3] {health=1,
## happy=9,
## aesfdrk=1,
## fltdpr=1,
## flteeff=1,
## pray=7} => {hincfel=Comfortable} 0.007010781 0.7488688 0.009361828 2.334522 331
## [4] {health=1,
## happy=9,
## aesfdrk=1,
## flteeff=1,
## pray=7} => {hincfel=Comfortable} 0.007540296 0.7478992 0.010081969 2.331500 356
## [5] {happy=9,
## aesfdrk=1,
## fltdpr=1,
## flteeff=1,
## enjlf=4,
## pray=7} => {hincfel=Comfortable} 0.007159045 0.7300216 0.009806621 2.275768 338
## [6] {health=1,
## happy=9,
## slprl=1,
## aesfdrk=1,
## fltdpr=1,
## fltlnl=1,
## pray=7} => {hincfel=Comfortable} 0.005040984 0.7278287 0.006926059 2.268932 238
## [7] {health=1,
## happy=9,
## slprl=1,
## aesfdrk=1,
## fltdpr=1,
## pray=7} => {hincfel=Comfortable} 0.005358694 0.7270115 0.007370851 2.266385 253
## [8] {health=1,
## happy=9,
## slprl=1,
## aesfdrk=1,
## fltlnl=1,
## pray=7} => {hincfel=Comfortable} 0.005443416 0.7219101 0.007540296 2.250481 257
## [9] {health=1,
## happy=9,
## aesfdrk=1,
## fltdpr=1,
## fltlnl=1,
## pray=7} => {hincfel=Comfortable} 0.008006269 0.7213740 0.011098638 2.248810 378
## [10] {happy=9,
## aesfdrk=1,
## flteeff=1,
## enjlf=4,
## pray=7} => {hincfel=Comfortable} 0.007434393 0.7207392 0.010314956 2.246831 351
The noticeable horizontal gap between the clusters of rules in the scatter plot is a phenomenon probably caused by a discrete nature of the consequent.
plot(rules_demog, method = "scatterplot", measure = c("support", "lift"), shading = "confidence")
plot(rules_health, method = "scatterplot", measure = c("support", "lift"), shading = "confidence")
plot(rules_trust, method = "scatterplot", measure = c("support", "lift"), shading = "confidence")The interactive network graphs allow for a dynamic exploration of the discovered patterns, where the size and color intensity of the nodes provide an immediate visual representation of the support and lift for each specific association
plot(rules_demog,
method = "graph",
engine = "htmlwidget",
title = "Top 10 Health Rules for 'Very Difficult' Income Feeling")## Available control parameters (with default values):
## itemCol = #CBD2FC
## nodeCol = c("#EE0000", "#EE0303", "#EE0606", "#EE0909", "#EE0C0C", "#EE0F0F", "#EE1212", "#EE1515", "#EE1818", "#EE1B1B", "#EE1E1E", "#EE2222", "#EE2525", "#EE2828", "#EE2B2B", "#EE2E2E", "#EE3131", "#EE3434", "#EE3737", "#EE3A3A", "#EE3D3D", "#EE4040", "#EE4444", "#EE4747", "#EE4A4A", "#EE4D4D", "#EE5050", "#EE5353", "#EE5656", "#EE5959", "#EE5C5C", "#EE5F5F", "#EE6262", "#EE6666", "#EE6969", "#EE6C6C", "#EE6F6F", "#EE7272", "#EE7575", "#EE7878", "#EE7B7B", "#EE7E7E", "#EE8181", "#EE8484", "#EE8888", "#EE8B8B", "#EE8E8E", "#EE9191", "#EE9494", "#EE9797", "#EE9999", "#EE9B9B", "#EE9D9D", "#EE9F9F", "#EEA0A0", "#EEA2A2", "#EEA4A4", "#EEA5A5", "#EEA7A7", "#EEA9A9", "#EEABAB", "#EEACAC", "#EEAEAE", "#EEB0B0", "#EEB1B1", "#EEB3B3", "#EEB5B5", "#EEB7B7", "#EEB8B8", "#EEBABA", "#EEBCBC", "#EEBDBD", "#EEBFBF", "#EEC1C1", "#EEC3C3", "#EEC4C4", "#EEC6C6", "#EEC8C8", "#EEC9C9", "#EECBCB", "#EECDCD", "#EECFCF", "#EED0D0", "#EED2D2", "#EED4D4", "#EED5D5", "#EED7D7", "#EED9D9", "#EEDBDB", "#EEDCDC", "#EEDEDE", "#EEE0E0", "#EEE1E1", "#EEE3E3", "#EEE5E5", "#EEE7E7", "#EEE8E8", "#EEEAEA", "#EEECEC", "#EEEEEE")
## precision = 3
## igraphLayout = layout_nicely
## interactive = TRUE
## engine = visNetwork
## max = 100
## selection_menu = TRUE
## degree_highlight = 1
## verbose = FALSE
plot(rules_health,
method = "graph",
engine = "htmlwidget",
title = "Top 10 Health Rules for 'Very Difficult' Income Feeling")## Available control parameters (with default values):
## itemCol = #CBD2FC
## nodeCol = c("#EE0000", "#EE0303", "#EE0606", "#EE0909", "#EE0C0C", "#EE0F0F", "#EE1212", "#EE1515", "#EE1818", "#EE1B1B", "#EE1E1E", "#EE2222", "#EE2525", "#EE2828", "#EE2B2B", "#EE2E2E", "#EE3131", "#EE3434", "#EE3737", "#EE3A3A", "#EE3D3D", "#EE4040", "#EE4444", "#EE4747", "#EE4A4A", "#EE4D4D", "#EE5050", "#EE5353", "#EE5656", "#EE5959", "#EE5C5C", "#EE5F5F", "#EE6262", "#EE6666", "#EE6969", "#EE6C6C", "#EE6F6F", "#EE7272", "#EE7575", "#EE7878", "#EE7B7B", "#EE7E7E", "#EE8181", "#EE8484", "#EE8888", "#EE8B8B", "#EE8E8E", "#EE9191", "#EE9494", "#EE9797", "#EE9999", "#EE9B9B", "#EE9D9D", "#EE9F9F", "#EEA0A0", "#EEA2A2", "#EEA4A4", "#EEA5A5", "#EEA7A7", "#EEA9A9", "#EEABAB", "#EEACAC", "#EEAEAE", "#EEB0B0", "#EEB1B1", "#EEB3B3", "#EEB5B5", "#EEB7B7", "#EEB8B8", "#EEBABA", "#EEBCBC", "#EEBDBD", "#EEBFBF", "#EEC1C1", "#EEC3C3", "#EEC4C4", "#EEC6C6", "#EEC8C8", "#EEC9C9", "#EECBCB", "#EECDCD", "#EECFCF", "#EED0D0", "#EED2D2", "#EED4D4", "#EED5D5", "#EED7D7", "#EED9D9", "#EEDBDB", "#EEDCDC", "#EEDEDE", "#EEE0E0", "#EEE1E1", "#EEE3E3", "#EEE5E5", "#EEE7E7", "#EEE8E8", "#EEEAEA", "#EEECEC", "#EEEEEE")
## precision = 3
## igraphLayout = layout_nicely
## interactive = TRUE
## engine = visNetwork
## max = 100
## selection_menu = TRUE
## degree_highlight = 1
## verbose = FALSE
plot(rules_trust,
method = "graph",
engine = "htmlwidget",
title = "Top 10 Health Rules for 'Very Difficult' Income Feeling")## Available control parameters (with default values):
## itemCol = #CBD2FC
## nodeCol = c("#EE0000", "#EE0303", "#EE0606", "#EE0909", "#EE0C0C", "#EE0F0F", "#EE1212", "#EE1515", "#EE1818", "#EE1B1B", "#EE1E1E", "#EE2222", "#EE2525", "#EE2828", "#EE2B2B", "#EE2E2E", "#EE3131", "#EE3434", "#EE3737", "#EE3A3A", "#EE3D3D", "#EE4040", "#EE4444", "#EE4747", "#EE4A4A", "#EE4D4D", "#EE5050", "#EE5353", "#EE5656", "#EE5959", "#EE5C5C", "#EE5F5F", "#EE6262", "#EE6666", "#EE6969", "#EE6C6C", "#EE6F6F", "#EE7272", "#EE7575", "#EE7878", "#EE7B7B", "#EE7E7E", "#EE8181", "#EE8484", "#EE8888", "#EE8B8B", "#EE8E8E", "#EE9191", "#EE9494", "#EE9797", "#EE9999", "#EE9B9B", "#EE9D9D", "#EE9F9F", "#EEA0A0", "#EEA2A2", "#EEA4A4", "#EEA5A5", "#EEA7A7", "#EEA9A9", "#EEABAB", "#EEACAC", "#EEAEAE", "#EEB0B0", "#EEB1B1", "#EEB3B3", "#EEB5B5", "#EEB7B7", "#EEB8B8", "#EEBABA", "#EEBCBC", "#EEBDBD", "#EEBFBF", "#EEC1C1", "#EEC3C3", "#EEC4C4", "#EEC6C6", "#EEC8C8", "#EEC9C9", "#EECBCB", "#EECDCD", "#EECFCF", "#EED0D0", "#EED2D2", "#EED4D4", "#EED5D5", "#EED7D7", "#EED9D9", "#EEDBDB", "#EEDCDC", "#EEDEDE", "#EEE0E0", "#EEE1E1", "#EEE3E3", "#EEE5E5", "#EEE7E7", "#EEE8E8", "#EEEAEA", "#EEECEC", "#EEEEEE")
## precision = 3
## igraphLayout = layout_nicely
## interactive = TRUE
## engine = visNetwork
## max = 100
## selection_menu = TRUE
## degree_highlight = 1
## verbose = FALSE
Grouped plots operate by clustering those with similar antecedent (LHS) structures into cohesive groups.
## Available control parameters (with default values):
## k = 20
## aggr.fun = function (x, ...) UseMethod("mean")
## rhs_max = 10
## lhs_label_items = 2
## col = c("#EE0000FF", "#EEEEEEFF")
## groups = NULL
## engine = ggplot2
## verbose = FALSE
## Available control parameters (with default values):
## k = 20
## aggr.fun = function (x, ...) UseMethod("mean")
## rhs_max = 10
## lhs_label_items = 2
## col = c("#EE0000FF", "#EEEEEEFF")
## groups = NULL
## engine = ggplot2
## verbose = FALSE
## Available control parameters (with default values):
## k = 20
## aggr.fun = function (x, ...) UseMethod("mean")
## rhs_max = 10
## lhs_label_items = 2
## col = c("#EE0000FF", "#EEEEEEFF")
## groups = NULL
## engine = ggplot2
## verbose = FALSE
Presented below are the parallel coordinates plots, which provide visual pathways leading form various antecedents to the final financial outcome. Each line represents a rule, darker ones indicate a higher lift. The ‘position’ axes represent the sequential elements of the rule’s antecedent (LHS). Health and Trust variables are associated with rules for feeling Comfortable, whereas the Demographic factors define a Difficult situation.
top20_demog <- head(sort(rules_demog, by = "lift"), 20)
plot(top20_demog, method = "paracoord",
main = "Top 20 Demographic Rules for Household Income Feeling",
control = list(reorder = TRUE))top20_health <- head(sort(rules_health, by = "lift"), 20)
plot(top20_health, method = "paracoord",
main = "Top 20 Health & Wellbeing Rules",
control = list(reorder = TRUE))top20_trust <- head(sort(rules_trust, by = "lift"), 20)
plot(top20_trust, method = "paracoord",
main = "Top 20 Trust & Social Capital Rules",
control = list(reorder = TRUE))The analysis reveals that subjective economic well-being in Europe is a multidimensional phenomenon driven by more than just income. Financial comfort is strongly linked to high social trust, institutional confidence, and optimal mental health. In contrast, financial difficulty is most clearly defined by demographic and occupational vulnerabilities, specifically unemployment among women.