Manipulation Check
Real / Fake
# plot(estimate_density(filter(df, Participant == "60dd7b03f1e72d38230df476_9yh9n")$Belief_Answer))
df |>
  mutate(Participant = fct_relevel(Participant, df |>
    group_by(Participant) |>
    summarize(Belief_Answer = mean(Belief_Answer)) |>
    ungroup() |>
    arrange(Belief_Answer) |>
    pull(Participant) |>
    as.character())) |>
  # mutate(Participant = fct_relevel(Participant, as.character(dfsub$Participant))) |>
  ggplot(aes(x = Belief_Answer, y = Participant, fill = Participant)) +
  ggdist::stat_slab(scale = 2, slab_alpha = 0.9, normalize = "groups", color = "black", size = 0.1) +
  geom_vline(xintercept = 0, linetype = "dotted") +
  scale_y_discrete(expand = c(0.02, 0)) +
  scale_x_continuous(
    limits = c(-1, 1),
    expand = c(0, 0),
    breaks = c(-0.95, 0, 0.95),
    label = c("Fake", "", "Real")
  ) +
  scale_fill_viridis_d() +
  labs(x = "Simulation Monitoring", y = "Participants", title = "Distribution of Reality Judgments") +
  guides(fill = "none") +
  see::theme_modern() +
  theme(
    axis.text.y = element_blank(),
    plot.title = element_text(face = "bold", hjust = 0.5)
  ) +
  ggside::geom_xsidedensity(fill = "grey", color = "white") +
  ggside::scale_xsidey_continuous(expand = c(0, 0))

df |> 
  group_by(Participant, Belief) |> 
  summarize(n = n() / 108, 
            Confidence = mean(Belief_Confidence)) |> 
  pivot_wider(values_from=c("n", "Confidence"), names_from="Belief") |> 
  ungroup() |> 
  describe_posterior(centrality = "mean", test=FALSE)
## Summary of Posterior Distribution
## 
## Parameter       | Mean |       95% CI
## -------------------------------------
## n_Fake          | 0.44 | [0.12, 0.64]
## n_Real          | 0.56 | [0.36, 0.88]
## Confidence_Fake | 0.60 | [0.24, 1.00]
## Confidence_Real | 0.59 | [0.19, 0.98]
m <- glmmTMB::glmmTMB(Belief ~ 1 + (1|Participant) + (1|Stimulus), data=df, family="binomial")
icc(m, by_group = TRUE)
## # ICC by Group
## 
## Group       |   ICC
## -------------------
## Participant | 0.090
## Stimulus    | 0.096
 
Colinearity
IVs <- c("Attractive", "Beauty", "Trustworthy", "Familiar")
correlation::correlation(df[IVs], partial=TRUE)
## # Correlation Matrix (pearson-method)
## 
## Parameter1  |  Parameter2 |         r |        95% CI | t(15658) |         p
## ----------------------------------------------------------------------------
## Attractive  |      Beauty |      0.64 | [ 0.64, 0.65] |   105.41 | < .001***
## Attractive  | Trustworthy |      0.10 | [ 0.08, 0.11] |    12.28 | < .001***
## Attractive  |    Familiar |      0.16 | [ 0.14, 0.17] |    19.65 | < .001***
## Beauty      | Trustworthy |      0.25 | [ 0.23, 0.26] |    32.01 | < .001***
## Beauty      |    Familiar | -8.56e-03 | [-0.02, 0.01] |    -1.07 | 0.284    
## Trustworthy |    Familiar |      0.07 | [ 0.06, 0.09] |     8.98 | < .001***
## 
## p-value adjustment method: Holm (1979)
## Observations: 15660
preds <- data.frame()
dats <- data.frame()
for (x in IVs) {
  for (y in IVs) {
    if (x == y) next
    print(paste(y, "~", x))
    model <- glmmTMB::glmmTMB(as.formula(
      paste(y, "~", x, "* Sex * Stimulus_Interest + (1|Participant) + (1|Stimulus)")
    ),
    data = df,
    family = glmmTMB::beta_family()
    )
    # model <- mgcv::gamm(Real ~ s(Attractive) + Trustworthy,
    #                     random = list(Participant=~1, Stimulus=~1),
    #                     data = df,
    #                     family=mgcv::betar())
    pred <- estimate_relation(model, at = c(x, "Stimulus_Interest", "Sex"), length = 20)
    pred$y <- y
    pred <- data_rename(pred, x, "Score")
    pred$x <- x
    preds <- rbind(preds, pred)
    dats <- rbind(dats, data.frame(Score = df[[x]], Predicted = df[[y]], x = x, y = y, Sex = df$Sex))
  }
}
## [1] "Beauty ~ Attractive"
## [1] "Trustworthy ~ Attractive"
## [1] "Familiar ~ Attractive"
## [1] "Attractive ~ Beauty"
## [1] "Trustworthy ~ Beauty"
## [1] "Familiar ~ Beauty"
## [1] "Attractive ~ Trustworthy"
## [1] "Beauty ~ Trustworthy"
## [1] "Familiar ~ Trustworthy"
## [1] "Attractive ~ Familiar"
## [1] "Beauty ~ Familiar"
## [1] "Trustworthy ~ Familiar"
dats <- mutate(dats, x = fct_relevel(x, IVs), y = fct_relevel(y, IVs))
preds <- mutate(preds, x = fct_relevel(x, IVs), y = fct_relevel(y, IVs))
dats |>
  ggplot(aes(x = Score, y = Predicted)) +
  stat_density_2d(aes(fill = after_stat(density)), geom = "raster", contour = FALSE) +
  # geom_ribbon(data = preds, aes(ymin = CI_low, ymax = CI_high, group = Stimulus_SameSex), alpha = 0.3) +
  geom_line(data = preds, aes(color = Sex, linetype = Stimulus_Interest)) +
  scale_fill_gradientn(colors = c("white", "#FF9800", "#F44336"), guide = "none") +
  scale_color_manual(values = c("Male" = "#2196F3", "Female" = "#E91E63")) +
  scale_linetype_manual(values = c("TRUE" = "solid", "FALSE" = "dashed")) +
  scale_x_continuous(expand = c(0, 0), labels = scales::percent) +
  scale_y_continuous(expand = c(0, 0), labels = scales::percent) +
  facet_grid(y ~ x, switch = "both") +
  theme_modern() +
  labs(title = "Collinearity in the Stimuli Ratings") +
  theme(
    aspect.ratio = 1,
    strip.background = element_blank(),
    strip.placement = "outside",
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    plot.title = element_text(face = "bold", hjust = 0.5)
  ) +
  ggnewscale::new_scale_fill() +
  scale_fill_manual(values = c("Male" = "#2196F3", "Female" = "#E91E63")) +
  ggside::geom_xsidedensity(aes(fill = Sex), color = NA, alpha = 0.3) +
  ggside::geom_ysidedensity(aes(fill = Sex), color = NA, alpha = 0.3) +
  ggside::theme_ggside_void() +
  ggside::scale_ysidex_continuous(expand = c(0, 0)) +
  ggside::scale_xsidey_continuous(expand = c(0, 0)) +
  ggside::ggside(collapse = "all")

 
Effect of Delay
model <- glmmTMB::glmmTMB(Belief ~ Delay + (1 | Participant) + (1 | Stimulus),
  data = df,
  family = "binomial"
)
pred <- estimate_relation(model, at = "Delay", length = 20)
m_conf <- glmmTMB::glmmTMB(Belief_Confidence ~ Belief / Delay + ((Belief / Delay) | Participant) + (1 | Stimulus),
  data = df,
  family = glmmTMB::beta_family()
)
y_conf <- estimate_relation(m_conf, at = c("Delay", "Belief"), length = 20)
y_conf <- y_conf |>
  mutate_at(c("Predicted", "CI_low", "CI_high"), function(x) ifelse(y_conf$Belief == "Real", datawizard::rescale(x, range = c(0, 1), to = c(0.5, 1)), datawizard::rescale(x, range = c(1, 0), to = c(0, 0.5))))
df |>
  ggplot(aes(x = Delay, y = Real)) +
  stat_density_2d(aes(fill = after_stat(density)), geom = "raster", contour = FALSE) +
  geom_hline(yintercept = 0.5, linetype = "dotted") +
  # geom_ribbon(data=y_conf, aes(y=Predicted, ymin = CI_low, ymax = CI_high), alpha = 0.3) +
  geom_line(data = y_conf, aes(y = Predicted, group = Belief), linetype = "dashed", color = "red") +
  geom_ribbon(data = pred, aes(y = Predicted, ymin = CI_low, ymax = CI_high), alpha = 0.3) +
  geom_line(data = pred, aes(y = Predicted), color = "red") +
  scale_fill_gradientn(colors = c("white", "#795548"), guide = "none") +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0), labels = scales::percent) +
  theme_modern() +
  labs(title = "Effect of Re-exposure Delay", x = "Minutes") +
  theme(
    aspect.ratio = 1,
    strip.background = element_blank(),
    strip.placement = "outside",
    plot.title = element_text(face = "bold", hjust = 0.5)
  ) +
  ggside::geom_xsidedensity(fill = "#795548", color = "white") +
  ggside::geom_ysidedensity(fill = "#9C27B0", color = "white") +
  ggside::theme_ggside_void() +
  ggside::scale_ysidex_continuous(expand = c(0, 0)) +
  ggside::scale_xsidey_continuous(expand = c(0, 0)) +
  ggside::ggside(collapse = "all")

