Introduction

The goal of this project is to explore complex socio-political patterns within the European Social Survey (ESS) Round 11 data. By applying Association Rule Mining, we aim to uncover hidden relationships between demographics, digital behavior, and institutional trust that traditional statistical methods might overlook.

Association Rule Mining is an unsupervised learning technique used to identify frequent itemsets and generate rules. This approach is particularly effective for survey data as it provides easily understandable insights into specific social profiles. The study utilizes the Apriori algorithm to discover strong rules based on three fundamental interest measures: Support (frequency), Confidence (reliability), and Lift (strength of association beyond chance). A key objective of this study is to distinguish between trivial rules - those that confirm common knowledge - and meaningful rules, which provide non-obvious insights into the motivations of European citizens. By focusing on rules with a high Lift, we aim to discover patterns that are statistically significant and socially relevant.

The analysis focuses on three key dimensions:

  • Civic Engagement: Identifying factors that drive people to protest.

  • Political Ideology: Comparing the underlying social values and characteristics of Left-wing and Right-wing supporters.

  • Institutional Trust: Understanding the socio-economic determinants of trust toward the European Parliament.

To ensure clarity, the analysis employs a targeted mining approach. By specifying particular outcomes on the Right-Hand Side (RHS) of the rules, we can directly compare the profiles of contrasting groups, such as activists versus passive citizens.

The results highlight the main differences between these profiles by identifying unique combinations of attributes, referred to as itemsets, that are statistically characteristic of each group. Rather than looking at variables in isolation, this approach allows for a holistic view of the respondent. Ultimately, these findings provide a nuanced understanding of the polarized landscape in European societies, offering evidence-based insights into how demographic backgrounds and personal values converge to shape public behavior.

Data

The dataset used in this study is derived from the European Social Survey (ESS) Round 11, conducted in 2023-2024. The ESS is a cross-national survey that provides high-quality data on public attitudes, beliefs, and behavior patterns across Europe. For this analysis, we selected 15 variables covering five key thematic domains:

Selected Variables from ESS Round 11
Domain Variable Name Description
Digital Internet_Usage Frequency of internet access
Civic Contact_Politician Contacted a politician in last 12 months
Civic Protested Taken part in lawful public demonstration
Civic Voted Voted in the last national election
Values LGBT_Support Support for gay and lesbian rights
Values Equality_Support Support for reducing income inequality
Values Ideology Self-placement on Left-Center-Right scale
Trust Trust_EU Trust in the European Parliament
Trust Trust_Politicians Trust in national politicians
Demography Gender Respondent’s gender
Demography Age_Group Age categorized into 3 life stages
Demography Habitat Type of residential area
Demography Income_Level Household income deciles
Demography Education Highest level of education attained
Well-being Life_Satisfaction Overall subjective life satisfaction

Then we moved on to data cleaning and discretization. Association Rule Mining requires categorical data (items), so continuous scales and raw survey codes must be transformed into binary or nominal factors.

First, responses such as “Don’t Know”, “Refusal”, or “No Answer”, which are typically coded as high values (e.g., 77, 88, 99) are removed from the dataset. This ensures that only valid responses are used to generate rules, preventing a distortion of the results. Next, continuous scales are converted into meaningful categories. 11-point scales (0–10) for Trust and Satisfaction are split into binary categories. A threshold of 6 or 7 is used to separate positive attitudes from neutral/negative ones. The Left-Right scale is divided into three distinct buckets: Left (0–3), Center (4–6), and Right (7–10). Age in years is transformed into Age_Young, Age_Middle, and Age_Senior to identify life-stage-specific patterns. Education and Income are simplified into High, Medium, and Low groups to highlight the impact of social capital on political attitudes. Finally, the data frame is converted into a sparse matrix of transactions.

library(arules)
library(dplyr)

# 1. Cleaning the data
ess_clean <- data %>%
  filter(
    netusoft <= 5,   # Scale 1-5
    contplt <= 2,    # 1-2 (Yes/No)
    freehms <= 5,    # Scale 1-5
    gincdif <= 5,    # Scale 1-5
    lrscale <= 10,   # Scale 0-10
    pbldmna <= 2,    # 1-2 (Yes/No)
    stflife <= 10,   # Scale 0-10
    trstep <= 10,    # Scale 0-10
    trstplt <= 10,   # Scale 0-10
    vote <= 3,       # 1-3 (Voted, Did not, Ineligible)
    gndr <= 2,       # 1-2
    agea <= 110,     # Age in years
    domicil <= 5,    # 1-5
    hinctnta <= 10   # Income deciles
  ) %>%
  mutate(
    # Internet
    Internet_Usage = ifelse(netusoft >= 4, "Net_Daily", "Net_Rarely"),
    
    # Civic activity
    Contact_Politician = ifelse(contplt == 1, "Contact_Yes", "Contact_No"),
    Protested = ifelse(pbldmna == 1, "Protest_Yes", "Protest_No"),
    Voted = ifelse(vote == 1, "Vote_Yes", "Vote_No"),
    
    # Views and values
    LGBT_Support = ifelse(freehms <= 2, "LGBT_Pro", "LGBT_Anti"),
    Equality_Support = ifelse(gincdif <= 2, "Equal_Pro", "Equal_Anti"),
    Ideology = case_when(
      lrscale <= 3 ~ "Left",
      lrscale >= 7 ~ "Right",
      TRUE ~ "Center"
    ),
    Life_Satisfaction = ifelse(stflife >= 7, "Life_High_Sat", "Life_Low_Sat"),
    
    # Trust in institutions
    Trust_EU = ifelse(trstep >= 6, "EU_Trust_High", "EU_Trust_Low"),
    Trust_Politicians = ifelse(trstplt >= 6, "Polit_Trust_High", "Polit_Trust_Low"),
    
    # Demography
    Gender = ifelse(gndr == 1, "Male", "Female"),
    Age_Group = case_when(
      agea < 30 ~ "Age_Young",
      agea > 60 ~ "Age_Senior",
      TRUE ~ "Age_Middle"
    ),
    Habitat = ifelse(domicil <= 2, "Urban", "Rural"),
    Income_Level = case_when(
  hinctnta <= 3 ~ "Income_Low",
  hinctnta >= 8 ~ "Income_High",
  TRUE ~ "Income_Mid"
),
    
    # Education
    Education = case_when(
      edulvlb < 300 ~ "Edu_Low",
      edulvlb >= 600 ~ "Edu_High",
      TRUE ~ "Edu_Mid"
    )
  ) %>%
  select(Internet_Usage, Contact_Politician, Protested, Voted, LGBT_Support, 
         Equality_Support, Ideology, Life_Satisfaction, Trust_EU, 
         Trust_Politicians, Gender, Age_Group, Habitat, Income_Level, Education)

ess_t <- as(ess_clean, "transactions")

Exploratory Data Analysis

