Part 2 aimed at investigating the links between the inter-individual scores of illusion sensitivity (obtained in study 2), contextual variables (pertaining to the experiment setting), such as screen size, demographic features (such as sex and age), and stable dispositional variables such as “general” personality traits. Indeed, despite the abundant literature on visual illusions, relatively few studies have investigated its ties with participants’ characteristics. Research examining the influence of demographic variables such as gender and age have generally found inconsistent results (Aline F. Cretenoud et al. 2020; Grzeczkowski et al. 2017; Lo and Dinov 2011; Papageorgiou et al. 2020). Regarding links with personality, most works focused on traits associated with psychopathology, such as impulsivity or sensation-seeking (Hlavatá et al. 2018; Zhang et al. 2017; Lányi et al. 2022; Pessoa et al. 2008).
library(tidyverse)
library(ggdist)
library(ggside)
library(easystats)
library(patchwork)
library(brms)
source("../study2/functions.R")
# Variables
DVs <- c(
"Delboeuf" = "#2196F3",
"Ebbinghaus" = "#3F51B5",
"RodFrame" = "#F44336",
"VerticalHorizontal" = "#FF5722",
"Zollner" = "#FF9800",
"White" = "#9E9E9E",
"MullerLyer" = "#4CAF50",
"Ponzo" = "#009688",
"Poggendorff" = "#795548",
"Contrast" = "#607D8B",
"i" = "#9C27B0"
)
# Load data
dfsub <- read.csv("../data/study3.csv") |>
mutate(
Screen_Refresh = as.numeric(Screen_Refresh),
Ethnicity = ifelse(Ethnicity == "Latino", "Hispanic", Ethnicity),
Education = fct_relevel(Education, "High School", "Bachelor", "Master", "Doctorate", "Other", "Prefer not to Say")
) |>
datawizard::standardise(select = names(DVs)) |>
datawizard::change_scale(select = starts_with("IPIP"), to = c(0, 1), range = c(0, 100)) |>
datawizard::change_scale(select = starts_with("PID"), to = c(0, 1), range = c(0, 100))
# Remove outliers (p < 0.0001)
dfsub[names(DVs)][abs(dfsub[names(DVs)]) > qnorm(0.9999)] <- NA
dflong <- dfsub |>
pivot_longer(all_of(names(DVs)), names_to = "Index", values_to = "Score")
8 participants did not do the personality scales.
p_age <- estimate_density(dfsub$Age) |>
ggplot(aes(x = x, y = y)) +
geom_area(fill = "#607D8B") +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
labs(title = expression("Age"[" (in years)"]), color = NULL, y = "Distribution") +
theme_modern(axis.title.space = 5) +
theme(
plot.title = element_text(size = rel(1), face = "bold", hjust = 0.5),
plot.subtitle = element_text(face = "italic", hjust = 0.5),
axis.title.y = element_text(size = rel(0.8)),
axis.text.y = element_blank(),
axis.text.x = element_text(size = rel(0.8)),
axis.title.x = element_blank()
)
p_nat <- dfsub |>
group_by(Nationality) |>
summarize(n = n()) |>
mutate(Nationality = fct_reorder(Nationality, desc(n))) |>
ggplot(aes(x = Nationality, y = n, fill = Nationality)) +
geom_bar(stat = "identity") +
labs(y = "Number of participants", title = "Nationality") +
scale_fill_material_d(guide = "none") +
scale_x_discrete(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
theme_modern(axis.title.space = 5) +
theme(
plot.title = element_text(size = rel(1), face = "bold", hjust = 0.5),
plot.subtitle = element_text(face = "italic", hjust = 0.5),
axis.title.x = element_blank(),
axis.title.y = element_text(size = rel(0.8)),
axis.text.y = element_text(size = rel(0.8)),
axis.text.x = element_text(size = rel(0.6), angle = 50, hjust = 1)
)
ggsave("figures/figure_dem1.png",
patchwork::wrap_elements(p_age / p_nat),
width=0.5*(fig.height),
height=1*(fig.height), dpi=1000, bg="white")
p_sex <- plot_waffle(dfsub, what = "Sex", rows = 10, size = 5) +
scale_color_manual(values = c("Male" = "#2196F3", "Female" = "#E91E63"))
p_edu <- plot_waffle(dfsub, "Education", rows = 10, size = 5) +
scale_color_viridis_d()
p_race <- plot_waffle(dfsub, "Ethnicity", rows = 10, size = 5) +
scale_color_manual(values = c("Hispanic" = "#FF5722", "Caucasian" = "#2196F3", "African" = "#4CAF50", "Other" = "#795548"))
ggsave("figures/figure_dem2.png",
patchwork::wrap_elements(p_sex / p_edu / p_race), width=1*(fig.height), height=1*(fig.height), dpi=1000, bg="white")
p_ipip <- dfsub |>
select(starts_with("IPIP") & !ends_with("_SD")) |>
estimate_density() |>
mutate(
Parameter = str_remove_all(Parameter, "IPIP6_"),
Parameter = str_replace(Parameter, "HonestyHumility", "Honesty-Humility")
) |>
ggplot(aes(x = x, y = y, color = Parameter)) +
geom_line(size = 1) +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
scale_color_manual(values = c("Agreeableness" = "#FFC107", "Honesty-Humility" = "#00BCD4", "Extraversion" = "#9C27B0", "Conscientiousness" = "#3F51B5", "Openness" = "#4CAF50", "Neuroticism" = "#E91E63")) +
labs(x = "Score", title = "Normal Personality", y = "Distribution", color = NULL) +
theme_modern(axis.title.space = 5) +
theme(
plot.title = element_text(size = rel(1), face = "bold", hjust = 0.5),
axis.text.y = element_blank(),
axis.title.y = element_text(size = rel(0.8)),
axis.text.x = element_text(size = rel(0.8)),
axis.title.x = element_blank(),
legend.text = element_text(size = rel(0.8))
)
p_pid <- dfsub |>
select(starts_with("PID") & !ends_with("_SD")) |>
estimate_density() |>
mutate(
Parameter = str_remove_all(Parameter, "PID5_"),
Parameter = str_replace(Parameter, "NegativeAffect", "Negative Affect")
) |>
ggplot(aes(x = x, y = y, color = Parameter)) +
geom_line(size = 1) +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
scale_color_manual(values = c("Antagonism" = "#FF9800", "Detachment" = "#03A9F4", "Disinhibition" = "#FF5722", "Negative Affect" = "#F44336", "Psychoticism" = "#673AB7")) +
labs(x = "Score", title = "Pathological Personality", y = "Distribution", color = NULL) +
theme_modern(axis.title.space = 5) +
theme(
plot.title = element_text(size = rel(1), face = "bold", hjust = 0.5),
axis.text.y = element_blank(),
axis.title.y = element_text(size = rel(0.8)),
axis.text.x = element_text(size = rel(0.8)),
axis.title.x = element_blank(),
legend.text = element_text(size = rel(0.8))
# legend.position = "top",
)
ggsave("figures/figure_dem3.png",
patchwork::wrap_elements(p_ipip / p_pid), width=2/3*(fig.height), height=1*(fig.height), dpi=1000, bg="white")
p_dem <- (
patchwork::wrap_elements(grid::rasterGrob(png::readPNG("figures/figure_dem1.png"), interpolate = TRUE)) |
patchwork::wrap_elements(grid::rasterGrob(png::readPNG("figures/figure_dem2.png"), interpolate = TRUE)) |
patchwork::wrap_elements(grid::rasterGrob(png::readPNG("figures/figure_dem3.png"), interpolate = TRUE))
) +
patchwork::plot_layout(widths = c(1 / 2, 1, 2 / 3))
p_dem +
patchwork::plot_annotation(
title = "Participants (n = 250)",
theme = theme(plot.title = element_text(size = rel(1.2), face = "bold", hjust = 0.5, vjust = -10))
)
# Run this manually to avoid saving margins
ggsave("figures/figure_dem.png", p_dem +
patchwork::plot_annotation(
title = "Participants (n = 250)",
theme = theme(plot.title = element_text(size = 50, face = "bold", hjust = 0.5, vjust = 0))
), height = 7200, width = 15166, units = "px", limitsize = FALSE)
make_correlation <- function(x, y) {
cor <- correlation::correlation(x,
y,
bayesian = TRUE,
bayesian_prior = "medium.narrow",
sort = TRUE
) |>
datawizard::data_remove(c("ROPE_Percentage"))
cor$`BF (Spearman)` <- format_bf(
correlation::correlation(
x, y,
bayesian = TRUE,
ranktransform = TRUE,
bayesian_prior = "medium.narrow"
)$BF,
name = NULL, stars = TRUE
)
cor |>
arrange(desc(BF))
}
make_correlation(dfsub[names(DVs)], dfsub[c("Screen_Size", "Screen_Refresh")])
## # Correlation Matrix (pearson-method)
##
## Parameter1 | Parameter2 | rho | 95% CI | pd | Prior | BF | BF (Spearman)
## -------------------------------------------------------------------------------------------------------------------------
## Contrast | Screen_Size | -0.15 | [-0.27, -0.03] | 99.60%** | Beta (5.20 +- 5.20) | 4.11* | 4.31*
## White | Screen_Size | -0.13 | [-0.26, -0.02] | 98.75%* | Beta (5.20 +- 5.20) | 2.05 | 28.19**
## Ponzo | Screen_Size | 0.08 | [-0.04, 0.20] | 88.78% | Beta (5.20 +- 5.20) | 0.419 | 0.398
## Zollner | Screen_Size | 0.08 | [-0.05, 0.19] | 88.98% | Beta (5.20 +- 5.20) | 0.418 | 0.640
## Ebbinghaus | Screen_Refresh | -0.07 | [-0.19, 0.05] | 86.65% | Beta (5.20 +- 5.20) | 0.360 | 0.790
## Delboeuf | Screen_Size | -0.06 | [-0.18, 0.06] | 83.70% | Beta (5.20 +- 5.20) | 0.316 | 0.272
## White | Screen_Refresh | 0.05 | [-0.08, 0.17] | 76.05% | Beta (5.20 +- 5.20) | 0.255 | 0.397
## Delboeuf | Screen_Refresh | -0.05 | [-0.17, 0.07] | 77.65% | Beta (5.20 +- 5.20) | 0.254 | 0.197
## Ponzo | Screen_Refresh | 0.04 | [-0.09, 0.16] | 73.20% | Beta (5.20 +- 5.20) | 0.238 | 0.203
## Poggendorff | Screen_Refresh | 0.04 | [-0.08, 0.16] | 71.80% | Beta (5.20 +- 5.20) | 0.228 | 0.548
## Contrast | Screen_Refresh | 0.03 | [-0.09, 0.15] | 70.55% | Beta (5.20 +- 5.20) | 0.225 | 0.333
## Ebbinghaus | Screen_Size | 0.03 | [-0.09, 0.15] | 66.85% | Beta (5.20 +- 5.20) | 0.217 | 0.221
## RodFrame | Screen_Size | -0.03 | [-0.15, 0.10] | 65.33% | Beta (5.20 +- 5.20) | 0.211 | 0.222
## VerticalHorizontal | Screen_Refresh | 0.02 | [-0.11, 0.14] | 62.42% | Beta (5.20 +- 5.20) | 0.207 | 0.221
## MullerLyer | Screen_Size | 0.02 | [-0.10, 0.14] | 62.95% | Beta (5.20 +- 5.20) | 0.206 | 0.200
## Zollner | Screen_Refresh | -0.02 | [-0.14, 0.10] | 60.85% | Beta (5.20 +- 5.20) | 0.205 | 0.214
## RodFrame | Screen_Refresh | -0.02 | [-0.13, 0.11] | 61.72% | Beta (5.20 +- 5.20) | 0.202 | 0.259
## VerticalHorizontal | Screen_Size | -3.12e-03 | [-0.13, 0.12] | 51.85% | Beta (5.20 +- 5.20) | 0.197 | 0.202
## i | Screen_Size | 2.83e-03 | [-0.12, 0.13] | 52.25% | Beta (5.20 +- 5.20) | 0.197 | 0.197
## i | Screen_Refresh | -5.60e-04 | [-0.11, 0.13] | 50.42% | Beta (5.20 +- 5.20) | 0.196 | 0.201
## MullerLyer | Screen_Refresh | -3.86e-03 | [-0.12, 0.11] | 52.50% | Beta (5.20 +- 5.20) | 0.196 | 0.234
## Poggendorff | Screen_Size | 1.59e-03 | [-0.12, 0.12] | 51.20% | Beta (5.20 +- 5.20) | 0.196 | 0.196
##
## Observations: 247-250
dflong |>
ggplot(aes(x = Screen_Size, y = Score)) +
geom_point2(aes(color = Index), alpha = 0.1, size = 2) +
geom_smooth(aes(color = Index, group = Index, linetype = Index), se = FALSE, method = "lm") +
scale_x_continuous(expand = c(0, 0)) +
scale_size_manual(values = c("NS" = 0.5, "*" = 1)) +
scale_linetype_manual(values = c("White" = "solid", "Contrast" = "solid", setNames(rep("dotted", 9), names(DVs)[!names(DVs) %in% c("White", "Contrast")])), guide = "none") +
scale_color_manual(values = DVs) +
theme_modern() +
labs(y = "Illusion Sensitivity", x = "Screen Size", linetype = "Significance", size = "Significance") +
ggside::geom_xsidedensity(data = dfsub, fill = "grey", color = "white") +
ggside::geom_ysidedensity(aes(y = Score, color = Index)) +
ggside::theme_ggside_void() +
ggside::scale_ysidex_continuous(expand = c(0, 0)) +
ggside::scale_xsidey_continuous(expand = c(0, 0))
sig <- list()
params <- data.frame()
for (i in names(DVs)) {
model <- lm(paste0(i, " ~ Sex"), data = dfsub)
param <- parameters::parameters(model)
param$Index <- i
param$ymiddle <- param$Coefficient[1] + diff(param$Coefficient) / 2
param$BF <- parameters::parameters(BayesFactor::ttestBF(formula = as.formula(paste0(i, " ~ Sex")), data = dfsub[!is.na(dfsub[[i]]), ]))$BF
params <- rbind(params, as.data.frame(param[2, ]))
}
data <- dfsub |>
pivot_longer(all_of(names(DVs)), names_to = "Index", values_to = "Score") |>
mutate(
Index = fct_relevel(Index, names(DVs)),
Index = fct_relabel(Index, ~ prettify_itemName(.x))
)
# parameters::parameters(BayesFactor::ttestBF(formula=Zollner ~ Sex, data=dfsub[!is.na(dfsub[[i]]), ]))
p_gender <- data |>
ggplot(aes(x = Index, y = Score)) +
stat_slab(data = filter(data, Sex == "Male"), aes(fill = Sex), side = "left", scale = 0.5, position = "dodge") +
stat_slab(data = filter(data, Sex == "Female"), aes(fill = Sex), side = "right", scale = 0.5, position = "dodge") +
stat_pointinterval(aes(group = fct_rev(Sex)), point_interval = "mean_qi", position = "dodge") +
geom_text(data = mutate(params, sig = insight::format_bf(BF, stars_only = TRUE), Index = prettify_itemName(Index)), aes(label = sig, y = ymiddle), size = 6) +
geom_label(
data = mutate(params, label = insight::format_bf(BF, protect_ratio = TRUE), Index = prettify_itemName(Index)),
aes(label = label), y = 2.7, size = 3
) +
scale_fill_manual(values = c("Male" = "#2196F3", "Female" = "#E91E63")) +
scale_x_discrete(labels = function(x) ifelse(x == "i", "Factor i", x)) +
theme_minimal() +
labs(fill = "", x = "Sex", y = "Illusion Sensitivity", title = "Sex") +
theme(
legend.position = "top",
axis.title.x = element_blank(),
plot.title = element_text(size = rel(1), face = "bold", hjust = 0.5)
)
p_gender
# ggsave("figures/figure_sex.png", p_gender, width=15166, height=5000, bg="white", units = "px", limitsize = FALSE, scale = 0.3)
preds <- data.frame()
for (i in names(DVs)) {
model <- brms::brm(paste0(i, " ~ mo(as.numeric(Education))"), data = filter(dfsub, !Education %in% c("Other", "Prefer not to Say")), refresh = 0)
param <- bayestestR::describe_posterior(as.data.frame(model)["bsp_moas.numericEducation"])
pred <- estimate_relation(model)
pred$Index <- i
pred$sig <- param$pd
preds <- rbind(preds, pred)
}
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.5 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.4 seconds.
## Chain 2 finished in 0.4 seconds.
## Chain 4 finished in 0.4 seconds.
## Chain 3 finished in 0.4 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.4 seconds.
## Total execution time: 0.5 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.4 seconds.
## Chain 4 finished in 0.4 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.5 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.4 seconds.
## Chain 2 finished in 0.4 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.4 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.4 seconds.
## Total execution time: 0.5 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 4 finished in 0.3 seconds.
## Chain 1 finished in 0.4 seconds.
## Chain 2 finished in 0.4 seconds.
## Chain 3 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.5 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 1 finished in 0.4 seconds.
## Chain 4 finished in 0.4 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.4 seconds.
## Total execution time: 0.5 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 2 finished in 0.5 seconds.
## Chain 3 finished in 0.4 seconds.
## Chain 4 finished in 0.4 seconds.
## Chain 1 finished in 0.5 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.4 seconds.
## Total execution time: 0.6 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.4 seconds.
## Chain 2 finished in 0.4 seconds.
## Chain 3 finished in 0.4 seconds.
## Chain 4 finished in 0.4 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.4 seconds.
## Total execution time: 0.5 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.4 seconds.
## Chain 4 finished in 0.3 seconds.
## Chain 2 finished in 0.4 seconds.
## Chain 3 finished in 0.4 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.4 seconds.
## Total execution time: 0.5 seconds.
preds |>
mutate(
sig = format_pd(sig, stars_only = TRUE),
sig = ifelse(sig == "", "NS", sig)
) |>
ggplot(aes(x = Education, y = Predicted)) +
geom_line(aes(color = Index, group = Index, linetype = sig, size = sig)) +
scale_size_manual(values = c("NS" = 0.5, "*" = 1)) +
scale_linetype_manual(values = c("NS" = "dotted", "*" = "solid")) +
theme_modern()
preds <- data.frame()
for (i in names(DVs)) {
gam <- brms::brm(paste0(i, " ~ s(Age, k=3)"), data = dfsub, refresh = 0, seed = 1)
model <- brms::brm(paste0(i, " ~ poly(Age, 2)"), data = dfsub, refresh = 0, seed = 1)
param <- parameters::parameters(model)
slopes <- estimate_slopes(gam, trend = "Age")
pred <- get_datagrid(gam, at = "Age", length = 50)
pred$Predicted <- get_predicted(gam, data = pred)
pred$ylabel <- pred$Predicted[50]
pred$Index <- i
pred$Effect <- slopes$Coefficient
pred$pd_gam <- slopes$pd
pred$pd_poly1 <- param$pd[2]
pred$pd_poly2 <- param$pd[3]
preds <- rbind(preds, pred)
}
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.2 seconds.
## Chain 2 finished in 0.2 seconds.
## Chain 3 finished in 0.2 seconds.
## Chain 4 finished in 0.2 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.2 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.2 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.2 seconds.
## Chain 2 finished in 0.2 seconds.
## Chain 3 finished in 0.2 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.2 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.2 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.2 seconds.
## Chain 3 finished in 0.2 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 4 finished in 0.2 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.2 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 2 finished in 0.2 seconds.
## Chain 3 finished in 0.2 seconds.
## Chain 1 finished in 0.3 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.2 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 3 finished in 0.2 seconds.
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.2 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.2 seconds.
## Chain 4 finished in 0.3 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.3 seconds.
## Chain 2 finished in 0.3 seconds.
## Chain 3 finished in 0.3 seconds.
## Chain 4 finished in 0.2 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.3 seconds.
## Total execution time: 0.4 seconds.
##
## Running MCMC with 4 parallel chains...
##
## Chain 1 finished in 0.1 seconds.
## Chain 2 finished in 0.1 seconds.
## Chain 3 finished in 0.1 seconds.
## Chain 4 finished in 0.1 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 0.1 seconds.
## Total execution time: 0.3 seconds.
preds |>
group_by(Index) |>
slice(1) |>
select(-Predicted, -Age) |>
arrange(desc(pd_gam))
## # A tibble: 11 × 6
## # Groups: Index [11]
## ylabel Index Effect pd_gam pd_poly1 pd_poly2
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 0.916 i 0.0307 1 1.00 0.918
## 2 1.19 MullerLyer 0.0421 1 1 0.967
## 3 0.971 VerticalHorizontal 0.0314 1.00 1 0.918
## 4 1.22 Zollner 0.0284 0.998 1 0.526
## 5 0.616 Ebbinghaus 0.0226 0.989 0.993 0.908
## 6 0.633 RodFrame 0.0122 0.885 0.943 0.633
## 7 0.122 Contrast 0.0117 0.870 0.807 0.884
## 8 0.146 Ponzo 0.00558 0.740 0.705 0.769
## 9 -0.306 Poggendorff 0.00601 0.720 0.517 0.957
## 10 0.0676 Delboeuf 0.00148 0.562 0.550 0.561
## 11 -0.154 White -0.000725 0.527 0.581 0.659
p_age <- preds |>
mutate(
pd_gam = format_pd(pd_gam, stars_only = TRUE),
pd_gam = ifelse(pd_gam == "", "NS", pd_gam)
) |>
ggplot(aes(x = Age, y = Predicted)) +
geom_line(aes(color = Index, group = Index, linetype = pd_gam, size = pd_gam)) +
ggrepel::geom_label_repel(
data = preds |>
group_by(Index) |>
slice(1) |>
mutate(label = prettify_itemName(ifelse(Index == "i", "Factor i", Index))),
aes(y = ylabel, label = label, x = 69, color = Index), hjust = 0, direction = "y",
min.segment.length = 3
) +
scale_size_manual(values = c("NS" = 0.5, "*" = 1, "**" = 1, "***" = 1)) +
scale_linetype_manual(values = c("NS" = "dotted", "*" = "solid", "**" = "solid", "***" = "solid")) +
scale_x_continuous(expand = c(0, 0)) +
scale_color_manual(values = DVs) +
guides(size = "none", linetype = "none", color = "none") +
theme_modern() +
labs(y = "Illusion Sensitivity", title = "Age") +
theme(
legend.position = "top",
axis.title.x = element_blank(),
axis.title.y = element_blank(),
plot.title = element_text(size = rel(1), face = "bold", hjust = 0.5)
)
p_age
ggsave("figures/figure_agesex.png",
(p_gender + p_age) + plot_layout(widths = c(2 / 3, 1 / 3)) +
patchwork::plot_annotation(
title = "Illusion Sensitivity and Demographic Variables",
theme = theme(plot.title = element_text(size = rel(1.5), face = "bold", hjust = 0.5, vjust = 0))
),
width = 15166, height = 5000, bg = "white", units = "px", limitsize = FALSE, dpi = 800, scale = 1
)
cor <- make_correlation(
datawizard::data_select(dfsub, names(DVs)),
select(dfsub, starts_with("IPIP") & !ends_with("_SD"))
)
cor |>
data_filter(BF > 1) |>
arrange(desc(BF))
## # Correlation Matrix (pearson-method)
##
## Parameter1 | Parameter2 | rho | 95% CI | pd | Prior | BF | BF (Spearman)
## -----------------------------------------------------------------------------------------------------------------------------------
## Zollner | IPIP6_HonestyHumility | 0.24 | [ 0.12, 0.34] | 99.98%*** | Beta (5.20 +- 5.20) | 283.12*** | 175.73***
## VerticalHorizontal | IPIP6_Agreeableness | 0.19 | [ 0.07, 0.32] | 100%*** | Beta (5.20 +- 5.20) | 25.06** | 109.13***
## i | IPIP6_Agreeableness | 0.19 | [ 0.07, 0.31] | 99.85%** | Beta (5.20 +- 5.20) | 19.65** | 49.04***
## VerticalHorizontal | IPIP6_HonestyHumility | 0.18 | [ 0.05, 0.29] | 99.75%** | Beta (5.20 +- 5.20) | 9.78* | 8.22*
## Ponzo | IPIP6_Agreeableness | 0.16 | [ 0.04, 0.28] | 99.50%** | Beta (5.20 +- 5.20) | 4.88* | 14.11**
## i | IPIP6_HonestyHumility | 0.16 | [ 0.03, 0.27] | 98.83%* | Beta (5.20 +- 5.20) | 4.00* | 2.24
## Ebbinghaus | IPIP6_HonestyHumility | 0.15 | [ 0.04, 0.28] | 99.30%** | Beta (5.20 +- 5.20) | 3.69* | 1.84
## Ebbinghaus | IPIP6_Openness | 0.14 | [ 0.03, 0.27] | 98.67%* | Beta (5.20 +- 5.20) | 2.37 | 1.72
## MullerLyer | IPIP6_Neuroticism | -0.14 | [-0.25, -0.01] | 98.40%* | Beta (5.20 +- 5.20) | 2.18 | 0.797
## MullerLyer | IPIP6_Openness | 0.14 | [ 0.02, 0.25] | 98.58%* | Beta (5.20 +- 5.20) | 2.17 | 1.61
## Ebbinghaus | IPIP6_Agreeableness | 0.13 | [ 0.01, 0.26] | 98.20%* | Beta (5.20 +- 5.20) | 1.97 | 1.41
## RodFrame | IPIP6_Conscientiousness | -0.13 | [-0.26, -0.02] | 97.92%* | Beta (5.20 +- 5.20) | 1.74 | 1.38
## RodFrame | IPIP6_HonestyHumility | 0.13 | [ 0.00, 0.25] | 97.90%* | Beta (5.20 +- 5.20) | 1.69 | 0.453
## Zollner | IPIP6_Neuroticism | -0.13 | [-0.25, 0.00] | 97.60%* | Beta (5.20 +- 5.20) | 1.67 | 1.17
## i | IPIP6_Openness | 0.13 | [ 0.00, 0.25] | 97.95%* | Beta (5.20 +- 5.20) | 1.61 | 1.00
## White | IPIP6_Agreeableness | 0.12 | [ 0.00, 0.25] | 97.25%* | Beta (5.20 +- 5.20) | 1.38 | 2.09
## MullerLyer | IPIP6_Agreeableness | 0.11 | [-0.01, 0.23] | 96.30% | Beta (5.20 +- 5.20) | 1.05 | 0.744
## Contrast | IPIP6_Extraversion | 0.11 | [-0.01, 0.23] | 96.40% | Beta (5.20 +- 5.20) | 1.01 | 1.25
##
## Observations: 239-242
cor |>
mutate(
label = paste0(format_value(rho, zap_small = TRUE), insight::format_bf(BF, stars_only = TRUE)),
Parameter2 = prettify_parameterName(Parameter2),
Parameter2 = str_remove_all(Parameter2, "IPIP6 - ")
) |>
ggplot(aes(x = Parameter2, y = Parameter1)) +
geom_tile(aes(fill = rho)) +
geom_text(aes(label = label), size = 3) +
scale_alpha_continuous(range = c(1, 0.5)) +
scale_fill_gradient2(low = "#2196F3", mid = "white", high = "#F44336", midpoint = 0, limit = c(-1, 1), space = "Lab", name = "Correlation", guide = "legend") +
labs(y = "Illusion Sensitivity Scores", x = "Normal Personality (IPIP6)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
p_ipip1 <- plot_correlation(dfsub, x = "i", y = "IPIP6_Agreeableness", fill = "#FFC107")
p_ipip2 <- plot_correlation(dfsub, x = "i", y = "IPIP6_HonestyHumility", fill = "#00BCD4")
(p_ipip1 + plot_correlation(dfsub, x = "VerticalHorizontal", y = "IPIP6_Agreeableness", fill = "#FFC107") + plot_correlation(dfsub, x = "Ponzo", y = "IPIP6_Agreeableness", fill = "#FFC107")) /
(p_ipip2 + plot_correlation(dfsub, x = "Zollner", y = "IPIP6_HonestyHumility", fill = "#00BCD4") + plot_correlation(dfsub, x = "VerticalHorizontal", y = "IPIP6_HonestyHumility", fill = "#00BCD4"))
cor <- make_correlation(
datawizard::data_select(dfsub, names(DVs)),
select(dfsub, starts_with("PID") & !ends_with("_SD"))
)
cor |>
data_filter(BF > 1) |>
arrange(desc(BF))
## # Correlation Matrix (pearson-method)
##
## Parameter1 | Parameter2 | rho | 95% CI | pd | Prior | BF | BF (Spearman)
## -------------------------------------------------------------------------------------------------------------------------------
## VerticalHorizontal | PID5_Antagonism | -0.24 | [-0.35, -0.11] | 99.98%*** | Beta (5.20 +- 5.20) | 221.00*** | 160.46***
## VerticalHorizontal | PID5_Psychoticism | -0.21 | [-0.32, -0.09] | 100%*** | Beta (5.20 +- 5.20) | 66.63*** | 60.90***
## Zollner | PID5_NegativeAffect | -0.21 | [-0.33, -0.09] | 100%*** | Beta (5.20 +- 5.20) | 62.04*** | 32.04***
## i | PID5_Antagonism | -0.21 | [-0.32, -0.09] | 100%*** | Beta (5.20 +- 5.20) | 55.45*** | 10.14**
## MullerLyer | PID5_Psychoticism | -0.20 | [-0.33, -0.08] | 99.92%*** | Beta (5.20 +- 5.20) | 35.59*** | 69.93***
## i | PID5_Psychoticism | -0.20 | [-0.33, -0.09] | 99.98%*** | Beta (5.20 +- 5.20) | 35.02*** | 25.48**
## i | PID5_Disinhibition | -0.20 | [-0.31, -0.08] | 99.90%** | Beta (5.20 +- 5.20) | 31.42*** | 8.94*
## VerticalHorizontal | PID5_Disinhibition | -0.20 | [-0.32, -0.08] | 100%*** | Beta (5.20 +- 5.20) | 25.38** | 15.05**
## MullerLyer | PID5_Antagonism | -0.19 | [-0.31, -0.07] | 99.92%*** | Beta (5.20 +- 5.20) | 21.57** | 2.98
## Ponzo | PID5_Antagonism | -0.19 | [-0.31, -0.08] | 99.95%*** | Beta (5.20 +- 5.20) | 17.97** | 5.43*
## VerticalHorizontal | PID5_NegativeAffect | -0.18 | [-0.30, -0.07] | 99.70%** | Beta (5.20 +- 5.20) | 12.65** | 6.69*
## Zollner | PID5_Disinhibition | -0.17 | [-0.29, -0.05] | 99.50%** | Beta (5.20 +- 5.20) | 7.59* | 3.12*
## i | PID5_NegativeAffect | -0.16 | [-0.28, -0.05] | 99.60%** | Beta (5.20 +- 5.20) | 6.39* | 3.18*
## MullerLyer | PID5_Disinhibition | -0.16 | [-0.28, -0.05] | 99.70%** | Beta (5.20 +- 5.20) | 5.89* | 3.86*
## Ponzo | PID5_Psychoticism | -0.16 | [-0.28, -0.04] | 99.20%** | Beta (5.20 +- 5.20) | 3.93* | 2.03
## MullerLyer | PID5_NegativeAffect | -0.15 | [-0.26, -0.02] | 99.17%** | Beta (5.20 +- 5.20) | 3.17* | 2.96
## Ebbinghaus | PID5_Disinhibition | -0.14 | [-0.26, -0.01] | 98.72%* | Beta (5.20 +- 5.20) | 2.54 | 0.890
## Ponzo | PID5_NegativeAffect | -0.12 | [-0.25, -0.01] | 97.82%* | Beta (5.20 +- 5.20) | 1.39 | 0.668
## VerticalHorizontal | PID5_Detachment | -0.12 | [-0.24, 0.00] | 97.17%* | Beta (5.20 +- 5.20) | 1.24 | 1.00
##
## Observations: 239-242
cor |>
mutate(label = paste0(format_value(rho, zap_small = TRUE), insight::format_bf(BF, stars_only = TRUE))) |>
ggplot(aes(x = Parameter2, y = Parameter1)) +
geom_tile(aes(fill = rho)) +
geom_text(aes(label = label), size = 3) +
scale_alpha_continuous(range = c(1, 0.5)) +
scale_fill_gradient2(low = "#2196F3", mid = "white", high = "#F44336", midpoint = 0, limit = c(-1, 1), space = "Lab", name = "Correlation", guide = "legend") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
p_pid1 <- plot_correlation(dfsub, x = "i", y = "PID5_Antagonism", fill = "#FF9800")
p_pid2 <- plot_correlation(dfsub, x = "i", y = "PID5_Disinhibition", fill = "#FF5722")
p_pid3 <- plot_correlation(dfsub, x = "i", y = "PID5_Psychoticism", fill = "#673AB7")
p_pid4 <- plot_correlation(dfsub, x = "i", y = "PID5_NegativeAffect", fill = "#F44336")
(p_pid1 | plot_correlation(dfsub, x = "VerticalHorizontal", y = "PID5_Antagonism", fill = "#FF9800") | plot_correlation(dfsub, x = "Ponzo", y = "PID5_Antagonism", fill = "#FF9800")) / (p_pid2 | p_pid3 | p_pid4)
p_pers <- (p_ipip1 +
theme(
axis.title.y = element_text(face = "bold"),
axis.title.x = element_blank()
)) /
(p_ipip2 +
theme(
axis.title.y = element_text(face = "bold"),
axis.title.x = element_blank()
)) |
(p_pid1 +
theme(
axis.title.y = element_text(face = "bold"),
axis.title.x = element_blank()
)) /
(p_pid2 +
labs(x = expression("Factor" ~ italic(i))) +
theme(
axis.title.y = element_text(face = "bold"),
axis.title.x = element_text(size = rel(1.5), face = "bold")
)) |
(p_pid3 +
theme(
axis.title.y = element_text(face = "bold"),
axis.title.x = element_blank()
)) /
(p_pid4 +
theme(
axis.title.y = element_text(face = "bold"),
axis.title.x = element_blank()
))
# ggsave("figures/figure_pers.png",
# p_pers + patchwork::plot_annotation(
# title = "Illusion Sensitivity and Personality",
# theme = theme(plot.title = element_text(size = rel(1.5), face="bold", hjust=0.5, vjust=0))),
# width=15166, height=8000, bg="white", units = "px", limitsize = FALSE, dpi=800, scale = 1)
table1 <- ripip |>
rbind(rpid) |>
data_remove(c("ROPE_Percentage", "Prior_Distribution", "Prior_Location", "Prior_Scale", "pd")) |>
separate(Parameter2, "_", into = c("Scale", "Dimension")) |>
arrange(Scale, desc(BF)) |>
filter(BF > 3)
table1 |>
print_md()
table1 |>
format_table() |>
select(-Method, -n_Obs) |>
rename(Factor = Parameter1) |>
write.csv("table1.csv", row.names = FALSE)
p <-
# patchwork::wrap_elements(grid::rasterGrob(png::readPNG("figures/figure_dem.png"), interpolate = TRUE)) /
patchwork::wrap_elements(grid::rasterGrob(png::readPNG("figures/figure_agesex.png"), interpolate = TRUE)) /
patchwork::wrap_elements(grid::rasterGrob(png::readPNG("figures/figure_pers.png"), interpolate = TRUE)) +
# plot_layout(heights = c(7200, 5000, 8000))
plot_layout(heights = c(5000, 8000))
ggsave("../figures/figure4.png", p, height = 5000+8000, width = 15166, units = "px", limitsize = FALSE)
Indeed, despite the abundant literature on visual illusions, relatively few studies have investigated its ties with participants’ characteristics. Research examining the influence of demographic variables such as gender and age have generally found inconsistent results (Aline F. Cretenoud et al. 2020; Grzeczkowski et al. 2017; Lo and Dinov 2011; Papageorgiou et al. 2020). Regarding links with personality, most works focused on traits associated with psychopathology, such as impulsivity or sensation-seeking (Hlavatá et al. 2018; Zhang et al. 2017; Lányi et al. 2022; Pessoa et al. 2008).
We report significant links between inter-individual indices of illusion sensitivity and variables related to experimental context, demographic characteristics and personality. Firstly, screen size was found to have a significant negative relationship with the sensitivity to the two contrast-based illusions, namely the White and Contrast illusions. One possible explanation can be found in the mechanism by which visual systems filter through more low spatial frequencies when the size of the target object is small (Dixon, Shapiro, and Lu 2014). As this filtering process excludes illumination information from visual processing, smaller screen sizes could yield artifactual changes in brightness perception, which in turn could attenuate the illusory effect of luminance-related illusions.
Our results suggested an inconsistent pattern of non-significant sex-differences, with the exception of greater sensitivity of males as compared to females for the Zöllner illusion. Although we do not consider this result as significant given its specificity, we note that the existing literature reports, if any differences, that females exhibited greater illusion sensitivity (Lo and Dinov 2011; Miller 2001; Papageorgiou et al. 2020). This inconsistency could be due to past studies using a measure of illusion sensitivity that conflates the effect of illusions per se with the perceptual abilities involved in the task, for which gender-related differences can be found (in fact, the authors mention sex-differences in visuospatial strategies as the potential mechanism underlying their findings). On the contrary, the perceptual difficulty of the task and the illusion effect was independently modulated in our paradigm, and statistically dissociated. Our scores of illusion sensitivity might thus be less loaded with perceptual skills, thereby mitigating its effect.
Our findings also suggested a positive relationship between illusion sensitivity and two “normal” personality traits, namely Honesty-Humility and Agreeableness, and a negative link with Antagonism. Although the past literature regarding the links between illusion sensitivity and personality traits remain scarce, convergent evidence can be found in studies reporting a negative relationship between illusion sensitivity and hostility, aggression and narcissism (Zhang et al. 2017; Konrath, Bushman, and Grove 2009; Pessoa et al. 2008). While this result’s interpretation is challenging, one possible explanation could be drawn from the literature on the cognitive style known as field dependence. Since narcissism and aggression tendencies are correlated with lower field dependence (i.e., a lesser reliance on external cues in ambiguous contexts, Witkin and Goodenough 1976; Ohmann and Burgmer 2016; D’Amour et al. 2021), opposite traits, such as Honesty-Humility and Agreeableness, could conversely be more biased by contextual cues and thus more sensitive to illusions.
The positive relationship between illusion sensitivity and “positive” personality traits is mirrored by a negative relationship with several other pathological traits, including Psychoticism, Disinhibition, and Negative Affect. These results are, in general, consistent with past findings and theories, suggesting a negative relationship between egocentric cognitive styles and context processing (including illusion sensitivity, Konrath, Bushman, and Grove 2009). For instance, pathological egocentric beliefs (often observed alongside Psychoticism, Fox 2006) have been related to reduced context integration (manifesting for instance in a tendency to separate objects from their surroundings when processing visual stimuli, Ohmann and Burgmer 2016; Konrath, Bushman, and Grove 2009; Fox 2006). As such, it is possible to relate this higher resistance to illusions to a self-centered, decontextualized and disorganized information processing style, which can be found across the aforementioned maladaptive personality traits (Msetfi et al. 2009; Parkes 1981; Calamari, Pini, and Puleggio 2000; Hoyle 2006) .
Furthermore, these results in favour of a link between illusion sensitivity and maladaptive personality traits in a non-clinical population could be put in relation with clinical findings, which could be seen as extreme cases where the relationship with illusion sensitivity is the most manifest. In line with our results (in particular on Psychoticism and Disinhibition), prior research has found greater illusion resistance in schizophrenia (Notredame et al. 2014; Pessoa et al. 2008; Grzeczkowski et al. 2018), and in particular, in association with schizotypal traits, such as cognitive disorganization (Aline F. Cretenoud et al. 2019; Lányi et al. 2022).