hdi(df$Delay)
## 95% HDI: [1.28, 29.66]
estimate_relation(model, at="Delay=c(0, 60)")
## Model-based Expectation
## 
## Delay | Participant | Stimulus | Predicted |   SE |       95% CI
## ----------------------------------------------------------------
## 0.00  |             |          |      0.58 | 0.02 | [0.54, 0.63]
## 60.00 |             |          |      0.54 | 0.03 | [0.47, 0.60]
## 
## Variable predicted: Belief
## Predictors modulated: Delay=c(0, 60)
parameters::parameters(model, effects="fixed", exponentiate=TRUE) |> 
  display()
Fixed Effects
| (Intercept) | 
1.41 | 
0.12 | 
(1.19, 1.67) | 
3.90 | 
< .001 | 
| Delay | 
1.00 | 
2.45e-03 | 
(0.99, 1.00) | 
-1.37 | 
0.172 | 
parameters::parameters(m_conf, effects="fixed") |> 
  display()
Fixed Effects
| (Intercept) | 
0.79 | 
0.09 | 
(0.61, 0.97) | 
8.56 | 
< .001 | 
| Belief (Real) | 
-0.05 | 
0.07 | 
(-0.18, 0.09) | 
-0.68 | 
0.498 | 
| Belief (Fake) × Delay | 
-2.67e-03 | 
2.38e-03 | 
(-7.34e-03, 2.00e-03) | 
-1.12 | 
0.263 | 
| Belief (Real) × Delay | 
-5.92e-03 | 
2.07e-03 | 
(-9.98e-03, -1.85e-03) | 
-2.85 | 
0.004 | 
 
Effect of Presentation Order
model <- glmmTMB::glmmTMB(Belief ~ Block2_Trial + (1 | Participant) + (1 | Stimulus),
  data = df,
  family = "binomial"
)
pred <- estimate_relation(model, at = "Block2_Trial", length = 20)
m_conf <- glmmTMB::glmmTMB(Belief_Confidence ~ Belief / Block2_Trial + ((Belief / Block2_Trial) | Participant) + (1 | Stimulus),
  data = df,
  family = glmmTMB::beta_family()
)
y_conf <- estimate_relation(m_conf, at = c("Block2_Trial", "Belief"), length = 20)
y_conf <- y_conf |>
  mutate_at(c("Predicted", "CI_low", "CI_high"), function(x) ifelse(y_conf$Belief == "Real", datawizard::rescale(x, range = c(0, 1), to = c(0.5, 1)), datawizard::rescale(x, range = c(1, 0), to = c(0, 0.5))))
df |>
  ggplot(aes(x = Block2_Trial, y = Real)) +
  stat_density_2d(aes(fill = after_stat(density)), geom = "raster", contour = FALSE) +
  geom_hline(yintercept = 0.5, linetype = "dotted") +
  # geom_ribbon(data=y_conf, aes(y=Predicted, ymin = CI_low, ymax = CI_high), alpha = 0.3) +
  geom_line(data = y_conf, aes(y = Predicted, group = Belief), linetype = "dashed", color = "red") +
  geom_ribbon(data = pred, aes(y = Predicted, ymin = CI_low, ymax = CI_high), alpha = 0.3) +
  geom_line(data = pred, aes(y = Predicted), color = "red") +
  scale_fill_gradientn(colors = c("white", "#FF9800"), guide = "none") +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0), labels = scales::percent) +
  theme_modern() +
  labs(title = "Effect of Presentation Order", x = "Minutes", y="Presentation Order") +
  theme(
    aspect.ratio = 1,
    strip.background = element_blank(),
    strip.placement = "outside",
    plot.title = element_text(face = "bold", hjust = 0.5)
  ) +
  ggside::geom_xsidedensity(fill = "#FF9800", color = "white") +
  ggside::geom_ysidedensity(fill = "#9C27B0", color = "white") +
  ggside::theme_ggside_void() +
  ggside::scale_ysidex_continuous(expand = c(0, 0)) +
  ggside::scale_xsidey_continuous(expand = c(0, 0)) +
  ggside::ggside(collapse = "all")

parameters::parameters(model, effects="fixed", exponentiate=TRUE) |> 
  display(digits=4)
Fixed Effects
| (Intercept) | 
1.4030 | 
0.1201 | 
(1.19, 1.66) | 
3.9547 | 
< .001 | 
| Block2 Trial | 
0.9992 | 
0.0006 | 
(1.00, 1.00) | 
-1.5040 | 
0.133 | 
parameters::parameters(m_conf, effects="fixed") |> 
  display(digits=6)
Fixed Effects
| (Intercept) | 
0.854086 | 
0.097901 | 
(0.66, 1.05) | 
8.723938 | 
< .001 | 
| Belief (Real) | 
-0.020838 | 
0.073228 | 
(-0.16, 0.12) | 
-0.284563 | 
0.776 | 
| Belief (Fake) × Block2 Trial | 
-0.001767 | 
0.000851 | 
(-3.44e-03, -9.95e-05) | 
-2.076884 | 
0.038 | 
| Belief (Real) × Block2 Trial | 
-0.003127 | 
0.000711 | 
(-4.52e-03, -1.73e-03) | 
-4.396204 | 
< .001 | 
 
 
Determinants of Reality
make_model <- function(df, var = "Attractive", formula = var, fill = "#2196F3") {
  # Models
  m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", formula)),
    data = df,
    family = "binomial"
  )
  y_real <- estimate_relation(m_real, at = c(var, "Sex"), length = 21)
  # gam <- brms::brm(paste0("Belief ~ s(", var, ", by=Sex) + (1|Participant) + (1|Stimulus)"),
  #                  data=df,
  #                  algorithm="sampling",
  #                  family = "bernoulli")
  # trend <- estimate_relation(gam, at = c(var, "Sex"), length = 81, preserve_range=FALSE)
  # slope <- estimate_slopes(gam, trend=var, at = c(var, "Sex"), length = 81)
  # trend$Trend <- interpret_pd(slope$pd)
  # trend$group <- 0
  # trend$group[2:nrow(trend)] <- as.character(cumsum(ifelse(trend$Trend[2:nrow(trend)] == trend$Trend[1:nrow(trend)-1], 0, 1)))
  m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief /", formula)),
    data = df,
    family = glmmTMB::beta_family()
  )
  y_conf <- estimate_relation(m_conf, at = c(var, "Belief", "Sex"), length = 21)
  y_conf <- y_conf |>
    mutate_at(c("Predicted", "CI_low", "CI_high"), function(x) ifelse(y_conf$Belief == "Real", datawizard::rescale(x, range = c(0, 1), to = c(0.5, 1)), datawizard::rescale(x, range = c(1, 0), to = c(0, 0.5))))
  # Significance
  sig1 <- data.frame(x = 0.5, 
                     y = y_real[c(11, 31), "Predicted"],
                     Sex = y_real[c(11, 31), "Sex"])
  param <- parameters::parameters(m_real, effects = "fixed", keep = var)
  sig1$p <- c(min(param[str_detect(param$Parameter, sig1$Sex[1]), "p"]), min(param[str_detect(param$Parameter, sig1$Sex[2]), "p"]))
  sig1$y <- sig1$y + ifelse(sig1$Sex == "Male", -0.03, 0.03)
  sig1$label <- ifelse(sig1$p > .05 & sig1$p < .099, format_p(sig1$p), format_p(sig1$p, stars_only = TRUE))
  
  sig2 <- data.frame(x = 0.5, 
                     y =  y_conf[c(11, 31, 51, 71), "Predicted"],
                     Sex = y_conf[c(11, 31, 51, 71), "Sex"],
                     Belief = y_conf[c(11, 31, 51, 71), "Belief"]) |> 
    arrange(Sex, Belief)
  param <- parameters::parameters(m_conf, effects = "fixed", keep = var) |> 
    arrange(Parameter)
  sig2$p <- c(min(param$p[c(1, 2)]), min(param$p[c(5, 6)]), min(param$p[c(3, 4)]), min(param$p[c(7, 8)]))
  sig2$y <- sig2$y + ifelse(sig2$Belief == "Real", 0.03, -0.03)
  sig2$label <- ifelse(sig2$p > .05 & sig2$p < .099, format_p(sig2$p), format_p(sig2$p, stars_only = TRUE))
  
  
  # Plot
  p <- df |>
    ggplot(aes(x = .data[[var]], y = .data[["Real"]])) +
    stat_density_2d(aes(fill = after_stat(density)), geom = "raster", contour = FALSE) +
    scale_fill_gradientn(colors = c("white", fill), guide = "none") +
    ggnewscale::new_scale_fill() +
    geom_hline(yintercept = 0.5, linetype = "dotted") +
    # geom_point2(alpha = 0.25, size = 4, color = "black") +
    geom_line(data = y_conf, aes(y = Predicted, group = interaction(Belief, Sex), color = Sex), linetype = "dashed") +
    geom_ribbon(data = y_real, aes(y = Predicted, group = Sex, fill = Sex, ymin = CI_low, ymax = CI_high), alpha = 1 / 3) +
    geom_line(data = y_real, aes(y = Predicted, color = Sex), linewidth=1) +
    # geom_ribbon(data = trend, aes(y = Predicted, group=Sex, fill=Sex, ymin = CI_low, ymax = CI_high), alpha = 1/6) +
    # geom_line(data = trend, aes(y = Predicted, color=Sex, linetype=Trend, group=interaction(Sex, group)), size=0.6) +
    geom_text(data = sig1, aes(y = y, x = x, label = label, color = Sex), size = ifelse(sig1$p < .05, 8.5, 3.5)) +
    geom_text(data = sig2, aes(y = y, x = x, label = label, color = Sex), size = ifelse(sig2$p < .05, 5, 3)) +
    scale_color_manual(values = c("Male" = "#2196F3", "Female" = "#E91E63")) +
    scale_fill_manual(values = c("Male" = "#2196F3", "Female" = "#E91E63")) +
    scale_x_continuous(expand = c(0, 0), labels = scales::percent) +
    scale_y_continuous(expand = c(0, 0), breaks = c(0, 0.25, 0.5, 0.75, 1), labels = c("Fake", "25%", "50%", "75%", "Real")) +
    labs(y = "Simulation Monitoring") +
    guides(fill = guide_legend(override.aes = list(alpha = 1))) +
    theme_modern(axis.title.space = 5) +
    ggside::geom_xsidedensity(aes(fill = Sex), alpha=2/3, color = NA) +
    ggside::geom_ysidedensity(aes(fill = Sex), alpha=2/3, color = NA) +
    ggside::theme_ggside_void() +
    ggside::scale_ysidex_continuous(expand = c(0, 0)) +
    ggside::scale_xsidey_continuous(expand = c(0, 0))
  list(p = p, model_belief = m_real, model_confidence = m_conf)
}
rez_at <- make_model(filter(df, Stimulus_Interest == TRUE),
  formula = "Sex / poly(Attractive, 2) + (1|Participant) + (1|Stimulus)",
  var = "Attractive", fill = "#F44336"
)
rez_gl <- make_model(filter(df, Stimulus_Interest == TRUE),
  formula = "Sex / poly(Beauty, 2) + Trustworthy + Familiar + (1|Participant) + (1|Stimulus)",
  var = "Beauty", fill = "#E91E63"
)
rez_tr <- make_model(filter(df, Stimulus_Interest == TRUE),
  formula = "Sex / poly(Trustworthy, 2) + Beauty + Familiar + (1|Participant) + (1|Stimulus)",
  var = "Trustworthy", fill = "#4CAF50"
)
rez_fa <- make_model(filter(df, Stimulus_Interest == TRUE),
  formula = "Sex / poly(Familiar, 2) + Beauty + Trustworthy + (1|Participant) + (1|Stimulus)",
  var = "Familiar", fill = "#2196F3"
)
Attractiveness
parameters::parameters(rez_at$model_belief, effects = "fixed", keep = "Attractive") |> 
  display()