Before applying the Apriori algorithm, it is essential to conduct an Exploratory Data Analysis to understand the structural characteristics of the transaction dataset. This step ensures that the data has been correctly discretized and identifies the most prevalent social attitudes within the European population.

The dataset consists of 31,884 transactions (respondents) and 34 unique items (socio-political attributes). The matrix density is 0.441. In the context of association rule mining, this indicates a dense dataset compared to typical retail market basket data. This high density suggests that respondents share many common attributes, which will likely result in a large number of generated rules. Every transaction has a fixed length of exactly 15 items. This confirms that the data cleaning process was successful: each of the 31,884 respondents has a complete profile with one attribute selected for each of the 15 original variables.

The summary function also highlights the most frequent items, which represent the dominant socio-political traits in the sample. The two most common items are Protested=Protest_No (29,172 occurrences) and Contact_Politician=Contact_No (26,483 occurrences). This indicates that the vast majority of the European population does not participate in politics actively. Internet_Usage=Net_Daily (25,964 occurrences) is highly frequent, showing that daily digital access is a standard characteristic for most respondents. With 25,066 occurrences, Voted=Vote_Yes shows that traditional voting remains the primary form of political engagement. Progressive attitudes are prominent, with LGBT_Support=LGBT_Pro appearing in 23,903 transactions.

summary(ess_t)
## transactions as itemMatrix in sparse format with
##  31884 rows (elements/itemsets/transactions) and
##  34 columns (items) and a density of 0.4411765 
## 
## most frequent items:
##          Protested=Protest_No Contact_Politician=Contact_No 
##                         29172                         26483 
##      Internet_Usage=Net_Daily                Voted=Vote_Yes 
##                         25964                         25066 
##         LGBT_Support=LGBT_Pro                       (Other) 
##                         23903                        347672 
## 
## element (itemset/transaction) length distribution:
## sizes
##    15 
## 31884 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      15      15      15      15      15      15 
## 
## includes extended item information - examples:
##                          labels          variables     levels
## 1      Internet_Usage=Net_Daily     Internet_Usage  Net_Daily
## 2     Internet_Usage=Net_Rarely     Internet_Usage Net_Rarely
## 3 Contact_Politician=Contact_No Contact_Politician Contact_No
## 
## includes extended transaction information - examples:
##   transactionID
## 1             1
## 2             2
## 3             3

To verify the successful transformation of the data into a transactional format, the inspect() function was used to examine the first ten individual records. As shown in the output, each transaction represents a single respondent’s “basket” of socio-political attributes. For example, Respondent ID 1 is characterized as a senior living in a rural area with moderate income, who voted but did not participate in protests.

inspect(ess_t[1:10])
##      items                                 transactionID
## [1]  {Internet_Usage=Net_Daily,                         
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_No,                             
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Center,                                  
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_Low,                            
##       Trust_Politicians=Polit_Trust_Low,                
##       Gender=Male,                                      
##       Age_Group=Age_Senior,                             
##       Habitat=Rural,                                    
##       Income_Level=Income_Mid,                          
##       Education=Edu_Mid}                              1 
## [2]  {Internet_Usage=Net_Daily,                         
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_Yes,                            
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Left,                                    
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_Low,                            
##       Trust_Politicians=Polit_Trust_Low,                
##       Gender=Female,                                    
##       Age_Group=Age_Young,                              
##       Habitat=Urban,                                    
##       Income_Level=Income_Low,                          
##       Education=Edu_Mid}                              2 
## [3]  {Internet_Usage=Net_Daily,                         
##       Contact_Politician=Contact_Yes,                   
##       Protested=Protest_Yes,                            
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Left,                                    
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_High,                           
##       Trust_Politicians=Polit_Trust_Low,                
##       Gender=Female,                                    
##       Age_Group=Age_Middle,                             
##       Habitat=Rural,                                    
##       Income_Level=Income_Mid,                          
##       Education=Edu_High}                             3 
## [4]  {Internet_Usage=Net_Rarely,                        
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_No,                             
##       Voted=Vote_No,                                    
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Center,                                  
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_Low,                            
##       Trust_Politicians=Polit_Trust_Low,                
##       Gender=Female,                                    
##       Age_Group=Age_Senior,                             
##       Habitat=Urban,                                    
##       Income_Level=Income_Low,                          
##       Education=Edu_Mid}                              4 
## [5]  {Internet_Usage=Net_Daily,                         
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_No,                             
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Center,                                  
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_Low,                            
##       Trust_Politicians=Polit_Trust_Low,                
##       Gender=Female,                                    
##       Age_Group=Age_Middle,                             
##       Habitat=Rural,                                    
##       Income_Level=Income_High,                         
##       Education=Edu_Mid}                              5 
## [6]  {Internet_Usage=Net_Rarely,                        
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_No,                             
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Center,                                  
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_Low,                            
##       Trust_Politicians=Polit_Trust_Low,                
##       Gender=Female,                                    
##       Age_Group=Age_Senior,                             
##       Habitat=Rural,                                    
##       Income_Level=Income_Low,                          
##       Education=Edu_Low}                              6 
## [7]  {Internet_Usage=Net_Daily,                         
##       Contact_Politician=Contact_Yes,                   
##       Protested=Protest_Yes,                            
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Left,                                    
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_High,                           
##       Trust_Politicians=Polit_Trust_High,               
##       Gender=Female,                                    
##       Age_Group=Age_Senior,                             
##       Habitat=Rural,                                    
##       Income_Level=Income_High,                         
##       Education=Edu_High}                             7 
## [8]  {Internet_Usage=Net_Daily,                         
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_No,                             
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Center,                                  
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_Low,                            
##       Trust_Politicians=Polit_Trust_Low,                
##       Gender=Female,                                    
##       Age_Group=Age_Middle,                             
##       Habitat=Rural,                                    
##       Income_Level=Income_High,                         
##       Education=Edu_Mid}                              8 
## [9]  {Internet_Usage=Net_Rarely,                        
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_No,                             
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Center,                                  
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_Low,                            
##       Trust_Politicians=Polit_Trust_High,               
##       Gender=Female,                                    
##       Age_Group=Age_Senior,                             
##       Habitat=Rural,                                    
##       Income_Level=Income_Low,                          
##       Education=Edu_Low}                              9 
## [10] {Internet_Usage=Net_Daily,                         
##       Contact_Politician=Contact_No,                    
##       Protested=Protest_No,                             
##       Voted=Vote_Yes,                                   
##       LGBT_Support=LGBT_Pro,                            
##       Equality_Support=Equal_Pro,                       
##       Ideology=Center,                                  
##       Life_Satisfaction=Life_High_Sat,                  
##       Trust_EU=EU_Trust_High,                           
##       Trust_Politicians=Polit_Trust_High,               
##       Gender=Female,                                    
##       Age_Group=Age_Middle,                             
##       Habitat=Urban,                                    
##       Income_Level=Income_Mid,                          
##       Education=Edu_Mid}                              10

