The aim of this project is to examine the relationship between conservatism and religiosity across European countries included in the European Values Study (EVS) 2017. Religiosity is conceptualized through two dimensions — the practice dimension and the norm dimension — as identified by Coutinho in Portuguese Youth Religiosity in Comparative Perspective.
The practice dimension is measured by:
v54, how often attend religious services (Q15).
v64, how often do you pray outside religious services (Q22).
The norm dimension is measured by:
v153, do you justify: homosexuality (Q44E).
v154, do you justify: abortion (Q44F).
v155, do you justify: divorce (Q44G).
v156 do you justify: euthanasia (Q44H).
In addition to the core religiosity and conservatism variables, three
demographic variables were included in the analysis:
c_abrv, country.
v225, sex respondent (Q63).
age_r, age.
Variables belonging to the practice dimension are measured on a scale from 1 to 7, while variables from the norm dimension range from 1 to 10. All variables were reverse-coded prior to analysis, so that higher values indicate greater religiosity and stronger conservatism.
This study tests three hypotheses:
H1: More religious countries tend to be more conservative.
H2: Younger generations are less religious and less conservative than
older ones.
H3: Men are more conservative than women.
library(tidyverse)
library(psych)
library(factoextra)
library(dplyr)
library(questionr)
library(caret)
library(corrplot)
library(ggplot2)
library(ggrepel)
library(haven)
library(arules)
library(arulesViz)
library(arulesCBA)
evs <- read_dta("ZA7500_v5-0-0.dta")
df_subset <- evs %>%
select(
c_abrv,
age_r,
v64,
v54,
v153,
v154,
v155,
v156,
#v158
v225
)
# Filter data
df_clean <- df_subset %>%
filter(
age_r > 0,
v225 > 0,
v64 > 0 & v64 <= 7,
v54 > 0 & v54 <= 7,
v153 > 0 & v153 <= 10,
v154 > 0 & v154 <= 10,
v155 > 0 & v155 <= 10,
v156 > 0 & v156 <= 10,
#v158 > 0 & v158 <= 10
v225>0
) %>%
drop_na()
head(df_clean,3)
# change the order - the more the more religious person
df_ordered <- df_clean %>%
mutate(
v64 = 8 - as.numeric(v64),
v54 = 8 - as.numeric(v54),
v153 = 11 - as.numeric(v153),
v154 = 11 - as.numeric(v154),
v155 = 11 - as.numeric(v155),
v156 = 11 - as.numeric(v156),
)
df_ordered <- df_ordered %>%
rename(
prayer = v64,
attend = v54,
homosex = v153,
abort = v154,
divorce = v155,
euthan = v156,
sex = v225
)The data used in this study were downloaded from the official website of the European Values Study (EVS) for the 2017 wave. The dataset includes all countries available in the EVS 2017, covering 46 European countries and territories. Following the initial data loading, all missing values were removed from the dataset prior to analysis.
## c_abrv age_r prayer attend
## Length:52147 Min. :1.000 Min. :1.000 Min. :1.000
## Class :character 1st Qu.:3.000 1st Qu.:1.000 1st Qu.:1.000
## Mode :character Median :4.000 Median :3.000 Median :3.000
## Mean :3.905 Mean :3.679 Mean :3.083
## 3rd Qu.:5.000 3rd Qu.:6.000 3rd Qu.:4.000
## Max. :6.000 Max. :7.000 Max. :7.000
## homosex abort divorce euthan
## Min. : 1.000 Min. : 1.000 Min. : 1.000 Min. : 1.000
## 1st Qu.: 1.000 1st Qu.: 3.000 1st Qu.: 1.000 1st Qu.: 3.000
## Median : 6.000 Median : 6.000 Median : 4.000 Median : 6.000
## Mean : 5.853 Mean : 5.621 Mean : 4.616 Mean : 5.683
## 3rd Qu.:10.000 3rd Qu.: 9.000 3rd Qu.: 6.000 3rd Qu.:10.000
## Max. :10.000 Max. :10.000 Max. :10.000 Max. :10.000
## sex
## Min. :1.000
## 1st Qu.:1.000
## Median :2.000
## Mean :1.557
## 3rd Qu.:2.000
## Max. :2.000
The variables were then normalized to ensure comparability across different scales.
# Normalize
preproc1 <- preProcess(df_ordered, method=c("center", "scale"))
df_ordered.s <- predict(preproc1, df_ordered)
summary(df_ordered.s)## c_abrv age_r prayer attend
## Length:52147 Min. :1.000 Min. :-1.0986 Min. :-1.10606
## Class :character 1st Qu.:3.000 1st Qu.:-1.0986 1st Qu.:-1.10606
## Mode :character Median :4.000 Median :-0.2784 Median :-0.04421
## Mean :3.905 Mean : 0.0000 Mean : 0.00000
## 3rd Qu.:5.000 3rd Qu.: 0.9518 3rd Qu.: 0.48672
## Max. :6.000 Max. : 1.3619 Max. : 2.07951
## homosex abort divorce euthan
## Min. :-1.28141 Min. :-1.4163 Min. :-1.1701 Min. :-1.4034
## 1st Qu.:-1.28141 1st Qu.:-0.8034 1st Qu.:-1.1701 1st Qu.:-0.8040
## Median : 0.03871 Median : 0.1160 Median :-0.1993 Median : 0.0951
## Mean : 0.00000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 1.09481 3rd Qu.: 1.0354 3rd Qu.: 0.4478 3rd Qu.: 1.2939
## Max. : 1.09481 Max. : 1.3419 Max. : 1.7422 Max. : 1.2939
## sex
## Min. :1.000
## 1st Qu.:1.000
## Median :2.000
## Mean :1.557
## 3rd Qu.:2.000
## Max. :2.000
A correlation matrix was computed to examine the relationships between variables and to identify potential underlying factors. The results confirmed a strong correlation among variables within the norm dimension, as well as among variables within the practice dimension, suggesting that each group of variables may form a distinct factor.
df_numeric <- df_ordered.s %>% select(-c_abrv,-age_r,-sex)
# Correlation matrix
corr_all = cor(df_numeric, method='pearson')
corrplot(corr_all)A Principal Component Analysis (PCA) with Varimax rotation was applied to the six variables. Two clear components emerged. The first component (RC1) groups moral attitudes toward homosexuality, abortion, divorce, and euthanasia, with loadings between 0.73 and 0.86, reflecting the norm dimension of religiosity. The second component (RC2) captures religious practice, with strong loadings for prayer (0.84) and attendance at religious services (0.89). Together, the two components explain 74% of the total variance in the data.
df_ordered.pca <- principal(df_ordered.s %>% select(-c_abrv,-age_r,-sex), nfactors=2, rotate="varimax")
df_ordered.pca## Principal Components Analysis
## Call: principal(r = df_ordered.s %>% select(-c_abrv, -age_r, -sex),
## nfactors = 2, rotate = "varimax")
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC1 RC2 h2 u2 com
## prayer 0.27 0.84 0.79 0.21 1.2
## attend 0.17 0.89 0.82 0.18 1.1
## homosex 0.81 0.16 0.69 0.31 1.1
## abort 0.86 0.21 0.78 0.22 1.1
## divorce 0.86 0.15 0.76 0.24 1.1
## euthan 0.73 0.25 0.59 0.41 1.2
##
## RC1 RC2
## SS loadings 2.76 1.66
## Proportion Var 0.46 0.28
## Cumulative Var 0.46 0.74
## Proportion Explained 0.63 0.37
## Cumulative Proportion 0.63 1.00
##
## Mean item complexity = 1.1
## Test of the hypothesis that 2 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.06
## with the empirical chi square 5267.01 with prob < 0
##
## Fit based upon off diagonal values = 0.99
The item complexity scores for all six variables range from 1.06 to 1.22, indicating that each variable loads almost exclusively onto one component. This confirms a clean and well-defined factor structure, where moral attitude variables (RC1) and religious practice variables (RC2) are clearly separated.
## prayer attend homosex abort divorce euthan
## 1.202864 1.072486 1.080123 1.117628 1.063256 1.227579
The factor diagram visually confirms the two-component structure identified by the PCA. RC1 groups the four moral attitude variables (homosexuality, abortion, divorce, euthanasia), while RC2 captures the two religious practice variables (prayer and attendance at religious services).
The uniqueness plot displays the proportion of variance in each variable that is not captured by the two-component model. All six variables show low uniqueness values, ranging from 0.18 (attend) to 0.41 (euthan), indicating that the model accounts for the majority of shared variance. The lowest uniqueness is observed for attend and prayer, confirming that the practice dimension is particularly well captured by RC2.
## prayer attend homosex abort divorce euthan
## 0.2136726 0.1822162 0.3130875 0.2225494 0.2392732 0.4114417
uniqueness_df <- data.frame(
x = seq_along(df_ordered.pca$uniqueness),
y = df_ordered.pca$uniqueness,
labels = names(df_ordered.pca$uniqueness)
)
# Plot
ggplot(uniqueness_df, aes(x = x, y = y)) +
geom_point(pch = ".", size = 4, color = "steelblue") +
geom_text_repel(aes(label = labels), cex = 3, # cex=0.8 * 4 ≈ 3.2
color = "black", max.overlaps = Inf,
box.padding = 0.2, point.padding = 0.3) +
xlim(-20, 110) +
labs(
title = "Uniqueness of factors",
x = "", y = "uniqueness"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))The PCA scores were aggregated at the country level by computing the mean RC1 and RC2 score for each country. The resulting scatter plot positions each country according to its average level of moral conservatism (RC1) and religious practice (RC2).
The plot reveals a visible positive relationship between the two dimensions — countries scoring higher on religious practice tend to also display stronger conservative moral attitudes. This pattern is consistent with H1 and suggests that religiosity and conservatism are not only individually structured, but also co-occur at the country level. A Pearson correlation was computed to formally test the strength of this relationship.
However, several outliers are visible in the plot. The Czech Republic and Estonia score very low on the practice dimension (RC2), indicating highly secular societies, yet display relatively high levels of moral conservatism (RC1). On the other end, Poland and Romania stand out as exceptionally high on religious practice compared to countries with similar levels of moral conservatism.
# Visualization
scores_df <- as.data.frame(df_ordered.pca$scores) # RC1, RC2
# Add c_abrv
scores_df$c_abrv <- df_ordered.s$c_abrv
# Country aggregation
country_scores <- scores_df %>%
group_by(c_abrv) %>%
summarise(across(everything(), mean, na.rm = TRUE)) %>%
ungroup()
# Correlation
cor_test <- cor.test(country_scores$RC1, country_scores$RC2)
cat(sprintf("Correlation between RC1 and RC2: %.3f (p = %.4f)",
cor_test$estimate, cor_test$p.value))## Correlation between RC1 and RC2: 0.540 (p = 0.0007)
# Visualization
ggplot(country_scores, aes(x = RC1, y = RC2, label = c_abrv)) +
geom_point(size = 3, color = "steelblue") +
geom_text_repel(size = 3) +
labs(
title = "PCA across countries",
x = "RC1 (norm dimension)", y = "RC2 (practice dimension)"
) +
theme_minimal()To test H2, the PCA scores were aggregated by country and generation The plots show that each successive generation tends to be both less religious and less conservative than the older one, which supports H2. There are, however, some exceptions — in Armenia and Georgia, younger generations are actually more religious than the elderly, suggesting a reverse generational trend in these countries.
#####
# Scores (RC1, RC2)
scores_df <- as.data.frame(df_ordered.pca$scores)
# Data: country and generation (age_r) level
scores_df$c_abrv <- df_ordered.s$c_abrv
scores_df$age_r <- df_ordered.s$age_r
# Agregation: country and generation (age_r) level
country_age_scores <- scores_df %>%
group_by(c_abrv, age_r) %>%
summarise(across(everything(), mean, na.rm = TRUE)) %>%
ungroup() %>%
mutate(age_r = factor(age_r,
levels = c(1, 2, 3, 4, 5, 6),
labels = c("15–24", "25–34", "35–44",
"45–54", "55–64", "65+")))
# Visualization
ggplot(country_age_scores, aes(x = RC1, y = RC2, label = c_abrv)) +
geom_point(size = 2, color = "steelblue", alpha = 0.7) +
geom_text_repel(size = 2.5, max.overlaps = 15) +
facet_wrap(~age_r, ncol = 3) +
labs(
title = "PCA across countries and generations",
x = "RC1 (norm dimension)",
y = "RC2 (practice dimension)"
) +
theme_minimal() +
theme(strip.background = element_rect(fill = "lightgrey"))#
country_age_subset <- country_age_scores %>%
filter(age_r %in% c("15–24", "65+")) %>%
mutate(age_label = ifelse(age_r == "15–24",
"15–24",
"65+"))
ggplot(country_age_subset, aes(x = RC1, y = RC2, label = c_abrv)) +
geom_point(size = 3, color = "steelblue", alpha = 0.8) +
geom_text_repel(size = 3, max.overlaps = 20) +
facet_wrap(~age_label, ncol = 1) +
labs(
title = "PCA across countries and generations (oldest and youngest)",
x = "RC1 (norm dimension)",
y = "RC2 (practice dimension)"
) +
theme_minimal() +
theme(
strip.text = element_text(size = 12, face = "bold"),
strip.background = element_rect(fill = "lightgrey")
)To test H3, the PCA scores were aggregated by country and gender. The plots show that men tend to score higher on the norm dimension (RC1), indicating stronger moral conservatism, while women score higher on the practice dimension (RC2), suggesting greater religious practice. This partially supports H3 — men are indeed more conservative in their moral attitudes, but women turn out to be more religious in terms of behavioral practice.
# Scores (RC1, RC2)
scores_df <- as.data.frame(df_ordered.pca$scores)
# Data: country and sex (sex) level
scores_df$c_abrv <- df_ordered.s$c_abrv
scores_df$sex <- df_ordered.s$sex
# Agregation: country and generation (sex) level
country_age_scores <- scores_df %>%
group_by(c_abrv, sex) %>%
summarise(across(everything(), mean, na.rm = TRUE)) %>%
ungroup() %>%
mutate(sex = factor(sex,
levels = c(1, 2),
labels = c("Male", "Female")))
# Visualization
ggplot(country_age_scores, aes(x = RC1, y = RC2, label = c_abrv)) +
geom_point(size = 2, color = "steelblue", alpha = 0.7) +
geom_text_repel(size = 2.5, max.overlaps = 15) +
facet_wrap(~sex, ncol = 1) +
labs(
title = "PCA across countries and sex",
x = "RC1 (norm dimension)",
y = "RC2 (practice dimension)"
) +
theme_minimal() +
theme(strip.background = element_rect(fill = "lightgrey"))The analysis confirmed all three hypotheses. Countries with stronger religious practice tend to be more morally conservative (H1), younger generations are less religious and less conservative than older ones (H2), and men are more conservative in their moral attitudes while women are more religious in terms of actual practice (H3).
The second part of the project focuses on identifying factors associated with opposition to abortion (pro-life attitudes). The same dataset from the European Values Study (EVS) 2017 was used. As in the first part, the religiosity variables were selected following the framework proposed by Coutinho. This time, however, four dimensions of religiosity were included: Belief, Practice, Norm, and Community.
The practice dimension is measured by:
v54, how often attend religious services (Q15).
v64, how often do you pray outside religious services (Q22).
The norm dimension is measured by:
v153, do you justify: homosexuality (Q44E).
v154, do you justify: abortion (Q44F).
v155, do you justify: divorce (Q44G).
v156 do you justify: euthanasia (Q44H).
The belief dimension is measured by:
v57, do you believe in: God (Q18A).
v58, do you believe in: life aVer death (Q18B).
v59, do you believe in: hell (Q18C).
v60, do you believe in: heaven (Q18D).
v62, which statement closest to your beliefs (Q20).
v63, how important is God in your life (Q21).
The community dimension is measured by:
v6, importance of religion in life.
v9, belonging to religious organization (Q4a) - I added this measure
(it wasn’t in paper).
v51, do you belong to religious denomination (Q13).
v56, are you a religious person (Q17).
v115, how much confidence in: church (Q38A).
In addition to the core religiosity and conservatism variables, three
demographic variables were included in the analysis:
v225, sex respondent (Q63).
age_r, age.
v261_r, household total net income (Q98) (income level).
The second part of the project uses the same EVS 2017 dataset. Missing values were again removed prior to analysis. The variables were then transformed into discrete or categorical form to enable association rule mining. Demographic variables such as sex, age, and income were recoded as factors. Religiosity variables were binarized — for example, attendance at religious services and daily prayer were coded as “Mentioned” (M) or “Not Mentioned” (NM) based on threshold values, while importance of religion and importance of God were coded as “Very Important” (VI) or “Not Mentioned” (NM). The target variable, attitude toward abortion (v154), was coded as “M” if the respondent indicated that abortion is never justified, and “NM” otherwise.
df_subset <- evs %>%
select(
v225, #sex respondent (Q63)
age_r, # age
v261_r, #household total net income (Q98) (income level)
# Community
# Tutaj nie wiem 51, a nie 9
v6, #importance of religion in life
v9, #belonging to religious organization (Q4a)
v51, #do you belong to relgious denomination (Q13)
v56, #are you a religious person (Q17)
v115, #how much confidence in: church (Q38A)
# Practice
v54, #how often attend religious services (Q15)
v64, #how oVen do you pray outside religious services (Q22)
# Belief
v57, #do you believe in: God (Q18A)
v58, #do you believe in: life aVer death (Q18B)
v59, #do you believe in: hell (Q18C)
v60, #do you believe in: heaven (Q18D)
v62, #which statement closest to your beliefs (Q20)
v63, #how important is God in your life (Q21)
# Norm
v153, #do you justify: homosexuality (Q44E)
v154, #do you justify: abortion (Q44F)
v155, #do you justify: divorce (Q44G)
v156 #do you justify: euthanasia (Q44H)
)df_discrete <- df_subset %>%
mutate(across(everything(), ~ ifelse(. < 0, NA, .))) %>%
drop_na()
# Discretize
df_ar <- df_discrete %>%
mutate(
# Demografia
sex = factor(v225, levels = c(1, 2), labels = c("Male", "Female")),
age_cat = factor(age_r, labels = c("15-24", "25-34", "35-44", "45-54", "55-64", "65+")),
income = factor(v261_r, levels = c(1, 2, 3), labels = c("Low", "Middle", "High")),
# Community & Belief (Etykiety VI, M, NM)
v6_ar = ifelse(v6 == 1, "VI", "NM"),
v9_ar = ifelse(v9 == 1, "M", "NM"),
v51_ar = ifelse(v51 == 1, "M", "NM"),
v56_ar = ifelse(v56 == 1, "M", "NM"),
v115_ar = ifelse(v115 <= 2, "M", "NM"),
# Practice (Etykiety M, NM)
v54_ar = ifelse(v54 <= 2, "M", "NM"),
v64_ar = ifelse(v64 == 1, "M", "NM"),
# Beliefs
v57_ar = ifelse(v57 == 1, "M", "NM"),
v58_ar = ifelse(v58 == 1, "M", "NM"),
v59_ar = ifelse(v59 == 1, "M", "NM"),
v60_ar = ifelse(v60 == 1, "M", "NM"),
v63_ar = ifelse(v63 >= 8, "VI", "NM"),
# Norms
v154_ar = ifelse(v154 == 1, "M", "NM"),
v153_ar = ifelse(v153 == 1, "M", "NM"),
v155_ar = ifelse(v155 == 1, "M", "NM"),
v156_ar = ifelse(v156 == 1, "M", "NM")
) %>%
select(sex, age_cat, income, ends_with("_ar")) %>%
rename(
# Community & Belief
rel_importance = v6_ar,
rel_belonging = v9_ar,
rel_org_member = v51_ar,
rel_person = v56_ar,
church_trust = v115_ar,
# Practice
pr_attend = v54_ar,
pr_prayer = v64_ar,
# Beliefs
bf_god = v57_ar,
bf_afterlife = v58_ar,
bf_hell = v59_ar,
bf_heaven = v60_ar,
bf_god_imp = v63_ar,
# Norms
n_abort = v154_ar,
n_homosex = v153_ar,
n_divorce = v155_ar,
n_euthan = v156_ar
)The processed dataset contains 35,277 respondents, with a slight overrepresentation of women (19,259) and older age groups (8,112 aged 65+). Religious practice is relatively low across the sample — only 4,961 respondents attend services regularly and 8,456 pray daily — while belief in God is more widespread (24,541). Regarding moral attitudes, opposition to abortion is a minority position, held by approximately 22% of respondents (7,853).
## sex age_cat income rel_importance rel_belonging
## Male :16018 15-24:3102 Low :11283 NM:27523 M : 8033
## Female:19259 25-34:5496 Middle:12114 VI: 7754 NM:27244
## 35-44:5904 High :11880
## 45-54:6345
## 55-64:6318
## 65+ :8112
## rel_org_member rel_person church_trust pr_attend pr_prayer bf_god
## M :24888 M :22266 M :18131 M : 4961 M : 8456 M :24541
## NM:10389 NM:13011 NM:17146 NM:30316 NM:26821 NM:10736
##
##
##
##
## bf_afterlife bf_hell bf_heaven bf_god_imp n_abort n_homosex n_divorce
## M :17769 M :12230 M :15909 NM:20848 M : 7853 M :12152 M : 4358
## NM:17508 NM:23047 NM:19368 VI:14429 NM:27424 NM:23125 NM:30919
##
##
##
##
## n_euthan
## M : 8705
## NM:26572
##
##
##
##
Association rule mining was applied to identify combinations of variables most strongly associated with pro-life attitudes. The three strongest rules share a common pattern: respondents who reject homosexuality, divorce, and euthanasia, and who believe in heaven, oppose abortion with a confidence of over 93%. The lift values around 4.2 mean that this combination of attitudes makes a pro-life stance more than four times more likely than in the general sample. Notably, adding belief in God or self-identification as a religious person does not substantially increase the confidence, suggesting that moral conservatism (rather than religious belief) is the key predictor of pro-life attitudes.
rules_abortion <- apriori(trans,
parameter = list(
supp = 0.05,
conf = 0.60,
minlen = 2
),
appearance = list(
rhs = "n_abort=M",
default = "lhs"
))## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.6 0.1 1 none FALSE TRUE 5 0.05 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: 1763
##
## set item appearances ...[1 item(s)] done [0.00s].
## set transactions ...[43 item(s), 35277 transaction(s)] done [0.02s].
## sorting and recoding items ... [43 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 [3.47s].
## writing ... [2485 rule(s)] done [0.01s].
## creating S4 object ... done [0.01s].
# 2. Sorted by lift
rules_sorted <- sort(rules_abortion, by = "lift")
# Top 10 rules
inspect(rules_sorted[1:10])## lhs rhs support confidence coverage lift count
## [1] {bf_god=M,
## bf_heaven=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05456813 0.9362840 0.05828160 4.205946 1925
## [2] {bf_heaven=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05468152 0.9359534 0.05842334 4.204461 1929
## [3] {rel_person=M,
## bf_heaven=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05224367 0.9355330 0.05584375 4.202572 1843
## [4] {rel_person=M,
## bf_god=M,
## bf_heaven=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05224367 0.9355330 0.05584375 4.202572 1843
## [5] {rel_org_member=M,
## bf_heaven=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05133656 0.9354339 0.05487995 4.202127 1811
## [6] {rel_org_member=M,
## bf_god=M,
## bf_heaven=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05127987 0.9353671 0.05482326 4.201827 1809
## [7] {church_trust=M,
## bf_god_imp=VI,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05139326 0.9316547 0.05516342 4.185150 1813
## [8] {church_trust=M,
## bf_god=M,
## bf_god_imp=VI,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05130822 0.9315492 0.05507838 4.184676 1810
## [9] {church_trust=M,
## bf_god=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05845168 0.9300857 0.06284548 4.178102 2062
## [10] {rel_person=M,
## church_trust=M,
## n_homosex=M,
## n_divorce=M,
## n_euthan=M} => {n_abort=M} 0.05601383 0.9298824 0.06023755 4.177188 1976
The network plot shows association rules as a graph, where arrows connect variables to rules and rules to the target outcome (n_abort=M). Darker and larger rule nodes indicate higher lift and support respectively. The central position of n_divorce=M confirms that rejection of divorce is the strongest and most consistent predictor of pro-life attitudes across all rules.
## 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
The scatter plot displays all 2,485 extracted rules, with support on the x-axis, confidence on the y-axis, and lift represented by colour intensity. Two distinct clusters are visible.
plot(rules_abortion,
method = "scatterplot",
measure = c("support", "confidence"),
shading = "lift")These results confirm that moral conservatism (and especially rejection of divorce) is the strongest predictor of pro-life attitudes.
The parallel coordinates plot shows the top 10 rules by lift, with each line representing one rule flowing from LHS variables to the target n_abort=M on the right. The darkest, highest-lift lines consistently pass through n_euthan=M, n_divorce=M, and n_homosex=M, confirming these three variables form the core of every strong rule.
The analysis consistently shows that moral conservatism is the strongest predictor of pro-life attitudes, with rejection of divorce, homosexuality, and euthanasia forming the core of the highest-lift rules. In particular, opposition to divorce proves to be the most decisive single predictor of pro-life attitudes, appearing in nearly every strong rule identified in the analysis.
Coutinho, J. P. (2016). Religiosity in Europe: an index, factors, and clusters of religiosity. Sociologia, Problemas e Práticas, (81), 163-188.
Coutinho, J. P. (2023). Portuguese youth religiosity in comparative perspective. Religions, 14(2), 147.