Fixed Effects
| Sex (Female) × poly(Attractive, 2)1 | 
4.98 | 
3.19 | 
(-1.27, 11.23) | 
1.56 | 
0.118 | 
| Sex (Male) × poly(Attractive, 2)1 | 
16.57 | 
4.72 | 
(7.33, 25.82) | 
3.51 | 
< .001 | 
| Sex (Female) × poly(Attractive, 2)2 | 
7.82 | 
3.07 | 
(1.81, 13.84) | 
2.55 | 
0.011 | 
| Sex (Male) × poly(Attractive, 2)2 | 
2.95 | 
5.56 | 
(-7.95, 13.85) | 
0.53 | 
0.596 | 
performance::performance(rez_at$model_belief, metrics = c("R2")) |> 
  display()
performance::icc(rez_at$model_belief, by_group = TRUE)  |> 
  display()
| Participant | 
0.07 | 
| Stimulus | 
0.08 | 
parameters::parameters(rez_at$model_confidence, effects = "fixed", keep = "Attractive")  |> 
  display()
Fixed Effects
| Belief (Fake) × SexFemale × poly(Attractive, 2)1 | 
0.41 | 
2.25 | 
(-4.01, 4.83) | 
0.18 | 
0.855 | 
| Belief (Real) × SexFemale × poly(Attractive, 2)1 | 
2.40 | 
1.79 | 
(-1.11, 5.91) | 
1.34 | 
0.181 | 
| Belief (Fake) × SexMale × poly(Attractive, 2)1 | 
1.97 | 
3.72 | 
(-5.32, 9.25) | 
0.53 | 
0.597 | 
| Belief (Real) × SexMale × poly(Attractive, 2)1 | 
0.92 | 
2.91 | 
(-4.79, 6.63) | 
0.31 | 
0.753 | 
| Belief (Fake) × SexFemale × poly(Attractive, 2)2 | 
5.23 | 
2.23 | 
(0.86, 9.60) | 
2.35 | 
0.019 | 
| Belief (Real) × SexFemale × poly(Attractive, 2)2 | 
4.30 | 
1.70 | 
(0.97, 7.64) | 
2.53 | 
0.011 | 
| Belief (Fake) × SexMale × poly(Attractive, 2)2 | 
-9.92 | 
4.62 | 
(-18.99, -0.86) | 
-2.15 | 
0.032 | 
| Belief (Real) × SexMale × poly(Attractive, 2)2 | 
5.46 | 
3.12 | 
(-0.64, 11.57) | 
1.75 | 
0.080 | 
rez_at$p

 
Beauty
parameters::parameters(rez_gl$model_belief, effects = "fixed", keep = "Beauty")|> 
  display()
Fixed Effects
| Sex (Female) × poly(Beauty, 2)1 | 
3.72 | 
3.43 | 
(-2.99, 10.43) | 
1.09 | 
0.278 | 
| Sex (Male) × poly(Beauty, 2)1 | 
11.82 | 
4.28 | 
(3.44, 20.21) | 
2.76 | 
0.006 | 
| Sex (Female) × poly(Beauty, 2)2 | 
4.46 | 
3.14 | 
(-1.69, 10.61) | 
1.42 | 
0.156 | 
| Sex (Male) × poly(Beauty, 2)2 | 
7.65 | 
4.69 | 
(-1.55, 16.85) | 
1.63 | 
0.103 | 
performance::performance(rez_gl$model_belief, metrics = c("R2")) |> 
  display()
performance::icc(rez_gl$model_belief, by_group = TRUE)|> 
  display()
| Participant | 
0.07 | 
| Stimulus | 
0.08 | 
parameters::parameters(rez_gl$model_confidence, effects = "fixed", keep = "Beauty") |> 
  display()
Fixed Effects
| Belief (Fake) × SexFemale × poly(Beauty, 2)1 | 
-1.16 | 
2.30 | 
(-5.68, 3.35) | 
-0.51 | 
0.613 | 
| Belief (Real) × SexFemale × poly(Beauty, 2)1 | 
3.33 | 
1.96 | 
(-0.51, 7.16) | 
1.70 | 
0.089 | 
| Belief (Fake) × SexMale × poly(Beauty, 2)1 | 
-0.95 | 
3.34 | 
(-7.49, 5.59) | 
-0.28 | 
0.776 | 
| Belief (Real) × SexMale × poly(Beauty, 2)1 | 
2.15 | 
2.58 | 
(-2.90, 7.20) | 
0.83 | 
0.404 | 
| Belief (Fake) × SexFemale × poly(Beauty, 2)2 | 
7.84 | 
2.27 | 
(3.39, 12.29) | 
3.46 | 
< .001 | 
| Belief (Real) × SexFemale × poly(Beauty, 2)2 | 
2.15 | 
1.88 | 
(-1.53, 5.83) | 
1.15 | 
0.251 | 
| Belief (Fake) × SexMale × poly(Beauty, 2)2 | 
-6.50 | 
3.50 | 
(-13.36, 0.37) | 
-1.85 | 
0.064 | 
| Belief (Real) × SexMale × poly(Beauty, 2)2 | 
4.67 | 
2.71 | 
(-0.64, 9.98) | 
1.72 | 
0.085 | 
rez_gl$p

 
Trustworthiness
parameters::parameters(rez_tr$model_belief, effects = "fixed", keep = "Trustworthy") |> 
  display()
Fixed Effects
| Sex (Female) × poly(Trustworthy, 2)1 | 
6.44 | 
3.34 | 
(-0.11, 13.00) | 
1.93 | 
0.054 | 
| Sex (Male) × poly(Trustworthy, 2)1 | 
5.86 | 
4.14 | 
(-2.26, 13.98) | 
1.41 | 
0.157 | 
| Sex (Female) × poly(Trustworthy, 2)2 | 
-0.21 | 
3.31 | 
(-6.69, 6.27) | 
-0.06 | 
0.950 | 
| Sex (Male) × poly(Trustworthy, 2)2 | 
1.20 | 
4.32 | 
(-7.27, 9.67) | 
0.28 | 
0.781 | 
performance::performance(rez_tr$model_belief, metrics = c("R2")) |> 
  display()
performance::icc(rez_tr$model_belief, by_group = TRUE) |> 
  display()