This technical output reveals the relative frequency (support) of specific attributes across the entire dataset of 31,884 respondents. Internet_Usage=Net_Daily has a support of 0.814, meaning that 81.4% of the respondents use the internet daily. Conversely, only 18.6% fall into the Net_Rarely category. 83.1% of the sample has not contacted a politician in the last year (Contact_No), while a minority of 16.9% has engaged in such direct political contact (Contact_Yes). The attribute Protested=Protest_No shows a very high frequency of 0.915. This indicates that 91.5% of the European sample did not participate in protests, leaving only a small segment of roughly 8.5% as active protestors. These values are crucial for defining Minimum Support parameter in the Apriori algorithm. Since “Protest_Yes” or “Contact_Yes” occur in less than 20% of cases, setting a global support threshold of 0.25 would cause the algorithm to completely ignore these active civic behaviors.

itemFrequency(ess_t[, 1:5])
##       Internet_Usage=Net_Daily      Internet_Usage=Net_Rarely 
##                      0.8143269                      0.1856731 
##  Contact_Politician=Contact_No Contact_Politician=Contact_Yes 
##                      0.8306047                      0.1693953 
##           Protested=Protest_No 
##                      0.9149417

The Item Frequency Plot provides a visual representation of the relative support for the most common socio-political attributes in the dataset. This visualization is crucial for identifying the baseline characteristics of the European population before generating association rules. The most frequent items are related to a lack of active political engagement: Protested=Protest_No and Contact_Politician=Contact_No. Both attributes exceed 80% support, confirming that the majority of citizens opt for traditional or passive forms of participation. Internet_Usage=Net_Daily and Voted=Vote_Yes also show very high frequency. This suggests that daily internet access and participating in national elections are “standard” behaviors for the vast majority of respondents. Attributes such as LGBT_Support=LGBT_Pro and Equality_Support=Equal_Pro appear among the top most frequent items. This indicates a widespread support for progressive social values across the surveyed European countries. Interestingly, Trust_Politicians=Polit_Trust_Low is more frequent than its positive counterpart, appearing as one of the top traits. This highlights a significant level of underlying skepticism toward national political institutions.

itemFrequencyPlot(ess_t, topN = 15, type = "relative", main = "Item Frequency Plot")

To gain a deeper understanding of the data structure, we utilize the image() function, which provides a visual representation of the sparse binary matrix. In this visualization, each row represents a single respondent (transaction), and each column represents a specific socio-political attribute (item). Detailed view (first 5 transactions) highlights the uniqueness of each respondent’s profile. For example, we can see how Transaction 1 differs from Transaction 2 based on the horizontal positioning of the grey squares.

image(ess_t[1:5])

The second matrix visualization displays a sample of the first 100 transactions across all items. The relatively uniform distribution of dots confirms the density of 0.44 identified in the summary, indicating that socio-political traits are well-distributed across the sample. The vertical alignment of points shows that certain items are consistently present, while the horizontal rows confirm that every respondent has a complete set of attributes without missing data.

image(sample(ess_t, 100))

Association Rule Learning

After the exploratory analysis, we proceed to the core phase of the study: Association Rule Mining using the Apriori algorithm. The goal of this stage is to identify significant patterns in the form of “if-then” relationships between socio-political attributes. To ensure the generation of high-quality rules, specific constraints were applied to the algorithm: we set a minimum support of 5%, meaning a rule must appear in at least 1,594 transactions to be considered. This threshold ensures statistical stability and focuses the analysis on patterns representing substantial social groups rather than rare outliers. A high confidence level of 70% was chosen to ensure the reliability of the rules. This means that in 7 out of 10 cases where the “if” condition (LHS) is met, the result (RHS) also occurs. We limited the rule length to between 3 and 5 items. This prevents the generation of overly simple, trivial associations while maintaining interpretability by avoiding overly complex chains of variables.

The algorithm successfully generated 51,576 rules. This high volume is consistent with our earlier finding of a dense transaction matrix (0.44), where many socio-political traits frequently co-occur.

rules <- apriori(ess_t, 
                 parameter = list(support = 0.05, 
                                  confidence = 0.7, 
                                  minlen = 3, 
                                  maxlen = 5))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.7    0.1    1 none FALSE            TRUE       5    0.05      3
##  maxlen target  ext
##       5  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 1594 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[34 item(s), 31884 transaction(s)] done [0.01s].
## sorting and recoding items ... [34 item(s)] done [0.00s].
## creating transaction tree ... done [0.01s].
## checking subsets of size 1 2 3 4 5
## Warning in apriori(ess_t, parameter = list(support = 0.05, confidence = 0.7, :
## Mining stopped (maxlen reached). Only patterns up to a length of 5 returned!
##  done [0.13s].
## writing ... [51576 rule(s)] done [0.00s].
## creating S4 object  ... done [0.01s].

The summary of the generated rules provides a statistical overview of the four key interest measures used to evaluate the strength and relevance of the associations. The minimum support is 0.05003, which perfectly aligns with our initial constraint of 5%. On average, rules have a support of 10.7% (Mean: 0.107), meaning they represent significant segments of the European population. The count measure shows that even the weakest rules represent at least 1,595 respondents, providing a solid foundation for generalizable conclusions.

The median confidence is 81.5%, with a maximum reaching 99.3%. This indicates that most of the discovered patterns are highly reliable; if the conditions in the LHS are met, the outcome in the RHS is almost certain in many cases. The Lift values range from 0.82 to 2.38. A median lift of 1.03 suggests that many rules describe expected relationships. However, the maximum lift of 2.38 is highly significant; it indicates that some attribute combinations make the occurrence of the RHS over twice as likely as it would be by chance. The average rule length is 4.6 items, with a median of 5. Most rules utilize the full range allowed by our maxlen=5 parameter. This demonstrates that socio-political identities in the ESS 11 data are complex and defined by a combination of multiple factors (e.g., age, income, and digital behavior together) rather than single variables.

summary(rules)
## set of 51576 rules
## 
## rule length distribution (lhs + rhs):sizes
##     3     4     5 
##  2684 13978 34914 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   4.000   5.000   4.625   5.000   5.000 
## 
## summary of quality measures:
##     support          confidence        coverage            lift       
##  Min.   :0.05003   Min.   :0.7000   Min.   :0.05078   Min.   :0.8221  
##  1st Qu.:0.06339   1st Qu.:0.7605   1st Qu.:0.07708   1st Qu.:0.9951  
##  Median :0.08465   Median :0.8152   Median :0.10347   Median :1.0343  
##  Mean   :0.10743   Mean   :0.8222   Mean   :0.13223   Mean   :1.0569  
##  3rd Qu.:0.12743   3rd Qu.:0.8804   3rd Qu.:0.15707   3rd Qu.:1.0890  
##  Max.   :0.61209   Max.   :0.9930   Max.   :0.77359   Max.   :2.3854  
##      count      
##  Min.   : 1595  
##  1st Qu.: 2021  
##  Median : 2699  
##  Mean   : 3425  
##  3rd Qu.: 4063  
##  Max.   :19516  
## 
## mining info:
##   data ntransactions support confidence
##  ess_t         31884    0.05        0.7
##                                                                                               call
##  apriori(data = ess_t, parameter = list(support = 0.05, confidence = 0.7, minlen = 3, maxlen = 5))