| Participant | 
0.07 | 
| Stimulus | 
0.08 | 
parameters::parameters(rez_tr$model_confidence, effects = "fixed", keep = "Trustworthy") |> 
  display()
Fixed Effects
| Belief (Fake) × SexFemale × poly(Trustworthy, 2)1 | 
-0.63 | 
2.26 | 
(-5.07, 3.80) | 
-0.28 | 
0.780 | 
| Belief (Real) × SexFemale × poly(Trustworthy, 2)1 | 
1.84 | 
2.15 | 
(-2.37, 6.05) | 
0.86 | 
0.392 | 
| Belief (Fake) × SexMale × poly(Trustworthy, 2)1 | 
-3.07 | 
3.12 | 
(-9.19, 3.06) | 
-0.98 | 
0.326 | 
| Belief (Real) × SexMale × poly(Trustworthy, 2)1 | 
0.47 | 
2.51 | 
(-4.46, 5.40) | 
0.19 | 
0.853 | 
| Belief (Fake) × SexFemale × poly(Trustworthy, 2)2 | 
6.12 | 
2.36 | 
(1.49, 10.75) | 
2.59 | 
0.010 | 
| Belief (Real) × SexFemale × poly(Trustworthy, 2)2 | 
6.14 | 
2.04 | 
(2.13, 10.14) | 
3.00 | 
0.003 | 
| Belief (Fake) × SexMale × poly(Trustworthy, 2)2 | 
-3.63 | 
3.07 | 
(-9.65, 2.39) | 
-1.18 | 
0.237 | 
| Belief (Real) × SexMale × poly(Trustworthy, 2)2 | 
1.41 | 
2.60 | 
(-3.69, 6.51) | 
0.54 | 
0.589 | 
rez_tr$p

 
Familiarity
parameters::parameters(rez_fa$model_belief, effects = "fixed", keep = "Familiar") |> 
  display()
Fixed Effects
| Sex (Female) × poly(Familiar, 2)1 | 
0.49 | 
3.62 | 
(-6.61, 7.59) | 
0.13 | 
0.893 | 
| Sex (Male) × poly(Familiar, 2)1 | 
9.24 | 
5.18 | 
(-0.92, 19.40) | 
1.78 | 
0.075 | 
| Sex (Female) × poly(Familiar, 2)2 | 
-0.41 | 
3.31 | 
(-6.90, 6.09) | 
-0.12 | 
0.902 | 
| Sex (Male) × poly(Familiar, 2)2 | 
-0.82 | 
5.04 | 
(-10.69, 9.06) | 
-0.16 | 
0.871 | 
performance::performance(rez_fa$model_belief, metrics = c("R2")) |> 
  display()
performance::icc(rez_fa$model_belief, by_group = TRUE) |> 
  display()
| Participant | 
0.07 | 
| Stimulus | 
0.08 | 
parameters::parameters(rez_fa$model_confidence, effects = "fixed", keep = "Familiar") |> 
  display()
Fixed Effects
| Belief (Fake) × SexFemale × poly(Familiar, 2)1 | 
2.04 | 
2.47 | 
(-2.80, 6.88) | 
0.83 | 
0.408 | 
| Belief (Real) × SexFemale × poly(Familiar, 2)1 | 
-0.64 | 
2.04 | 
(-4.64, 3.35) | 
-0.32 | 
0.753 | 
| Belief (Fake) × SexMale × poly(Familiar, 2)1 | 
-12.41 | 
4.01 | 
(-20.27, -4.54) | 
-3.09 | 
0.002 | 
| Belief (Real) × SexMale × poly(Familiar, 2)1 | 
9.98 | 
3.14 | 
(3.83, 16.13) | 
3.18 | 
0.001 | 
| Belief (Fake) × SexFemale × poly(Familiar, 2)2 | 
0.14 | 
2.31 | 
(-4.39, 4.67) | 
0.06 | 
0.952 | 
| Belief (Real) × SexFemale × poly(Familiar, 2)2 | 
-1.04 | 
1.94 | 
(-4.85, 2.77) | 
-0.54 | 
0.592 | 
| Belief (Fake) × SexMale × poly(Familiar, 2)2 | 
4.79 | 
4.22 | 
(-3.49, 13.06) | 
1.13 | 
0.257 | 
| Belief (Real) × SexMale × poly(Familiar, 2)2 | 
-0.28 | 
2.96 | 
(-6.08, 5.52) | 
-0.10 | 
0.924 | 
rez_fa$p

 
Cross-Validate with Normmative Scores
rez_at_norm <- filter(df, Stimulus_Interest == TRUE) |> 
  mutate(Norms_Attractive = normalize(Norms_Attractive)) |> 
  make_model(
    formula = "Sex / poly(Norms_Attractive, 2) + (1|Participant) + (1|Stimulus)",
    var = "Norms_Attractive", fill = "#F44336"
)
parameters::parameters(rez_at_norm$model_belief, effects = "fixed", keep = "Attractive") |> 
  display()
Fixed Effects
| Sex (Female) × poly(Norms Attractive, 2)1 | 
1.50 | 
3.49 | 
(-5.35, 8.34) | 
0.43 | 
0.668 | 
| Sex (Male) × poly(Norms Attractive, 2)1 | 
10.12 | 
5.10 | 
(0.13, 20.12) | 
1.98 | 
0.047 | 
| Sex (Female) × poly(Norms Attractive, 2)2 | 
0.39 | 
3.46 | 
(-6.38, 7.16) | 
0.11 | 
0.911 | 
| Sex (Male) × poly(Norms Attractive, 2)2 | 
-3.17 | 
5.33 | 
(-13.61, 7.27) | 
-0.60 | 
0.551 | 
rez_at_norm$p

rez_tr_norm <- filter(df, Stimulus_Interest == TRUE) |> 
  mutate(Norms_Trustworthy = normalize(Norms_Trustworthy)) |> 
  make_model(
    formula = "Sex / poly(Norms_Trustworthy, 2) + (1|Participant) + (1|Stimulus)",
    var = "Norms_Trustworthy", fill = "#4CAF50"
)
parameters::parameters(rez_tr_norm$model_belief, effects = "fixed", keep = "Trustworthy") |> 
  display()
Fixed Effects
| Sex (Female) × poly(Norms Trustworthy, 2)1 | 
6.34 | 
3.46 | 
(-0.43, 13.12) | 
1.83 | 
0.067 | 
| Sex (Male) × poly(Norms Trustworthy, 2)1 | 
9.74 | 
4.99 | 
(-0.04, 19.51) | 
1.95 | 
0.051 | 
| Sex (Female) × poly(Norms Trustworthy, 2)2 | 
3.45 | 
3.50 | 
(-3.40, 10.30) | 
0.99 | 
0.324 | 
| Sex (Male) × poly(Norms Trustworthy, 2)2 | 
0.28 | 
4.79 | 
(-9.11, 9.67) | 
0.06 | 
0.953 | 
rez_tr_norm$p

 
 
Inter-Individual Correlates
plot_interindividual <- function(m_real, m_conf, var = "IPIP6_HonestyHumility", fill = "#D81B60") {
  y_real <- estimate_relation(m_real, at = c(var), length = 21)
  y_conf <- estimate_relation(m_conf, at = c(var, "Belief"), length = 21)
  
  y_conf <- y_conf |>
    mutate_at(c("Predicted", "CI_low", "CI_high"), function(x) ifelse(y_conf$Belief == "Real", datawizard::rescale(x, range = c(0, 1), to = c(0.5, 1)), datawizard::rescale(x, range = c(1, 0), to = c(0, 0.5))))
  # Significance
  mid <- max(y_conf[[var]])-diff(range(y_conf[[var]])) / 2
  sig1 <- data.frame(x = mid, y = y_real[c(11), "Predicted"] + 0.065,
                     p = parameters::parameters(m_real, effects = "fixed", keep = var)$p)
  sig1$label <- ifelse(sig1$p > .05 & sig1$p < .1, format_p(sig1$p), format_p(sig1$p, stars_only = TRUE))
  sig2 <- data.frame(x = mid, y = y_conf[c(11, 31), "Predicted"] + c(-0.065, 0.065),
                     p = parameters::parameters(m_conf, effects = "fixed", keep = var)$p,
                     Belief = y_conf[c(11, 31), "Belief"])
  sig2$label <- ifelse(sig2$p > .05 & sig2$p < .1, format_p(sig2$p), format_p(sig2$p, stars_only = TRUE))
  
  # Data
  dat <- insight::get_data(m_conf) |> 
                  group_by(Participant, Belief) |> 
                  data_select(c("Participant", "Belief", var, "Belief_Confidence")) |> 
                  mean_qi(.width = 0.5) |> 
    mutate(Belief_Confidence = ifelse(Belief == "Real", datawizard::rescale(Belief_Confidence, range = c(0, 1), to = c(0.5, 1)), datawizard::rescale(Belief_Confidence, range = c(1, 0), to = c(0, 0.5))))
  
  
  # Plot
  p <- df |>
    ggplot(aes_string(x = var, y = "Real")) +
    stat_density_2d(data=filter(df, Belief=="Real"), aes(fill = after_stat(density)), geom = "raster", contour = FALSE, alpha=0.5) +
    scale_fill_gradientn(colors = c("white", "#4CAF50"), guide = "none") +
    ggnewscale::new_scale_fill() +
    stat_density_2d(data=filter(df, Belief=="Fake"), aes(fill = after_stat(density)), geom = "raster", contour = FALSE, alpha=0.5) +
    scale_fill_gradientn(colors = c("white", "#F44336"), guide = "none") +
    ggnewscale::new_scale_fill() +
    geom_hline(yintercept = 0.5, linetype = "dotted") +
    geom_point2(data=dat, aes(y = Belief_Confidence, color = Belief), alpha = 0.25, size = 4) +
    geom_ribbon(data = y_conf, aes(y = Predicted, ymin = CI_low, ymax = CI_high, fill = Belief), alpha = 1 / 6) +
    geom_line(data = y_conf, aes(y = Predicted, group = Belief, color = Belief)) +
    geom_ribbon(data = y_real, aes(y = Predicted, ymin = CI_low, ymax = CI_high), alpha = 1 / 6) +
    geom_line(data = y_real, aes(y = Predicted), size=1) +
    geom_text(data = sig1, aes(y = y, x = x, label = label), size = ifelse(sig1$p < .05, 8, 3.5)) +
    geom_text(data = sig2, aes(y = y, x = x, label = label), size = ifelse(sig2$p < .05, 8, 3.5)) +
    scale_color_manual(values = c("Real" = "#4CAF50", "Fake" = "#F44336")) +
    scale_fill_manual(values = c("Real" = "#4CAF50", "Fake" = "#F44336")) +
    scale_x_continuous(expand = c(0, 0)) +
    scale_y_continuous(expand = c(0, 0), breaks = c(0, 0.25, 0.5, 0.75, 1), labels = c("Fake", "25%", "50%", "75%", "Real")) +
    labs(y = "Simulation Monitoring") +
    guides(fill = guide_legend(override.aes = list(alpha = 1))) +
    theme_modern(axis.title.space = 5) +
    ggside::geom_xsidedensity(data=dat, fill = fill, color = NA) +
    ggside::geom_ysidedensity(data=dat, aes(fill = Belief, y=Belief_Confidence), color = NA) +
    ggside::theme_ggside_void() +
    ggside::scale_ysidex_continuous(expand = c(0, 0)) +
    ggside::scale_xsidey_continuous(expand = c(0, 0))
  p
}
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))
}
analyze_interindividual <- function(df, questionnaire = "IPIP6_") {
  param_real <- data.frame()
  param_conf <- data.frame()
  for(var in names(select(df, starts_with(questionnaire)))) {
    m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", var)), 
                               data=datawizard::standardise(df, select=var), family = "binomial")
    param_real <- rbind(param_real, parameters::parameters(m_real, effects="fixed")[2, ])
    
    m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief / ", var)), 
                             
                               data=datawizard::standardise(df, select=var), 
                             family = glmmTMB::beta_family())
  
    param_conf <- rbind(param_conf, parameters::parameters(m_conf, effects="fixed")[3:4, ])
  }
  
  param_real <- param_real |> 
    mutate(Parameter = str_remove(Parameter, questionnaire)) |> 
    select(-SE)
  param_conf <- param_conf |> 
    tidyr::separate("Parameter", into = c("Belief", "Dimension"), sep = ":") |> 
    mutate(Belief = str_remove(Belief, "Belief"),
           Dimension = str_remove(Dimension, questionnaire)) |> 
    select(-SE)
  list(param_real, param_conf)
}
IPIP-6
f <- paste0("(",paste(names(select(df, starts_with("IPIP"))), collapse = " + "), 
            ") + (1|Participant) + (1|Stimulus)")
m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", f)), data=df, family = "binomial")
parameters::parameters(m_real, effects="fixed", exponentiate = TRUE) |> 
  display()
Fixed Effects
| (Intercept) | 
1.96 | 
0.91 | 
(0.79, 4.88) | 
1.45 | 
0.147 | 
| IPIP6 Extraversion | 
0.74 | 
0.20 | 
(0.43, 1.27) | 
-1.10 | 
0.272 | 
| IPIP6 Conscientiousness | 
0.90 | 
0.25 | 
(0.52, 1.55) | 
-0.39 | 
0.695 | 
| IPIP6 Neuroticism | 
0.72 | 
0.23 | 
(0.39, 1.34) | 
-1.03 | 
0.302 | 
| IPIP6 Openness | 
0.96 | 
0.31 | 
(0.51, 1.82) | 
-0.11 | 
0.909 | 
| IPIP6 HonestyHumility | 
0.70 | 
0.20 | 
(0.39, 1.23) | 
-1.24 | 
0.215 | 
| IPIP6 Agreeableness | 
1.31 | 
0.45 | 
(0.67, 2.57) | 
0.80 | 
0.424 | 
m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief / ", f)), 
                           data=df, 
                           family = glmmTMB::beta_family())
parameters::parameters(m_conf, effects="fixed") |> 
  display()
Fixed Effects
| (Intercept) | 
0.21 | 
0.75 | 
(-1.27, 1.69) | 
0.28 | 
0.781 | 
| Belief (Real) | 
0.17 | 
0.16 | 
(-0.14, 0.48) | 
1.10 | 
0.271 | 
| Belief (Fake) x IPIP6 Extraversion | 
-0.10 | 
0.45 | 
(-0.98, 0.78) | 
-0.22 | 
0.824 | 
| Belief (Real) x IPIP6 Extraversion | 
-0.23 | 
0.45 | 
(-1.10, 0.65) | 
-0.51 | 
0.613 | 
| Belief (Fake) x IPIP6 Conscientiousness | 
-0.12 | 
0.46 | 
(-1.02, 0.78) | 
-0.27 | 
0.790 | 
| Belief (Real) x IPIP6 Conscientiousness | 
0.04 | 
0.46 | 
(-0.85, 0.94) | 
0.09 | 
0.927 | 
| Belief (Fake) x IPIP6 Neuroticism | 
0.25 | 
0.51 | 
(-0.75, 1.26) | 
0.49 | 
0.622 | 
| Belief (Real) x IPIP6 Neuroticism | 
0.38 | 
0.51 | 
(-0.62, 1.38) | 
0.74 | 
0.460 | 
| Belief (Fake) x IPIP6 Openness | 
0.76 | 
0.53 | 
(-0.28, 1.80) | 
1.43 | 
0.152 | 
| Belief (Real) x IPIP6 Openness | 
0.37 | 
0.53 | 
(-0.67, 1.40) | 
0.69 | 
0.488 | 
| Belief (Fake) x IPIP6 HonestyHumility | 
-1.16 | 
0.47 | 
(-2.09, -0.23) | 
-2.45 | 
0.014 | 
| Belief (Real) x IPIP6 HonestyHumility | 
-1.62 | 
0.47 | 
(-2.55, -0.70) | 
-3.43 | 
< .001 | 
| Belief (Fake) x IPIP6 Agreeableness | 
0.88 | 
0.56 | 
(-0.21, 1.98) | 
1.58 | 
0.114 | 
| Belief (Real) x IPIP6 Agreeableness | 
1.01 | 
0.56 | 
(-0.09, 2.10) | 
1.81 | 
0.071 | 
p_ipip <- plot_interindividual(m_real, m_conf, var = "IPIP6_HonestyHumility", fill = "#00BCD4") + labs(x = "Honesty-Humility")
p_ipip

sr <- c("Confidence_Fake", "Confidence_Real", "n_Real")
r <- make_correlation(dfsub[sr], select(dfsub, starts_with("IPIP")))
filter(r, BF > 1)
## # Correlation Matrix (pearson-method)
## 
## Parameter1      |            Parameter2 |   rho |         95% CI |       pd |               Prior |    BF | BF (Spearman)
## -------------------------------------------------------------------------------------------------------------------------
## Confidence_Real | IPIP6_HonestyHumility | -0.21 | [-0.37, -0.06] | 99.35%** | Beta (5.20 +- 5.20) | 9.41* |         6.32*
## Confidence_Fake |        IPIP6_Openness |  0.15 | [ 0.01,  0.31] |  97.70%* | Beta (5.20 +- 5.20) |  1.72 |          2.98
## Confidence_Fake | IPIP6_HonestyHumility | -0.15 | [-0.30,  0.02] |   96.10% | Beta (5.20 +- 5.20) |  1.38 |         0.683
## Confidence_Fake |    IPIP6_Extraversion |  0.14 | [-0.02,  0.30] |   95.97% | Beta (5.20 +- 5.20) |  1.14 |          1.53
## 
## Observations: 145
 
Narcissism
f <- paste0("(",paste(names(select(df, starts_with("FFNI"))), collapse = " + "), 
            ") + (1|Participant) + (1|Stimulus)")
m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", f)), data=df, family = "binomial")
parameters::parameters(m_real, effects="fixed", exponentiate = TRUE) |> 
  display()