The first inspection of the general rule set focuses on Lift, which identifies relationships that are much stronger than would be expected by random chance. A Lift value above 1.0 indicates a positive association where the presence of the LHS significantly increases the probability of the RHS. The top results overwhelmingly define a specific socio-demographic profile for the Senior Age Group in Europe. The strongest rule (1) shows that individuals who rarely use the internet, do not contact politicians, but are voters with low income have a Lift of 2.38 for being in the Senior Age Group. This suggests that seniors are over twice as likely to fit this specific profile. Rules 4 and 5 highlight a strong link between low education, lack of digital engagement, and the senior population, with Lift values exceeding 2.33.

inspect(sort(rules, by = "lift")[1:5])
##     lhs                                 rhs                       support confidence   coverage     lift count
## [1] {Internet_Usage=Net_Rarely,                                                                               
##      Contact_Politician=Contact_No,                                                                           
##      Voted=Vote_Yes,                                                                                          
##      Income_Level=Income_Low}        => {Age_Group=Age_Senior} 0.05291055  0.8598369 0.06153557 2.385368  1687
## [2] {Internet_Usage=Net_Rarely,                                                                               
##      Protested=Protest_No,                                                                                    
##      Voted=Vote_Yes,                                                                                          
##      Income_Level=Income_Low}        => {Age_Group=Age_Senior} 0.05764647  0.8580766 0.06718103 2.380485  1838
## [3] {Internet_Usage=Net_Rarely,                                                                               
##      Voted=Vote_Yes,                                                                                          
##      Income_Level=Income_Low}        => {Age_Group=Age_Senior} 0.05902647  0.8539020 0.06912558 2.368904  1882
## [4] {Internet_Usage=Net_Rarely,                                                                               
##      Contact_Politician=Contact_No,                                                                           
##      Protested=Protest_No,                                                                                    
##      Education=Edu_Low}              => {Age_Group=Age_Senior} 0.05557646  0.8434079 0.06589512 2.339791  1772
## [5] {Internet_Usage=Net_Rarely,                                                                               
##      Contact_Politician=Contact_No,                                                                           
##      Education=Edu_Low}              => {Age_Group=Age_Senior} 0.05664283  0.8427438 0.06721239 2.337949  1806

The top rules sorted by confidence reveal an exceptionally strong predictors for Daily Internet Usage among Europeans. All top 5 rules have a confidence level exceeding 99.2%. This means that for individuals fitting these specific profiles, the probability of being a daily internet user is nearly certain.The primary drivers of this certainty are High Education, High Income, and belonging to the Young or Middle-age groups. Interestingly, high digital certainty is also linked to progressive social values (LGBT_Pro) and institutional trust (EU_Trust_High or Polit_Trust_High). For example, a young person with high trust in the EU and progressive social values has a 99.25% probability of using the internet daily (Rule [3]). Despite being very specific, these rules maintain significant Support (ranging from 5.3% to 13.7%), representing thousands of respondents in the sample.

inspect(sort(rules, by = "confidence")[1:5])
##     lhs                                      rhs                           support confidence   coverage     lift count
## [1] {Life_Satisfaction=Life_High_Sat,                                                                                  
##      Age_Group=Age_Middle,                                                                                             
##      Income_Level=Income_High,                                                                                         
##      Education=Edu_High}                  => {Internet_Usage=Net_Daily} 0.09318153  0.9929813 0.09384017 1.219389  2971
## [2] {LGBT_Support=LGBT_Pro,                                                                                            
##      Age_Group=Age_Middle,                                                                                             
##      Income_Level=Income_High,                                                                                         
##      Education=Edu_High}                  => {Internet_Usage=Net_Daily} 0.09456154  0.9927560 0.09525154 1.219112  3015
## [3] {LGBT_Support=LGBT_Pro,                                                                                            
##      Trust_EU=EU_Trust_High,                                                                                           
##      Age_Group=Age_Young}                 => {Internet_Usage=Net_Daily} 0.05372601  0.9924681 0.05413373 1.218759  1713
## [4] {LGBT_Support=LGBT_Pro,                                                                                            
##      Life_Satisfaction=Life_High_Sat,                                                                                  
##      Age_Group=Age_Middle,                                                                                             
##      Education=Edu_High}                  => {Internet_Usage=Net_Daily} 0.13746707  0.9923025 0.13853343 1.218555  4383
## [5] {LGBT_Support=LGBT_Pro,                                                                                            
##      Trust_Politicians=Polit_Trust_High,                                                                               
##      Age_Group=Age_Middle,                                                                                             
##      Education=Edu_High}                  => {Internet_Usage=Net_Daily} 0.05551374  0.9921525 0.05595283 1.218371  1770

The top rules sorted by support identify a profile of Civic Passivity combined with Digital Integration. The top three rules are permutations of the same itemset: Internet_Usage=Net_Daily, Contact_Politician=Contact_No, Protested=Protest_No. These rules have a support of 61.2%, meaning that the most common experience for Europeans is being digitally active but politically disengaged from direct contact or protest. Rules 4 and 5 include Voted=Vote_Yes with nearly 59% support. This reinforces the idea that for the vast majority of citizens, voting is the only form of political participation they engage in, while avoiding more demanding activities like protesting or contacting officials. All of these rules have a Lift very close to 1.0 (ranging from 0.97 to 1.01). This indicates that while these patterns are extremely common, they are also highly expected—the attributes occur together almost exactly as often as would be predicted by their individual frequencies.

inspect(sort(rules, by = "support")[1:5])
##     lhs                                 rhs                               support confidence  coverage      lift count
## [1] {Internet_Usage=Net_Daily,                                                                                        
##      Contact_Politician=Contact_No}  => {Protested=Protest_No}          0.6120938  0.9210874 0.6645339 1.0067171 19516
## [2] {Internet_Usage=Net_Daily,                                                                                        
##      Protested=Protest_No}           => {Contact_Politician=Contact_No} 0.6120938  0.8312463 0.7363568 1.0007724 19516
## [3] {Contact_Politician=Contact_No,                                                                                   
##      Protested=Protest_No}           => {Internet_Usage=Net_Daily}      0.6120938  0.7912427 0.7735855 0.9716523 19516
## [4] {Contact_Politician=Contact_No,                                                                                   
##      Voted=Vote_Yes}                 => {Protested=Protest_No}          0.5880693  0.9277585 0.6338602 1.0140084 18750
## [5] {Protested=Protest_No,                                                                                            
##      Voted=Vote_Yes}                 => {Contact_Politician=Contact_No} 0.5880693  0.8224406 0.7150295 0.9901709 18750

The fact that the algorithm correctly identified well-known sociological links (e.g., seniors having lower internet usage and lower education levels in certain regions) serves as a validation that the Apriori algorithm and the discretization process are working correctly. While these general rules are statistically strong, they primarily describe demographic characteristics. To find more specific insights regarding political behavior and trust, we must move beyond general mining to the Targeted Comparative Analysis presented in the following sections.

Next, we use a matrix-based visualization to evaluate the relationships between the Antecedents (LHS) and Consequents (RHS) for all 51,576 generated rules. The horizontal axis represents the unique sets of items in the Left-Hand Side (antecedents), while the vertical axis represents the Right-Hand Side (consequents). The color gradient represents the Lift measure. The vertical bands in the plot suggest that certain consequents are very common in our dataset, meaning many different combinations of demographic and behavioral traits lead to the same result. The sparse red marks at the top left of the matrix represent high-lift rules for less common outcomes. These are often the most meaningful rules, as they describe specific, non-obvious profiles of groups. This visualization confirms that while the majority of our 54,000 rules are concentrated in a few highly frequent areas (the dense horizontal bands), there is a significant variety of unique, high-strength associations hidden within the data.

To evaluate the overall quality of the generated association rules before moving to targeted mining, we use a scatter plot visualization that maps support, lift, and confidence for all 51,576 rules. The plot clearly illustrates that rules with the highest support generally have a lift close to 1.0, representing common but expected social behaviors. The most interesting patterns are found in the top-left cluster, where the lift reaches values between 2.0 and 2.4. These rules represent specific socio-political profiles that occur significantly more often than random chance would suggest, even if their overall support is lower.

Next, the Two-key plot is analyzed. It is a version of the scatter plot that replaces the Lift measure on the y-axis with Confidence, while using color to represent the Order (length) of the rules. he colors represent the number of items in a rule (Order 3, 4, or 5). The plot highlights that shorter rules (red, Order 3) tend to have much higher Support, while the most complex rules (blue, Order 5) are concentrated at the lower end of the support scale. The plot shows that we can achieve very high Confidence (near 1) regardless of the rule’s length.

Activism

This section analyzes the distinct characteristics of European citizens based on their level of active civic engagement. By contrasting those who participated in lawful demonstrations (Protest_Yes) with those who remain passive (Protest_No), we identify the socioeconomic and ideological drivers of activism.

rules.protest <- apriori(data=ess_t, 
                         parameter=list(supp=0.005, conf=0.05, minlen=2), 
                         appearance=list(default="lhs", rhs="Protested=Protest_Yes"), 
                         control=list(verbose=F))

rules.no_protest <- apriori(data=ess_t, 
                            parameter=list(supp=0.01, conf=0.1, minlen=2), 
                            appearance=list(default="lhs", rhs="Protested=Protest_No"), 
                            control=list(verbose=F))

inspect(head(sort(rules.protest, by="lift")))
##     lhs                                  rhs                         support confidence   coverage     lift count
## [1] {Internet_Usage=Net_Daily,                                                                                   
##      Contact_Politician=Contact_Yes,                                                                             
##      Ideology=Left,                                                                                              
##      Habitat=Urban}                   => {Protested=Protest_Yes} 0.005614101  0.4192037 0.01339230 4.928426   179
## [2] {Contact_Politician=Contact_Yes,                                                                             
##      LGBT_Support=LGBT_Pro,                                                                                      
##      Ideology=Left,                                                                                              
##      Habitat=Urban}                   => {Protested=Protest_Yes} 0.005018191  0.4134367 0.01213775 4.860625   160
## [3] {Internet_Usage=Net_Daily,                                                                                   
##      Contact_Politician=Contact_Yes,                                                                             
##      Voted=Vote_Yes,                                                                                             
##      Ideology=Left,                                                                                              
##      Habitat=Urban}                   => {Protested=Protest_Yes} 0.005080918  0.4111675 0.01235730 4.833947   162
## [4] {Contact_Politician=Contact_Yes,                                                                             
##      Ideology=Left,                                                                                              
##      Habitat=Urban}                   => {Protested=Protest_Yes} 0.005770920  0.4107143 0.01405093 4.828619   184
## [5] {Contact_Politician=Contact_Yes,                                                                             
##      Voted=Vote_Yes,                                                                                             
##      Ideology=Left,                                                                                              
##      Habitat=Urban}                   => {Protested=Protest_Yes} 0.005237737  0.4033816 0.01298457 4.742412   167
## [6] {Contact_Politician=Contact_Yes,                                                                             
##      LGBT_Support=LGBT_Pro,                                                                                      
##      Equality_Support=Equal_Pro,                                                                                 
##      Ideology=Left,                                                                                              
##      Income_Level=Income_Mid}         => {Protested=Protest_Yes} 0.005206373  0.3640351 0.01430184 4.279828   166
inspect(head(sort(rules.no_protest, by="lift")))
##     lhs                                     rhs                       support confidence   coverage     lift count
## [1] {Internet_Usage=Net_Rarely,                                                                                   
##      Contact_Politician=Contact_No,                                                                               
##      LGBT_Support=LGBT_Anti,                                                                                      
##      Equality_Support=Equal_Pro,                                                                                  
##      Ideology=Center,                                                                                             
##      Life_Satisfaction=Life_Low_Sat,                                                                              
##      Habitat=Rural}                      => {Protested=Protest_No} 0.01207502  1.0000000 0.01207502 1.092966   385
## [2] {Internet_Usage=Net_Rarely,                                                                                   
##      Contact_Politician=Contact_No,                                                                               
##      LGBT_Support=LGBT_Anti,                                                                                      
##      Equality_Support=Equal_Pro,                                                                                  
##      Trust_Politicians=Polit_Trust_Low,                                                                           
##      Gender=Female,                                                                                               
##      Age_Group=Age_Senior,                                                                                        
##      Income_Level=Income_Low}            => {Protested=Protest_No} 0.01176139  1.0000000 0.01176139 1.092966   375
## [3] {Internet_Usage=Net_Rarely,                                                                                   
##      Contact_Politician=Contact_No,                                                                               
##      LGBT_Support=LGBT_Anti,                                                                                      
##      Equality_Support=Equal_Pro,                                                                                  
##      Ideology=Center,                                                                                             
##      Life_Satisfaction=Life_Low_Sat,                                                                              
##      Trust_Politicians=Polit_Trust_Low,                                                                           
##      Habitat=Rural}                      => {Protested=Protest_No} 0.01082047  1.0000000 0.01082047 1.092966   345
## [4] {Internet_Usage=Net_Rarely,                                                                                   
##      Contact_Politician=Contact_No,                                                                               
##      Voted=Vote_Yes,                                                                                              
##      Equality_Support=Equal_Pro,                                                                                  
##      Ideology=Center,                                                                                             
##      Life_Satisfaction=Life_High_Sat,                                                                             
##      Age_Group=Age_Senior,                                                                                        
##      Income_Level=Income_Low}            => {Protested=Protest_No} 0.01201229  1.0000000 0.01201229 1.092966   383
## [5] {Internet_Usage=Net_Rarely,                                                                                   
##      Contact_Politician=Contact_No,                                                                               
##      LGBT_Support=LGBT_Anti,                                                                                      
##      Equality_Support=Equal_Pro,                                                                                  
##      Gender=Female,                                                                                               
##      Age_Group=Age_Senior,                                                                                        
##      Income_Level=Income_Low}            => {Protested=Protest_No} 0.01464684  0.9978632 0.01467821 1.090630   467
## [6] {Internet_Usage=Net_Rarely,                                                                                   
##      Contact_Politician=Contact_No,                                                                               
##      Equality_Support=Equal_Pro,                                                                                  
##      Trust_EU=EU_Trust_Low,                                                                                       
##      Gender=Female,                                                                                               
##      Age_Group=Age_Senior,                                                                                        
##      Habitat=Rural,                                                                                               
##      Education=Edu_Low}                  => {Protested=Protest_No} 0.01455275  0.9978495 0.01458412 1.090615   464