Fixed Effects
| (Intercept) | 
1.23 | 
0.40 | 
(0.65, 2.33) | 
0.62 | 
0.533 | 
| FFNI AcclaimSeeking | 
2.24 | 
0.74 | 
(1.17, 4.27) | 
2.44 | 
0.015 | 
| FFNI Arrogance | 
1.08 | 
0.35 | 
(0.57, 2.05) | 
0.25 | 
0.803 | 
| FFNI Authoritativeness | 
1.01 | 
0.32 | 
(0.54, 1.86) | 
0.02 | 
0.986 | 
| FFNI Distrust | 
1.25 | 
0.35 | 
(0.72, 2.17) | 
0.78 | 
0.437 | 
| FFNI Entitlement | 
0.66 | 
0.22 | 
(0.34, 1.28) | 
-1.23 | 
0.219 | 
| FFNI Exhibitionism | 
1.00 | 
0.29 | 
(0.57, 1.76) | 
-6.20e-04 | 
> .999 | 
| FFNI Exploitativeness | 
1.14 | 
0.32 | 
(0.66, 1.98) | 
0.48 | 
0.634 | 
| FFNI GrandioseFantasies | 
0.87 | 
0.20 | 
(0.55, 1.38) | 
-0.58 | 
0.563 | 
| FFNI Indifference | 
0.86 | 
0.25 | 
(0.48, 1.54) | 
-0.50 | 
0.614 | 
| FFNI LackOfEmpathy | 
1.24 | 
0.39 | 
(0.67, 2.31) | 
0.68 | 
0.498 | 
| FFNI Manipulativeness | 
0.47 | 
0.15 | 
(0.25, 0.87) | 
-2.40 | 
0.017 | 
| FFNI NeedForAdmiration | 
0.86 | 
0.27 | 
(0.47, 1.59) | 
-0.47 | 
0.636 | 
| FFNI ReactiveAnger | 
1.40 | 
0.38 | 
(0.82, 2.37) | 
1.24 | 
0.217 | 
| FFNI Shame | 
0.71 | 
0.24 | 
(0.37, 1.38) | 
-1.00 | 
0.317 | 
| FFNI ThrillSeeking | 
1.04 | 
0.23 | 
(0.68, 1.60) | 
0.18 | 
0.855 | 
m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief / ", f)), 
                           data=df, 
                           family = glmmTMB::beta_family())
parameters::parameters(m_conf, effects="fixed") |> 
  display()
Fixed Effects
| (Intercept) | 
0.56 | 
0.53 | 
(-0.47, 1.59) | 
1.06 | 
0.289 | 
| Belief (Real) | 
-0.20 | 
0.12 | 
(-0.43, 0.02) | 
-1.74 | 
0.081 | 
| Belief (Fake) x FFNI AcclaimSeeking | 
1.62 | 
0.54 | 
(0.56, 2.68) | 
3.00 | 
0.003 | 
| Belief (Real) x FFNI AcclaimSeeking | 
1.65 | 
0.54 | 
(0.59, 2.70) | 
3.07 | 
0.002 | 
| Belief (Fake) x FFNI Arrogance | 
-0.41 | 
0.53 | 
(-1.45, 0.64) | 
-0.76 | 
0.447 | 
| Belief (Real) x FFNI Arrogance | 
-0.63 | 
0.53 | 
(-1.68, 0.41) | 
-1.20 | 
0.232 | 
| Belief (Fake) x FFNI Authoritativeness | 
-1.49 | 
0.51 | 
(-2.50, -0.48) | 
-2.89 | 
0.004 | 
| Belief (Real) x FFNI Authoritativeness | 
-1.57 | 
0.51 | 
(-2.58, -0.57) | 
-3.08 | 
0.002 | 
| Belief (Fake) x FFNI Distrust | 
-0.17 | 
0.46 | 
(-1.08, 0.74) | 
-0.36 | 
0.718 | 
| Belief (Real) x FFNI Distrust | 
0.26 | 
0.46 | 
(-0.65, 1.17) | 
0.56 | 
0.578 | 
| Belief (Fake) x FFNI Entitlement | 
0.11 | 
0.55 | 
(-0.97, 1.19) | 
0.20 | 
0.843 | 
| Belief (Real) x FFNI Entitlement | 
0.52 | 
0.55 | 
(-0.56, 1.59) | 
0.94 | 
0.346 | 
| Belief (Fake) x FFNI Exhibitionism | 
0.15 | 
0.47 | 
(-0.78, 1.08) | 
0.31 | 
0.754 | 
| Belief (Real) x FFNI Exhibitionism | 
0.04 | 
0.47 | 
(-0.88, 0.97) | 
0.09 | 
0.924 | 
| Belief (Fake) x FFNI Exploitativeness | 
-0.48 | 
0.46 | 
(-1.38, 0.42) | 
-1.04 | 
0.298 | 
| Belief (Real) x FFNI Exploitativeness | 
-0.22 | 
0.46 | 
(-1.12, 0.68) | 
-0.48 | 
0.631 | 
| Belief (Fake) x FFNI GrandioseFantasies | 
0.71 | 
0.38 | 
(-0.04, 1.46) | 
1.86 | 
0.064 | 
| Belief (Real) x FFNI GrandioseFantasies | 
0.59 | 
0.38 | 
(-0.16, 1.33) | 
1.54 | 
0.123 | 
| Belief (Fake) x FFNI Indifference | 
0.04 | 
0.48 | 
(-0.91, 0.98) | 
0.08 | 
0.939 | 
| Belief (Real) x FFNI Indifference | 
-0.32 | 
0.48 | 
(-1.26, 0.63) | 
-0.66 | 
0.512 | 
| Belief (Fake) x FFNI LackOfEmpathy | 
0.10 | 
0.52 | 
(-0.92, 1.12) | 
0.19 | 
0.849 | 
| Belief (Real) x FFNI LackOfEmpathy | 
0.06 | 
0.52 | 
(-0.96, 1.07) | 
0.11 | 
0.910 | 
| Belief (Fake) x FFNI Manipulativeness | 
0.50 | 
0.52 | 
(-0.52, 1.51) | 
0.96 | 
0.336 | 
| Belief (Real) x FFNI Manipulativeness | 
0.32 | 
0.51 | 
(-0.68, 1.33) | 
0.63 | 
0.528 | 
| Belief (Fake) x FFNI NeedForAdmiration | 
-0.35 | 
0.51 | 
(-1.36, 0.66) | 
-0.68 | 
0.496 | 
| Belief (Real) x FFNI NeedForAdmiration | 
-0.35 | 
0.51 | 
(-1.35, 0.65) | 
-0.69 | 
0.491 | 
| Belief (Fake) x FFNI ReactiveAnger | 
0.50 | 
0.44 | 
(-0.37, 1.36) | 
1.12 | 
0.262 | 
| Belief (Real) x FFNI ReactiveAnger | 
0.50 | 
0.44 | 
(-0.36, 1.36) | 
1.14 | 
0.256 | 
| Belief (Fake) x FFNI Shame | 
-0.37 | 
0.55 | 
(-1.46, 0.71) | 
-0.68 | 
0.499 | 
| Belief (Real) x FFNI Shame | 
-0.45 | 
0.55 | 
(-1.53, 0.63) | 
-0.82 | 
0.414 | 
| Belief (Fake) x FFNI ThrillSeeking | 
-0.56 | 
0.36 | 
(-1.27, 0.14) | 
-1.57 | 
0.117 | 
| Belief (Real) x FFNI ThrillSeeking | 
-0.41 | 
0.36 | 
(-1.11, 0.29) | 
-1.14 | 
0.253 | 
p_ffni1 <- plot_interindividual(m_real, m_conf, var = "FFNI_AcclaimSeeking", fill = "#FFC107") + labs(x = "Narcissism (Acclaim Seeking)")
p_ffni1

p_ffni2 <- plot_interindividual(m_real, m_conf, var = "FFNI_Authoritativeness", fill = "#FF5722") + labs(x = "Narcissism (Authoritativeness)")
p_ffni2

p_ffni3 <- plot_interindividual(m_real, m_conf, var = "FFNI_Manipulativeness", fill = "#FF9800") + labs(x = "Narcissism (Manipulativeness)")
p_ffni3

r <- make_correlation(dfsub[sr], select(dfsub, starts_with("FFNI_")))
filter(r, BF > 1)
## # Correlation Matrix (pearson-method)
## 
## Parameter1      |              Parameter2 |   rho |         95% CI |       pd |               Prior |    BF | BF (Spearman)
## ---------------------------------------------------------------------------------------------------------------------------
## Confidence_Real |     FFNI_AcclaimSeeking |  0.21 | [ 0.07,  0.36] | 99.70%** | Beta (5.20 +- 5.20) | 8.71* |       21.44**
## Confidence_Fake | FFNI_GrandioseFantasies |  0.20 | [ 0.03,  0.33] | 99.28%** | Beta (5.20 +- 5.20) | 5.72* |         3.73*
## Confidence_Fake |     FFNI_AcclaimSeeking |  0.19 | [ 0.04,  0.34] | 99.08%** | Beta (5.20 +- 5.20) | 3.86* |         4.39*
## Confidence_Real | FFNI_GrandioseFantasies |  0.18 | [ 0.03,  0.32] |  98.92%* | Beta (5.20 +- 5.20) | 3.25* |         4.15*
## n_Real          |   FFNI_Manipulativeness | -0.17 | [-0.32, -0.01] |  97.85%* | Beta (5.20 +- 5.20) |  2.14 |         0.985
## Confidence_Fake |   FFNI_Manipulativeness |  0.16 | [ 0.02,  0.32] |  98.00%* | Beta (5.20 +- 5.20) |  1.90 |          1.27
## 
## Observations: 145
cor_test(dfsub, "FFNI_Authoritativeness", "IPIP6_HonestyHumility")
## Parameter1             |            Parameter2 |     r |         95% CI | t(143) |         p
## --------------------------------------------------------------------------------------------
## FFNI_Authoritativeness | IPIP6_HonestyHumility | -0.35 | [-0.48, -0.20] |  -4.46 | < .001***
## 
## Observations: 145
# cor_test(dfsub, "FFNI_ThrillSeeking", "IPIP6_HonestyHumility")
 