The rules with the highest Lift (approaching 4.9) reveal that activism is not a random occurrence but a product of specific overlapping traits. Every top rule for activists includes Contact_Politician=Contact_Yes. This suggests that protest is often an extension of other active forms of engagement, such as direct communication with officials. The strongest predictors of protest participation are Left-wing ideology paired with an Urban habitat. Citizens in metropolitan areas with progressive views are nearly five times more likely to protest than the general population (Lift: 4.93). Daily internet use (Net_Daily) and a history of voting (Vote_Yes) are also consistent predictors in the activist profile. Strong support for progressive causes, specifically LGBT_Support=LGBT_Pro and Equality_Support=Equal_Pro, significantly characterizes the protest-inclined group.

In contrast, the rules describing those who do not protest exhibit near-perfect Confidence (1.00), indicating a complete absence of activism within specific demographic clusters. Passivity is absolute (100% confidence) among respondents characterized by Rural habitats, Centrist or Conservative ideologies, and a lack of political contact. The passive profile is strongly linked to low internet usage and low income. This suggests that a lack of resources, both digital and financial, acts as a barrier to public demonstration. Interestingly, many high-confidence passive rules include Trust_Politicians=Polit_Trust_Low and Life_Satisfaction=Life_Low_Sat. This highlights a segment that is both dissatisfied with their lives and skeptical of politics, yet remains civically inactive.

Comparative Socio-Political Profiles based on ESS 11 Association Rules
Characteristic Active Activist Profile Passive Silent Profile
Primary Outcome (RHS) Protested = YES Protested = NO
Core Demographic Urban dwellers, High Education Rural areas, Seniors
Digital Behavior Daily Internet Usage Rarely use Internet
Political Ideology Strongly Left-wing Centrist / Neutral
Civic Engagement Contact with politicians No contact with politicians
Social Values Pro-LGBT, Pro-Equality Anti-LGBT / Conservative
Avg. Lift ~4.85 ~1.09
Confidence ~41% 100%

The Parallel Coordinates plots map each rule as a line moving from left to right. The width of the line represents support, while the color intensity represents lift. In the graph for activists, most lines for the top 10 rules follow nearly identical paths. They pass through Internet_Usage=Net_Daily, Contact_Politician=Contact_Yes, and Ideology=Left. The thickest, darkest lines flow through Urban habitats and High Education levels. The plot demonstrates that for this group, political activism is “bundled” with digital and social resources.

The graph for the passive majority shows a much more complex and varied set of paths. Unlike activists, the passive group is reached through many different “routes”. One major flow passes through Age_Senior and Internet_Usage=Net_Rarely, while another flows through Income_Low and Polit_Trust_Low. The lighter, thinner lines reflect that while these rules have high confidence, they represent the “standard” state of a very large and diverse population segment.

Left-Right Scale

This section explores the distinct socio-economic and value-based profiles that define the Left-wing and Right-wing ideological camps in Europe. By analyzing targeted rules for both sides of the political spectrum, we can identify the specific sets of attitudes that act as the strongest predictors for a citizen’s self-placement on the ideology scale.

library(arules)
library(arulesViz)


rules_left <- apriori(ess_t, 
                      parameter = list(supp = 0.02, conf = 0.3, minlen = 3, maxlen = 5),
                      appearance = list(default="lhs", rhs="Ideology=Left"),
                      control = list(verbose=F))

rules_right <- apriori(ess_t, 
                       parameter = list(supp = 0.02, conf = 0.3, minlen = 3, maxlen = 5),
                       appearance = list(default="lhs", rhs="Ideology=Right"),
                       control = list(verbose=F))


inspect(head(sort(rules_left, by="lift"), 5))
##     lhs                                  rhs                support confidence   coverage     lift count
## [1] {Protested=Protest_Yes,                                                                             
##      Voted=Vote_Yes,                                                                                    
##      LGBT_Support=LGBT_Pro,                                                                             
##      Equality_Support=Equal_Pro}      => {Ideology=Left} 0.02578096  0.5337662 0.04830009 2.288062   822
## [2] {Internet_Usage=Net_Daily,                                                                          
##      Protested=Protest_Yes,                                                                             
##      LGBT_Support=LGBT_Pro,                                                                             
##      Equality_Support=Equal_Pro}      => {Ideology=Left} 0.02838414  0.5329800 0.05325555 2.284691   905
## [3] {Protested=Protest_Yes,                                                                             
##      LGBT_Support=LGBT_Pro,                                                                             
##      Equality_Support=Equal_Pro,                                                                        
##      Life_Satisfaction=Life_High_Sat} => {Ideology=Left} 0.02242504  0.5315985 0.04218417 2.278769   715
## [4] {Protested=Protest_Yes,                                                                             
##      LGBT_Support=LGBT_Pro,                                                                             
##      Equality_Support=Equal_Pro}      => {Ideology=Left} 0.02982687  0.5251242 0.05679965 2.251017   951
## [5] {Internet_Usage=Net_Daily,                                                                          
##      Protested=Protest_Yes,                                                                             
##      Voted=Vote_Yes,                                                                                    
##      Equality_Support=Equal_Pro}      => {Ideology=Left} 0.02606323  0.5167910 0.05043282 2.215295   831
inspect(head(sort(rules_right, by="lift"), 5))
##     lhs                                      rhs                 support confidence   coverage     lift count
## [1] {Voted=Vote_Yes,                                                                                         
##      Equality_Support=Equal_Anti,                                                                            
##      Life_Satisfaction=Life_High_Sat,                                                                        
##      Trust_Politicians=Polit_Trust_High}  => {Ideology=Right} 0.02803914  0.4663537 0.06012420 1.833895   894
## [2] {Voted=Vote_Yes,                                                                                         
##      Equality_Support=Equal_Anti,                                                                            
##      Gender=Male,                                                                                            
##      Income_Level=Income_High}            => {Ideology=Right} 0.02324050  0.4651601 0.04996236 1.829201   741
## [3] {Equality_Support=Equal_Anti,                                                                            
##      Life_Satisfaction=Life_High_Sat,                                                                        
##      Gender=Male,                                                                                            
##      Income_Level=Income_High}            => {Ideology=Right} 0.02408732  0.4620939 0.05212646 1.817144   768
## [4] {Protested=Protest_No,                                                                                   
##      Equality_Support=Equal_Anti,                                                                            
##      Life_Satisfaction=Life_High_Sat,                                                                        
##      Trust_Politicians=Polit_Trust_High}  => {Ideology=Right} 0.03123824  0.4596216 0.06796512 1.807422   996
## [5] {Equality_Support=Equal_Anti,                                                                            
##      Trust_Politicians=Polit_Trust_High,                                                                     
##      Gender=Male}                         => {Ideology=Right} 0.02101367  0.4579631 0.04588508 1.800900   670