Social Anxiety
f <- paste0("(",paste(names(select(df, starts_with("Social_"))), collapse = " + "), 
            ") + (1|Participant) + (1|Stimulus)")
m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", f)), data=df, family = "binomial")
parameters::parameters(m_real, effects="fixed", exponentiate = TRUE) |> 
  display()
Fixed Effects
| (Intercept) | 
1.27 | 
0.18 | 
(0.97, 1.67) | 
1.76 | 
0.079 | 
| Social Anxiety | 
1.53 | 
0.62 | 
(0.69, 3.41) | 
1.04 | 
0.299 | 
| Social Phobia | 
0.75 | 
0.27 | 
(0.37, 1.53) | 
-0.79 | 
0.428 | 
m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief / ", f)), 
                           data=df, 
                           family = glmmTMB::beta_family())
parameters::parameters(m_conf, effects="fixed") |> 
  display()
Fixed Effects
| (Intercept) | 
0.90 | 
0.21 | 
(0.49, 1.31) | 
4.30 | 
< .001 | 
| Belief (Real) | 
-0.22 | 
0.04 | 
(-0.30, -0.14) | 
-5.29 | 
< .001 | 
| Belief (Fake) × Social Anxiety | 
-1.12 | 
0.69 | 
(-2.47, 0.23) | 
-1.63 | 
0.104 | 
| Belief (Real) × Social Anxiety | 
-0.74 | 
0.69 | 
(-2.09, 0.60) | 
-1.08 | 
0.279 | 
| Belief (Fake) × Social Phobia | 
0.93 | 
0.61 | 
(-0.27, 2.13) | 
1.52 | 
0.127 | 
| Belief (Real) × Social Phobia | 
0.70 | 
0.61 | 
(-0.49, 1.90) | 
1.15 | 
0.249 | 
# p_social <- plot_interindividual(m_real, m_conf, var = "Social_Phobia", fill = "#E040FB") + labs(x = "Social Phobia")
# p_social 
r <- make_correlation(dfsub[sr], select(dfsub, starts_with("Social_")))
filter(r, BF > 1)
 
Intolerance to Uncertainty
f <- paste0("(",paste(names(select(df, starts_with("IUS_"))), collapse = " + "), 
            ") + (1|Participant) + (1|Stimulus)")
m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", f)), data=df, family = "binomial")
parameters::parameters(m_real, effects="fixed", exponentiate = TRUE) |> 
  display()
Fixed Effects
| (Intercept) | 
1.56 | 
0.35 | 
(1.00, 2.44) | 
1.97 | 
0.049 | 
| IUS ProspectiveAnxiety | 
0.95 | 
0.39 | 
(0.43, 2.12) | 
-0.12 | 
0.906 | 
| IUS InhibitoryAnxiety | 
0.77 | 
0.24 | 
(0.42, 1.41) | 
-0.85 | 
0.397 | 
m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief / ", f)), 
                           data=df, 
                           family = glmmTMB::beta_family())
parameters::parameters(m_conf, effects="fixed") |> 
  display()
Fixed Effects
| (Intercept) | 
0.52 | 
0.37 | 
(-0.20, 1.23) | 
1.41 | 
0.157 | 
| Belief (Real) | 
-0.30 | 
0.08 | 
(-0.45, -0.15) | 
-3.88 | 
< .001 | 
| Belief (Fake) x IUS ProspectiveAnxiety | 
1.16 | 
0.68 | 
(-0.18, 2.49) | 
1.70 | 
0.090 | 
| Belief (Real) x IUS ProspectiveAnxiety | 
1.43 | 
0.68 | 
(0.10, 2.76) | 
2.10 | 
0.036 | 
| Belief (Fake) x IUS InhibitoryAnxiety | 
-0.91 | 
0.52 | 
(-1.93, 0.11) | 
-1.75 | 
0.081 | 
| Belief (Real) x IUS InhibitoryAnxiety | 
-1.00 | 
0.52 | 
(-2.01, 0.02) | 
-1.93 | 
0.054 | 
r <- make_correlation(dfsub[sr], select(dfsub, starts_with("IUS_")))
filter(r, BF > 1)
 
Paranoid Beliefs
f <- paste0("(",paste(names(select(df, starts_with("GPTS_"))), collapse = " + "), 
            ") + (1|Participant) + (1|Stimulus)")
m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", f)), data=df, family = "binomial")
parameters::parameters(m_real, effects="fixed", exponentiate = TRUE) |> 
  display()
Fixed Effects
| (Intercept) | 
1.45 | 
0.18 | 
(1.14, 1.84) | 
3.00 | 
0.003 | 
| GPTS Reference | 
0.51 | 
0.18 | 
(0.25, 1.04) | 
-1.86 | 
0.062 | 
| GPTS Persecution | 
1.87 | 
0.61 | 
(0.99, 3.54) | 
1.93 | 
0.054 | 
m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief / ", f)), 
                           data=df, 
                           family = glmmTMB::beta_family())
parameters::parameters(m_conf, effects="fixed") |> 
  display()
Fixed Effects
| (Intercept) | 
1.07 | 
0.18 | 
(0.71, 1.43) | 
5.85 | 
< .001 | 
| Belief (Real) | 
-0.21 | 
0.04 | 
(-0.29, -0.14) | 
-5.63 | 
< .001 | 
| Belief (Fake) x GPTS Reference | 
-0.99 | 
0.61 | 
(-2.18, 0.20) | 
-1.63 | 
0.104 | 
| Belief (Real) x GPTS Reference | 
-1.07 | 
0.61 | 
(-2.26, 0.12) | 
-1.76 | 
0.079 | 
| Belief (Fake) x GPTS Persecution | 
0.47 | 
0.55 | 
(-0.62, 1.55) | 
0.84 | 
0.400 | 
| Belief (Real) x GPTS Persecution | 
0.75 | 
0.55 | 
(-0.33, 1.83) | 
1.37 | 
0.171 | 
p_gpts1 <- plot_interindividual(m_real, m_conf, var = "GPTS_Persecution", fill = "#673AB7") + labs(x = "Paranoid Thoughts (Persecution)")
p_gpts1

r <- make_correlation(dfsub[sr], select(dfsub, starts_with("GPTS_")))
filter(r, BF > 1)
 
AI
rez <- parameters::n_factors(select(dfsub, starts_with("AI")))
plot(rez)

efa <- parameters::factor_analysis(select(dfsub, starts_with("AI")), n = 3, rotation = "varimax", sort = TRUE)
efa
## # Rotated loadings from Factor Analysis (varimax-rotation)
## 
## Variable              |  MR1  |  MR2  |  MR3  | Complexity | Uniqueness
## -----------------------------------------------------------------------
## AI_8_Exciting         | 0.82  | 0.16  | 0.18  |    1.18    |    0.27   
## AI_4_DailyLife        | 0.77  | 0.15  | 0.16  |    1.17    |    0.36   
## AI_9_Applications     | 0.71  | 0.06  | 0.12  |    1.07    |    0.47   
## AI_7_RealisticVideos  | 0.09  | 0.79  | 0.11  |    1.07    |    0.35   
## AI_5_ImitatingReality | 0.28  | 0.64  | 0.03  |    1.37    |    0.51   
## AI_1_RealisticImages  | 0.19  | 0.54  | 0.09  |    1.31    |    0.67   
## AI_3_VideosReal       | -0.13 | 0.41  | -0.20 |    1.69    |    0.77   
## AI_2_Unethical        | 0.20  | 0.07  | 0.72  |    1.17    |    0.44   
## AI_6_Dangerous        | 0.15  | -0.12 | 0.61  |    1.20    |    0.59   
## AI_10_FaceErrors      | 0.02  | 0.04  | 0.24  |    1.07    |    0.94   
## 
## The 3 latent factors (varimax rotation) accounted for 46.36% of the total variance of the original data (MR1 = 19.68%, MR2 = 15.76%, MR3 = 10.92%).
dfsub <- predict(efa, names = c("AI_Enthusiasm", "AI_Realness", "AI_Danger")) |>
  cbind(dfsub)
df <- predict(efa, newdata=df, names = c("AI_Enthusiasm", "AI_Realness", "AI_Danger")) |> 
  cbind(df)
f <- paste0("(AI_Enthusiasm + AI_Realness + AI_Danger) + (1|Participant) + (1|Stimulus)")
m_real <- glmmTMB::glmmTMB(as.formula(paste0("Belief ~ ", f)), data=df, family = "binomial")
parameters::parameters(m_real, effects="fixed", exponentiate = TRUE) |> 
  display()