The rules for Ideology=Left exhibit high Lift values (reaching 2.29), indicating that these specific combinations of traits are over twice as likely to be found among left-wing supporters than in the general population. A defining characteristic of the European Left is the strong association with protest participation. Every top rule for this group includes Protested=Protest_Yes. Left-wing ideology is almost inseparable from social progressivism. The strongest rules are anchored by unwavering support for LGBT rights and income equality. Left-wing supporters are typically active voters and daily internet users. Interestingly, rule 3 highlights that a segment of this group also reports high life satisfaction, suggesting that left-wing activism is often driven by individuals who are both socially engaged and personally content.

The rules for Ideology=Right reveal a completely different set of anchors, focusing more on socio-economic status and satisfaction with the status quo. The most powerful predictor for right-wing ideology is the combination of high life satisfaction and high trust in national politicians. This suggests that the European Right is strongly defined by a sense of systemic contentment. A consistent trait across all top rules is opposition to state-mandated income redistribution. This is a core ideological separator from the Left. The right-wing profile is strongly associated with males and high income levels. Unlike the activist Left, this group is characterized by a lack of protest participation, preferring traditional electoral participation.

Comparative Ideological Profiles (Left vs. Right) in ESS 11
Dimension Left-Wing Profile Right-Wing Profile
Outcome (RHS) Ideology = LEFT Ideology = RIGHT
Civic Activity Protest_Yes (High Engagement) Protest_No (Stability)
Social Values LGBT_Pro, Equality_Pro LGBT_Anti, Equality_Anti
Institutional View System Critical / Activist High Trust in Politicians
Personal Status Net_Daily, Urban dwellers High Life Satisfaction, High Income
Avg. Lift ~2.25 - 2.29 ~1.79 - 1.83
Confidence Range 51% - 53% 45% - 47%

The flow for the Left-wing profile shows a high degree of convergence around social mobilization. The darkest and thickest lines flow directly through the combination of Equality_Support=Equal_Pro and LGBT_Support=LGBT_Pro. This confirms that social and economic progressivism are the primary anchors of this identity. The lines also pass consistently through Protested=Protest_Yes and Voted=Vote_Yes. This visually illustrates that for the European Left, ideological identity is inseparable from active civic participation.

The flow for the Right-wing profile shows a distinct path centered on systemic satisfaction and traditional roles. The most prominent lines pass through Life_Satisfaction=Life_High_Sat and Trust_Politicians=Polit_Trust_High. A clear, consistent flow is seen through Equality_Support=Equal_Anti, which acts as a major ideological filter separating this group from the Left.

Trust in European Parliament

The final part of this analysis examines the factors that influence trust in the European Parliament. By targeting rules for EU_Trust_High and EU_Trust_Low, we can identify the specific socio-political traits that foster either institutional support or skepticism among European citizens.

rules_eu_high <- apriori(ess_t, 
                         parameter = list(supp = 0.02, conf = 0.4, minlen = 3),
                         appearance = list(default="lhs", rhs="Trust_EU=EU_Trust_High"),
                         control = list(verbose=F))

rules_eu_low <- apriori(ess_t, 
                        parameter = list(supp = 0.02, conf = 0.4, minlen = 3),
                        appearance = list(default="lhs", rhs="Trust_EU=EU_Trust_Low"),
                        control = list(verbose=F))

inspect(head(sort(rules_eu_high, by="lift"), 5))
##     lhs                                      rhs                         support confidence   coverage     lift count
## [1] {Internet_Usage=Net_Daily,                                                                                       
##      Contact_Politician=Contact_No,                                                                                  
##      LGBT_Support=LGBT_Pro,                                                                                          
##      Life_Satisfaction=Life_High_Sat,                                                                                
##      Trust_Politicians=Polit_Trust_High,                                                                             
##      Age_Group=Age_Young}                 => {Trust_EU=EU_Trust_High} 0.02007276  0.8901252 0.02255050 2.198695   640
## [2] {Contact_Politician=Contact_No,                                                                                  
##      LGBT_Support=LGBT_Pro,                                                                                          
##      Life_Satisfaction=Life_High_Sat,                                                                                
##      Trust_Politicians=Polit_Trust_High,                                                                             
##      Age_Group=Age_Young}                 => {Trust_EU=EU_Trust_High} 0.02013549  0.8879668 0.02267595 2.193363   642
## [3] {Internet_Usage=Net_Daily,                                                                                       
##      LGBT_Support=LGBT_Pro,                                                                                          
##      Life_Satisfaction=Life_High_Sat,                                                                                
##      Trust_Politicians=Polit_Trust_High,                                                                             
##      Age_Group=Age_Young}                 => {Trust_EU=EU_Trust_High} 0.02223686  0.8829390 0.02518505 2.180944   709
## [4] {LGBT_Support=LGBT_Pro,                                                                                          
##      Ideology=Left,                                                                                                  
##      Life_Satisfaction=Life_High_Sat,                                                                                
##      Trust_Politicians=Polit_Trust_High,                                                                             
##      Education=Edu_High}                  => {Trust_EU=EU_Trust_High} 0.02145277  0.8814433 0.02433823 2.177250   684
## [5] {LGBT_Support=LGBT_Pro,                                                                                          
##      Life_Satisfaction=Life_High_Sat,                                                                                
##      Trust_Politicians=Polit_Trust_High,                                                                             
##      Age_Group=Age_Young}                 => {Trust_EU=EU_Trust_High} 0.02229959  0.8810409 0.02531050 2.176256   711
inspect(head(sort(rules_eu_low, by="lift"), 5))
##     lhs                                     rhs                        support confidence   coverage     lift count
## [1] {Contact_Politician=Contact_No,                                                                                
##      Protested=Protest_No,                                                                                         
##      Voted=Vote_No,                                                                                                
##      Equality_Support=Equal_Pro,                                                                                   
##      Life_Satisfaction=Life_Low_Sat,                                                                               
##      Trust_Politicians=Polit_Trust_Low,                                                                            
##      Habitat=Rural}                      => {Trust_EU=EU_Trust_Low} 0.02603187  0.8350101 0.03117551 1.403007   830
## [2] {Ideology=Center,                                                                                              
##      Life_Satisfaction=Life_Low_Sat,                                                                               
##      Trust_Politicians=Polit_Trust_Low,                                                                            
##      Gender=Female,                                                                                                
##      Habitat=Rural,                                                                                                
##      Education=Edu_Mid}                  => {Trust_EU=EU_Trust_Low} 0.02182913  0.8345324 0.02615732 1.402204   696
## [3] {Contact_Politician=Contact_No,                                                                                
##      LGBT_Support=LGBT_Anti,                                                                                       
##      Life_Satisfaction=Life_Low_Sat,                                                                               
##      Trust_Politicians=Polit_Trust_Low,                                                                            
##      Age_Group=Age_Middle,                                                                                         
##      Habitat=Rural}                      => {Trust_EU=EU_Trust_Low} 0.02076277  0.8337531 0.02490277 1.400895   662
## [4] {Contact_Politician=Contact_No,                                                                                
##      Protested=Protest_No,                                                                                         
##      LGBT_Support=LGBT_Anti,                                                                                       
##      Equality_Support=Equal_Pro,                                                                                   
##      Life_Satisfaction=Life_Low_Sat,                                                                               
##      Trust_Politicians=Polit_Trust_Low,                                                                            
##      Age_Group=Age_Middle}               => {Trust_EU=EU_Trust_Low} 0.02104504  0.8325062 0.02527914 1.398800   671
## [5] {Contact_Politician=Contact_No,                                                                                
##      Protested=Protest_No,                                                                                         
##      LGBT_Support=LGBT_Anti,                                                                                       
##      Life_Satisfaction=Life_Low_Sat,                                                                               
##      Trust_Politicians=Polit_Trust_Low,                                                                            
##      Age_Group=Age_Middle,                                                                                         
##      Habitat=Rural}                      => {Trust_EU=EU_Trust_Low} 0.02022958  0.8322581 0.02430686 1.398383   645