Fixed Effects
| (Intercept) | 
1.34 | 
0.11 | 
(1.15, 1.57) | 
3.68 | 
< .001 | 
| AI Enthusiasm | 
0.98 | 
0.06 | 
(0.87, 1.10) | 
-0.41 | 
0.682 | 
| AI Realness | 
1.06 | 
0.06 | 
(0.94, 1.19) | 
0.93 | 
0.351 | 
| AI Danger | 
1.11 | 
0.07 | 
(0.98, 1.27) | 
1.63 | 
0.103 | 
m_conf <- glmmTMB::glmmTMB(as.formula(paste0("Belief_Confidence ~ Belief / ", f)), 
                           data=df, 
                           family = glmmTMB::beta_family())
parameters::parameters(m_conf, effects="fixed") |> 
  display()
Fixed Effects
| (Intercept) | 
0.83 | 
0.09 | 
(0.66, 1.01) | 
9.54 | 
< .001 | 
| Belief (Real) | 
-0.16 | 
0.02 | 
(-0.20, -0.13) | 
-8.90 | 
< .001 | 
| Belief (Fake) × AI Enthusiasm | 
0.31 | 
0.10 | 
(0.12, 0.50) | 
3.23 | 
0.001 | 
| Belief (Real) × AI Enthusiasm | 
0.21 | 
0.10 | 
(0.02, 0.40) | 
2.20 | 
0.028 | 
| Belief (Fake) × AI Realness | 
0.10 | 
0.10 | 
(-0.10, 0.30) | 
1.01 | 
0.313 | 
| Belief (Real) × AI Realness | 
0.14 | 
0.10 | 
(-0.06, 0.33) | 
1.36 | 
0.174 | 
| Belief (Fake) × AI Danger | 
-0.09 | 
0.11 | 
(-0.30, 0.13) | 
-0.79 | 
0.431 | 
| Belief (Real) × AI Danger | 
0.04 | 
0.11 | 
(-0.17, 0.25) | 
0.38 | 
0.707 | 
p_ai <- plot_interindividual(m_real, m_conf, var = "AI_Enthusiasm", fill = "#607D8B") + 
  labs(x = "Enthusiasm about AI technology")
p_ai 

r <- make_correlation(dfsub[sr], select(dfsub, AI_Enthusiasm, AI_Realness, AI_Danger))
filter(r, BF > 1)
## # Correlation Matrix (pearson-method)
## 
## Parameter1      |    Parameter2 |  rho |        95% CI |       pd |               Prior |      BF | BF (Spearman)
## -----------------------------------------------------------------------------------------------------------------
## Confidence_Fake | AI_Enthusiasm | 0.22 | [ 0.06, 0.36] | 99.70%** | Beta (5.20 +- 5.20) | 12.32** |       17.75**
## Confidence_Real | AI_Enthusiasm | 0.18 | [ 0.02, 0.33] |  98.52%* | Beta (5.20 +- 5.20) |    2.83 |          2.82
## Confidence_Fake |   AI_Realness | 0.15 | [ 0.00, 0.30] |  97.15%* | Beta (5.20 +- 5.20) |    1.44 |          2.21
## 
## Observations: 145
 
 
Figures
fig1a <- (rez_at$p +
  theme(axis.text.x = element_blank()) +
  labs(x = "Attractiveness") |
  rez_gl$p +
    labs(x = "Beauty") +
    theme(
      axis.text.x = element_blank(),
      axis.title.y = element_blank(),
      axis.text.y = element_blank()
    )
) /
  (rez_tr$p +
    labs(x = "Trustworthiness") |
    rez_fa$p +
      labs(x = "Familiarity") +
      theme(
        axis.text.y = element_blank(),
        axis.title.y = element_blank()
      )
  ) +
  plot_annotation(title = "Determinants of Reality Beliefs", theme = theme(plot.title = element_text(face = "bold", hjust = 0.5))) +
  plot_layout(guides = "collect") &
  theme(legend.title = element_text(face = "bold"))
fig <- wrap_elements(fig1a) /
  wrap_elements(
    # ((p_ffni1 / p_ipip) | (p_ffni2 / p_social) | (p_ffni3 / p_ai)) + 
    ((p_ffni1 / p_ipip) | (p_ffni3 / p_gpts1) | (p_ffni2 / p_ai)) +
  plot_layout(guides = "collect") +
  plot_annotation(title = "Personality Correlates of Simulation Monitoring Tendencies", theme = theme(plot.title = element_text(face = "bold", hjust = 0.5))) &
  theme(legend.title = element_text(face = "bold")) 
  ) +
  plot_layout(heights = c(1.1, 0.9)) 
ggsave("figures/Figure2.png", width=fig.height * 1.8, height=fig.width * 1.5)
plot_correlation <- function(dfsub, x = "Confidence_Real", y = "IPIP6_Openness", xlab = x, ylab = y, fill = "grey", fillx = "purple") {
  param <- cor_test(dfsub, x, y, bayesian = TRUE)
  # Format stat output
  r <- str_replace(str_remove(insight::format_value(param$rho), "^0+"), "^-0+", "-")
  CI_low <- str_replace(str_remove(insight::format_value(param$CI_low), "^0+"), "^-0+", "-")
  CI_high <- str_replace(str_remove(insight::format_value(param$CI_high), "^0+"), "^-0+", "-")
  stat <- paste0("italic(r)~'= ", r, ", 95% CI [", CI_low, ", ", CI_high, "], BF'['10']~'", paste0(insight::format_bf(param$BF, name = "")), "'")
  label <- data.frame(
    x = min(dfsub[[x]], na.rm = TRUE),
    y = max(dfsub[[y]], na.rm = TRUE),
    label = stat
  )
  # Plot
  dfsub |>
    ggplot(aes_string(x = x, y = y)) +
    geom_point2(
      size = 3,
      color = fillx,
      # color = DVs[x],
      alpha = 2 / 3
    ) +
    geom_smooth(method = "lm", color = "black", formula = "y ~ x", alpha = 0.3) +
    labs(y = ylab, x = xlab) +
    geom_label(data = label, aes(x = x, y = y), label = str2expression(label$label), hjust = 0, vjust = 1, size=rel(3.5)) +
    theme_modern(axis.title.space = 5) +
    ggside::geom_xsidedensity(fill = fillx, color = "white") +
    ggside::geom_ysidedensity(fill = fill, color = "white") +
    ggside::theme_ggside_void() +
    ggside::scale_ysidex_continuous(expand = c(0, 0)) +
    ggside::scale_xsidey_continuous(expand = c(0, 0))
}
p1 <- plot_correlation(dfsub,
  x = "IPIP6_HonestyHumility",
  y = "Confidence_Real",
  ylab = "Confidence that the stimulus is real",
  xlab = "Honesty-Humility",
  fillx = "#00BCD4",
  fill = "#D81B60"
) + 
  scale_y_continuous(labels=scales::percent)
p2 <- plot_correlation(dfsub,
  y = "Confidence_Fake",
  x = "AI_Enthusiasm",
  ylab = "Confidence that the stimulus is fake",
  xlab = "Enthusiasm about AI technology",
  fillx = "#607D8B",
  fill = "#3F51B5"
) + 
  scale_y_continuous(labels=scales::percent)
p3 <- plot_correlation(dfsub,
  y = "Confidence_Real",
  x = "AI_Enthusiasm",
  ylab = "Confidence that the stimulus is real",
  xlab = "Enthusiasm about AI technology",
  fillx = "#607D8B",
  fill = "#D81B60"
) + 
  scale_y_continuous(labels=scales::percent)
p4 <- plot_correlation(dfsub,
  y = "Confidence_Real",
  x = "FFNI_AcclaimSeeking",
  ylab = "Confidence that the stimulus is real",
  xlab = "Narcissism (Acclaim Seeking)",
  fillx = "#FF9800",
  fill = "#D81B60"
) + 
  scale_y_continuous(labels=scales::percent)
p5 <- plot_correlation(dfsub,
  y = "Confidence_Fake",
  x = "FFNI_AcclaimSeeking",
  ylab = "Confidence that the stimulus is fake",
  xlab = "Narcissism (Acclaim Seeking)",
  fillx = "#FF9800",
  fill = "#3F51B5"
) + 
  scale_y_continuous(labels=scales::percent)
p6 <- plot_correlation(dfsub,
  y = "Confidence_Real",
  x = "FFNI_GrandioseFantasies",
  ylab = "Confidence that the stimulus is real",
  xlab = "Narcissism (Grandiose Fantasies)",
  fillx = "#FFC107",
  fill = "#D81B60"
) + 
  scale_y_continuous(labels=scales::percent)
fig <- wrap_elements(fig1a) /
  wrap_elements(
    ((p3 / p2) | (p1 / p6) | (p4 / p5)) + 
  plot_annotation(title = "Personality Correlates of Simulation Monitoring", theme = theme(plot.title = element_text(face = "bold", hjust = 0.5)))
  ) +
  plot_layout(heights = c(1.1, 0.9))
ggsave("figures/Figure2.png", width=fig.height * 1.8, height=fig.width * 1.5)
 
Social Anxiety