The rules for high trust in the European Parliament exhibit a high Lift (up to 2.20) and Confidence (reaching 89%), indicating a very strong and reliable set of predictors for institutional support. A defining characteristic of those with a high level of trust is belonging to the young age group. High trust in the EP is consistently linked to younger respondents who are also personally satisfied with their lives. High trust in the EU does not exist in isolation: it is almost inseparable from high trust in national politicians. This suggests that institutional trust is a generalized attitude - those who trust their domestic government are significantly more likely to trust the European Parliament. Euroenthusiasts are overwhelmingly socially progressive, with all top rules including support for LGBT rights. Higher education and Left-wing ideology also emerge as key predictors in this cluster.

The rules for low trust in the European Parliament highlight a profile of socio-economic and institutional alienation. Euroscepticism is strongly anchored in low life satisfaction and low trust in national politicians. For these respondents, skepticism toward the EU is part of a broader dissatisfaction with political systems at all levels. Scepticism is significantly more characterisic of citizens in rural areas who are civically passive. Many top rules for low trust include low income levels, suggesting that economic vulnerability may contribute to a sense of exclusion. Unlike the high-trust group, the Eurosceptic profile is frequently associated with opposition to LGBT rights.

Comparative Profiles of EU Institutional Trust in ESS 11
Dimension EU Trust: High (Enthusiasts) EU Trust: Low (Skeptics)
Primary Outcome (RHS) Trust_EU = HIGH Trust_EU = LOW
Domestic Trust Link High Trust in National Politicians Low Trust in National Politicians
Life Quality High Life Satisfaction Low Life Satisfaction
Demographics Younger Age Groups, Urban/Edu High Rural areas, Low Income
Social Values Pro-LGBT, Left/Liberal leaning Anti-LGBT, Conservative leaning
Avg. Lift ~2.18 - 2.20 ~1.40 - 1.41
Confidence ~88% - 89% ~83% - 84%

To finalize the analysis of institutional trust, these Parallel Coordinates Plots visualize the specific multi-step pathways that lead to high or low trust in the European Parliament. The flow for the high-trust profile demonstrates a high level of convergence among younger, satisfied citizens. A significant number of flows through Trust_Politicians=Polit_Trust_High, visually confirming that national and European trust are deeply intertwined. Consistent flows through LGBT_Support=LGBT_Pro and Ideology=Left show that the Euroenthusiast identity is closely tied to a specific ideological and value-based foundation.

The flow for the low-trust profile highlights a fragmented but consistent pathway. The thickest lines flow through Trust_Politicians=Polit_Trust_Low and Life_Satisfaction=Life_Low_Sat. This visually identifies skeptics as individuals who feel let down by political systems at both the domestic and European levels. Clear pathways pass through Habitat=Rural and Voted=Vote_No. This illustrates that Euroscepticism is often part of a broader pattern of geographic isolation and electoral withdrawal. The network of lines connecting LGBT_Support=LGBT_Anti to low EU trust shows that traditional social values often align with institutional skepticism in the current European landscape.

Conclusion

This study successfully applied Association Rule Mining (the Apriori algorithm) to the European Social Survey (ESS) Round 11 dataset to uncover the complex structures of contemporary European society. Through a process of data discretization, we transformed 15 multi-dimensional variables into a dense transaction matrix consisting of 31,884 respondents. By fine-tuning parameters to a minimum support of 0.05 and confidence of 0.7, we generated a robust set of 51,576 rules.

A primary challenge during the initial phase was the high prevalence of trivial rules. General rules with high support often confirmed common-sense demographic links - such as the digital exclusion of low-income seniors - which, while validating the model’s accuracy, offered limited strategic value.

To move beyond these obvious associations, we transitioned to targeted rule mining by specifying particular outcomes on the Right-Hand Side (RHS). This allowed us to filter out the statistical noise and extract actionable insights regarding three critical social dimensions: civic activism, political ideology, and institutional trust.

The targeted analysis revealed deep socio-political polarizations across Europe. We identified a distinct activist profile characterized by a high-lift combination of urban living, left-wing ideology, and high digital/electoral connectivity. This stands in sharp contrast to a passive baseline of rural, resource-poor citizens who remain disengaged from public protest.

The study also demonstrated that political identity is a bundle of values. The Left is anchored in social progressivism and mobilization, whereas the Right is defined by personal life satisfaction and trust in national institutions. Trust in the European Parliament emerged as a trait of the young and socially satisfied. Conversely, Euroscepticism was found to be a symptom of broader socio-economic alienation rather than an isolated political opinion.

The value of this research lies in its ability to provide portraits rather than isolated statistics. By identifying these groups of attributes, we offer a more nuanced understanding of the drivers behind political behavior in Europe. These findings demonstrate that Association Rule Mining is an exceptionally powerful tool for transforming raw survey data into meaningful, evidence-based narratives.