Code
library(tidyverse)
library(easystats)
library(patchwork)Study 2
library(tidyverse)
library(easystats)
library(patchwork)library(gt)
# APA style ####
gt_apastyle <- function(gt_table, font.size=12) {
gt_table |>
gt::opt_table_lines(extent = "none") %>%
gt::tab_options(
heading.border.bottom.width = 2,
heading.border.bottom.color = "black",
heading.border.bottom.style = "solid",
table.border.top.color = "black",
table.border.top.style = "solid",
table.border.top.width = 2,
table_body.hlines.color = "white",
table_body.border.top.color = "black",
table_body.border.top.style = "solid",
table_body.border.top.width = 2,
heading.title.font.size = font.size,
table.font.size = font.size,
heading.subtitle.font.size = font.size,
table_body.border.bottom.color = "black",
table_body.border.bottom.width = 2,
table_body.border.bottom.style = "solid",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.style = "solid",
column_labels.border.bottom.width = 1,
latex.use_longtable = FALSE
) |>
gt::opt_table_font(font = "times")
}
table <- data.frame(
Questionnaire = c(
# Interoception
"Interoceptive Related", "MAIA-2", "BPQ-SF", "BPQ-VSF", "ICQ", "TAS-20", "BVAQ",
# Mood/Anxiety
"Mood", "BDI-II", "PHQ-4", "PHQ-9", "PHQ-15", "MFQ", "STAI-T", "GAD-7",
# Personality
"Personality", "NEO-FFI (neuroticism subscale)", "Mini IPIP6", "BFI-S",
# Psychopathology
"Psychopathology", "PID-5-SFF", "SPQ-BR", "MSI-BPD", "ASQ - Short",
# Beliefs and Misbeliefs
"Beliefs and Misbeliefs", "GCBS", "PI-18", "LIE scale"
),
Number_of_Dimensions = c(
"", 8, 2, 1, 3, 3, 5,
"", 2, 2, 1, 1, 1, 1, 1,
"", 1, 6, 5,
"", 5, 9, 1, 5,
"", 5, 3, 4
),
Assessment = c(
"", "Interoceptive awareness", "Body awareness and autonomic reactivity", "Body awareness", "Interoceptive confusion", "Alexithymia", "Alexithymia",
"", "Depressive symptoms severity", "Depression and Anxiety", "Depressive symptoms", "Somatic symptom distress", "Mood and affect", "Trait anxiety", "General anxiety disorder symptoms",
"", "Neuroticism", "Personality traits", "Personality traits",
"", "Maladaptive personality traits", "Schizotypy", "Borderline personality disorder", "Autistic traits",
"", "Conspiracy beliefs", "Primal world beliefs", "Lying tendencies"
),
Number_of_Items = c(
"", 37, 46, 12, 20, 20, 40,
"", 21, 4, 9, 15, 13, 20, 7,
"", 12, 24, 10,
"", 25, 32, 9, 28,
"", 15, 18, 16
),
Scoring = c(
"", "6-point Likert scale", "5-point Likert scale", "5-point Likert scale", "5-point Likert scale", "5-point Likert scale", "5-point Likert scale",
"", "4-point scale", "4-point Likert scale", "4-point Likert scale", "3-point scale", "3-point scale", "4-point Likert scale", "4-point Likert scale",
"", "5-point Likert scale", "Visual analogue scales", "7-point Likert scale",
"", "4-point Likert scale", "5-point Likert scale", "Dichotomous (yes/no)", "4-point Likert scale",
"", "5-point Likert scale", "5-point Likert scale", "Visual analogue scales"
),
Example_Items = c(
# Interoception
"", "I notice when I am uncomfortable in my body", "My heart often beats irregularily", "My mouth being dry", " I cannot tell when my muscles are sore or tight", "I have feelings I can't quite identify", "I like to tell others how I feel",
#Mood
"", "I feel sad much of the time","Little interest or pleasure in doing things", "Feeling tired or having little energy?", "Over the last week, how often have you been bothered by back pain?", "I felt miserable or unhappy", "I worry too much about something that really doesn't matter", "Not being able to stop or control worrying",
# Personality
"", "I often feel inferior to others", "Am the life of the party", "I see myself as someone who ...is considerate and kind to almost everyone",
# Psychopathology
"", "Plenty of people are out to get me", "I am an odd, unusual person", "Have any of your closest relationships been troubled by a lot of arguments or repeated breakups?", "I find it difficult to work out people’s intentions",
# Beliefs and Misbeliefs
"", "Secret organizations communicate with extraterrestrials, but keep this fact from the public", "Nearly everything in the world is beautiful", "I am a good liar"
),
stringsAsFactors = FALSE
)
table_apa <- table |>
gt() |>
cols_align(align = c("right"), columns = "Scoring") |>
cols_label(Number_of_Dimensions = "Number of Dimensions", Number_of_Items = "Number of Items", Example_Items = "Example Items") |>
# tab_footnote("* Information taken from the sample description of relevant paper rather than recomputed.")
tab_style( style = list(cell_text(weight = "bold")), locations = cells_body(columns = Questionnaire, rows = Questionnaire %in% c("Interoceptive Related", "Mood", "Personality", "Psychopathology", "Beliefs and Misbeliefs")))
gt_apastyle(table_apa, font.size=12)
gtsave(gt_apastyle(table_apa, font.size=9), "figures/table2.tex")
saveRDS(table, "figures/table2.rds")load("../data/data.RData")
load("../data/scores.RData")
df1a <- cbind(data$df1a, scores$sample1a)
df1b <- cbind(data$df1b, scores$sample1b)
df2 <- cbind(data$df2, scores$sample2)
df3 <- cbind(data$df3, scores$sample3)
df4 <- cbind(data$df4, scores$sample4)
df5 <- cbind(data$df5, scores$sample5)
df6 <- cbind(data$df6, scores$sample6)
df7a <- cbind(data$df7a, scores$sample7a)
df7b <- cbind(data$df7b, scores$sample7b)
df7c <- cbind(data$df7c, scores$sample7c)
df8a <- cbind(data$df8a, scores$sample8a)
df8b <- cbind(data$df8b, scores$sample8b)
df9 <- cbind(data$df9, scores$sample9)
df10 <- cbind(data$df10, scores$sample10)
df11 <- cbind(data$df11, scores$sample11)
df12 <- cbind(data$df12, scores$sample12)
df13 <- cbind(data$df13, scores$sample13)
df14 <- cbind(data$df14, scores$sample14)
df15 <- cbind(data$df15, scores$sample15)
df16 <- cbind(data$df16, scores$sample16)
vars_intero <- names(select(scores$sample1a, -Sample))
# names(df1a)
# names(df1b)
# names(df2) #TAS(20 items), MAIA(37 items), ICQ (20 items), BPQ(46 items), BVAQ (40 items)
# names(df3) # TAS (20), BPQ (46)
# names(df4) # BPQ(26), PBCS (private bodily consciousness?), MAIA (37), BAQ (18), BRS (4)
# names(df5)
# names(df6) # PHQ2 (2 items), GAD2 (2 items), SSS8, IATS
# names(df7a) # STAIT (20), MAIA(37), CES (not reported in the paper), FFMQ (39), NEOFFI (12)
# names(df7b) # BPQ (12), PHQ15 (15), PHQ9 (9), MAIA (37), STAIT(20),
# names(df7c) # CI01 (not reported in the paper), TAS, BPQ, MAIA, ASI, ICQ - no individual items
# names(df8a) # EDI (10), BPQ (12)
# names(df8b) # PHQ9 (9), PHQ15 (15), TAS (20)
# names(df9) # ECR (Experience in Close Relationship Scale), TEAQ (touch experiences and attitudes questionnaire), STQ, TACSEN, UCLA, BFI (15), DBIA, BO, EQ
# names(df10) # ASQ(28), BPD(9), GCBS (15), IPIP6 (24), LIE (16), MAIA(37), PHQ4 (4), PI (32), PID (25), SPQ (32)
# names(df11) # PHQ4 (4), STAIT5 (5), BDI (21), MAIA (37)
# names(df12) # MAIA (37), PI (99),
# names(df13) # PI (18), MAIA (37)
# names(df14) # MAIA(37), TAS (20), MFQ(DEP, 13), STAI(ANX, 20)
# names(df15)
# names(df16) # MAIA (37), GAD (7), PHQ9 (9)
alldata <- list(df1a=df1a, df1b=df1b, df2=df2, df3=df3, df4=df4,
df5=df5, df6=df6, df7a=df7a, df7b=df7b, df7c=df7c,
df8a=df8a, df8b=df8b, df9=df9, df10=df10, df11=df11,
df12=df12, df14=df14, df15=df15, df16=df16)pool_coef <- function(with = "Age", component = "Demographic", category = "Demographic", name = with, unequalrange=FALSE) {
rez <- data.frame()
for(intero in vars_intero) {
data <- data.frame()
for(dataset in alldata) {
if (with %in% names(dataset)) {
d <- dataset[c(with, intero, "Sample")]
data <- rbind(data, d)
}
}
# Make sure that min-max of "with" is the equal across all samples
check <- summarize(data,
min = min(!!sym(with), na.rm = TRUE),
max = max(!!sym(with), na.rm = TRUE), .by = "Sample")
if (with != "Gender" && (any(check$min != min(check$min)) || any(check$max != max(check$max)))) {
if(unequalrange == FALSE) {
print(check)
stop(paste0("The range of '", with, "' is not equal across samples."))
}
}
data <- standardize(data[complete.cases(data), ])
if (with == "Gender") {
data <- data[data$Gender != "Other",]
data$Gender <- factor(data$Gender, levels = c("Male", "Female"))
f <- as.formula(paste0(intero, "~", with, " + (", with, "|Sample)"))
f2 <- as.formula(paste0(intero, "~", with, " + (1|Sample)"))
f3 <- as.formula(paste0(intero, "~ Sample * ", with))
} else {
f <- as.formula(paste0(intero, "~", with, " + (", with, "|Sample)"))
f2 <- as.formula(paste0(intero, "~", with, " + (1|Sample)"))
f3 <- as.formula(paste0(intero, "~ Sample / ", with))
}
# Mixed models
control1 <- glmmTMB::glmmTMBControl()
control2 <- glmmTMB::glmmTMBControl(optimizer=optim, optArgs=list(method="BFGS"))
m <- glmmTMB::glmmTMB(f, data = data, control=control1)
type <- "Full"
if(!insight::is_converged(m) || is.nan(insight::get_statistic(m)$Statistic[2])) {
m <- glmmTMB::glmmTMB(f, data = data, control=control2)
type <- "Full"
}
if(!insight::is_converged(m) || is.nan(insight::get_statistic(m)$Statistic[2])) {
m <- glmmTMB::glmmTMB(f2, data = data, control=control1)
type <- "Reduced"
}
if(!insight::is_converged(m) || is.nan(insight::get_statistic(m)$Statistic[2])) {
m <- glmmTMB::glmmTMB(f2, data = data, control=control2)
type <- "Reduced"
}
# # Marginal
# m <- lm(f3, data = data)
# modelbased::estimate_slopes(m, trend = with)
out <- parameters::parameters(m)[2, ] |>
select(r = Coefficient, CI_low, CI_high, p) |>
as.data.frame()
out$var_Interoception <- intero
out$var_Correlate <- with
out$Category <- category
out$Component <- component
out$Type <- type
out$Converged <- insight::is_converged(m)
out$N <- nrow(data)
rez <- rbind(rez, out)
}
rez$var_Correlate <- name
rez
}
check_ranges <- function(var = "Neuroticism") {
for(d in names(alldata)) {
dataset <- alldata[[d]]
if(!var %in% names(dataset)) next
print(paste0(d, ": ", paste(round(range(dataset[[var]], na.rm=TRUE), 2), collapse = "-")))
}
}
data <- pool_coef(with = "Gender", component = "Demographic", category = "General", name = "Gender (Female - Male)")# check_ranges("Age")
data <- rbind(data, pool_coef(with = "Age", component = "Demographic", category = "General", unequalrange=TRUE))# names(df7a)[str_detect(names(df7a), "NEO")]
# names(df9)[str_detect(names(df9), "BFI_")]
# names(df10)[str_detect(names(df10), "IPIP6_")]
# check_ranges("Neuroticism")
# check_ranges("Agreeableness")
# check_ranges("Conscientiousness")
# check_ranges("HonestyHumility")
data <- rbind(
data,
pool_coef(with = "Neuroticism", component = "Personality", category = "General", name = "Neuroticism", unequalrange=TRUE),
pool_coef(with = "Agreeableness", component="Personality", category = "General", name = "Agreeableness",unequalrange=TRUE),
pool_coef(with = "Conscientiousness", component="Personality", category = "General", name = "Conscientiousness",unequalrange=TRUE),
pool_coef(with = "Openness", component="Personality", category = "General", name = "Openness",unequalrange=TRUE),
pool_coef(with = "Extraversion", component="Personality", category = "General", name = "Extraversion", unequalrange=TRUE),
pool_coef(with = "HonestyHumility", component="Personality", category = "General", name = "Honesty-Humility", unequalrange=TRUE)
)# names(df2)[str_detect(names(df2), "MAIA")]
# names(df4)[str_detect(names(df4), "MAIA")] # individual items
# names(df7a)[str_detect(names(df7a), "MAIA")]
# names(df7b)[str_detect(names(df7b), "maia")]
# names(df7c)[str_detect(names(df7c), "MAIA")]
# names(df10)[str_detect(names(df10), "MAIA")]
# names(df11)[str_detect(names(df11), "MAIA2")] # all columns with NA values
# names(df12)[str_detect(names(df12), "MAIA")]
# names(df14)[str_detect(names(df15), "MAIA")]
data <- rbind(
data,
pool_coef(with = "MAIA_AttentionReg", component = "MAIA", category = "Interoception", name = "Attention Regulation - MAIA", unequalrange=TRUE),
pool_coef(with = "MAIA_BodyListening", component = "MAIA", category = "Interoception", name = "Listening - MAIA", unequalrange=TRUE),
pool_coef(with = "MAIA_Trusting", component = "MAIA", category = "Interoception", name = "Trusting - MAIA", unequalrange=TRUE),
pool_coef(with = "MAIA_EmoAwareness", component = "MAIA", category = "Interoception", name = "Emotional Awareness - MAIA", unequalrange=TRUE),
pool_coef(with = "MAIA_NotDistracting", component = "MAIA", category = "Interoception", name = "Not Distracting - MAIA", unequalrange=TRUE),
pool_coef(with = "MAIA_Noticing", component = "MAIA", category = "Interoception", name = "Noticing - MAIA", unequalrange=TRUE),
pool_coef(with = "MAIA_NotWorrying", component = "MAIA", category = "Interoception", name = "Not Worrying - MAIA", unequalrange=TRUE),
pool_coef(with = "MAIA_SelfReg", component = "MAIA", category = "Interoception", name = "Self Regulation - MAIA", unequalrange=TRUE)
)# df3$BPQ_BodyAwareness <- -1*normalize(df3$BPQ_BodyAwareness)
# df3$BPQ_AutonomicReactivity <- -1*normalize(df3$BPQ_AutonomicReactivity)
# names(df2)[str_detect(names(df2), "BPQ")] # BPQ_R_Supra and _Sub?
# names(df3)[str_detect(names(df3), "BPQ")]
# names(df4)[str_detect(names(df4), "BPQ")] # individual items 1-26
# names(df7b)[str_detect(names(df7b), "BPQ")] # BPQ sum
# names(df8a)[str_detect(names(df8a), "BPQ")] # individual items
data <- rbind(
data,
pool_coef(with = "BPQ_BodyAwareness", component="Interoception", category = "Interoception", name = "Body Awareness - BPQ",unequalrange=TRUE),
pool_coef(with = "BPQ_AutonomicReactivity", component="Interoception", category = "Interoception", name = "Autonomic Reactivity - BPQ",unequalrange=TRUE)
)# names(df2)[str_detect(names(df2), "ICQ")]
# names(df7c)[str_detect(names(df7c), "ICQ")]
data <- rbind(data, pool_coef(with = "ICQ", component="Interoception", category = "Interoception", name = "Interoceptive Confusion - ICQ", unequalrange=TRUE))# only one study assess alexithymia with BVAQ (df2)
# names(df2)[str_detect(names(df2), "TAS", "BVAQ)]
# names(df3)[str_starts(names(df3), "TAS")]
# names(df7c)[str_starts(names(df7c), "TAS")]
# names(df8b)[str_starts(names(df8b), "TAS")]
# names(df14)[str_starts(names(df14), "TAS")]
data <- rbind(
data,
pool_coef(with = "TAS_DIF", component="Interoception", category = "Interoception", name = "Difficulties Identifying Feelings - TAS", unequalrange=TRUE),
pool_coef(with = "TAS_DDF", component="Interoception", category = "Interoception", name = "Difficulties Describing Feelings - TAS", unequalrange=TRUE),
pool_coef(with = "TAS_EOT", component="Interoception", category = "Interoception", name = "External Thinking - TAS",unequalrange=TRUE),
pool_coef(with = "BVAQ_Affective", component="Interoception", category = "Interoception", name = "Affective - BVAQ"),
pool_coef(with = "BVAQ_Cognitive", component="Interoception", category = "Interoception", name = "Cognitive - BVAQ")
)# names(df6)[str_detect(names(df6), "PHQ")]
# names(df7b)[str_detect(names(df7b), "PHQ")]
# names(df7c)[str_detect(names(df7c), "BDI")]
# names(df8b)[str_detect(names(df8b), "PHQ")]
# names(df9)
# names(df14)
check_ranges("PHQ15_Sum")[1] "df7b: 0-2"
[1] "df8b: 0-1.33"
check_ranges("PHQ9_Sum")[1] "df7b: 0-2.78"
[1] "df8b: 0-2.67"
[1] "df16: 0-3"
check_ranges("BDI_Sum")[1] "df11: 0-59"
check_ranges("PHQ4_Depression")[1] "df6: 2-8"
[1] "df10: 2-8"
[1] "df11: 2-8"
check_ranges("DEP")[1] "df14: 13-38"
data <- rbind(
data,
pool_coef(with = "PHQ15_Sum", component="Depression", category = "Mood", name = "Somatic Concerns - PHQ-15",unequalrange=TRUE),
pool_coef(with = "PHQ9_Sum", component="Depression", category = "Mood", name = "Depression - PHQ-9", unequalrange=TRUE),
pool_coef(with = "BDI_Sum", component="Depression", category = "Mood", name = "Depression - BDI"),
pool_coef(with = "PHQ4_Depression", component="Depression", category = "Mood", name = "Depression - PHQ-4"),
pool_coef(with = "DEP", component = "Depression", category = "Mood", name = "Depression - MFQ")
)# names(df6)[str_detect(names(df6), "GAD")]
# names(df7a)[str_detect(names(df7a), "STAI")]
# names(df7b)[str_detect(names(df7b), "STAI")]
# names(df7c)[str_detect(names(df7c), "STAI")]
# names(df10)[]
# names(df11)[str_detect(names(df11), "STAI")]
# names(df14)[str_detect(names(df14), "ANX")] # anx = stai-t
# check_ranges("STAIT_Mean")
# check_ranges("PHQ4_Anxiety")
# check_ranges("GAD7_Sum")
data <- rbind(
data,
pool_coef(with = "STAIT_Mean", component="Anxiety", category = "Mood", name = "Anxiety - STAI-T", unequalrange=TRUE),
pool_coef(with = "PHQ4_Anxiety", component="Anxiety", category = "Mood", name = "Anxiety - PHQ-4"),
pool_coef(with = "GAD7_Sum", component="Anxiety", category = "Mood", name = "Anxiety - GAD-7")
)# check_ranges("BPD")
data <- rbind(
data,
pool_coef(with = "BPD", component="Maladaptive", category = "Psychopathology", name = "Boderline Personality")
)# check_ranges("PID5_Antagonism")
data <- rbind(
data,
pool_coef(with = "PID5_Antagonism", component="Maladaptive", category = "Psychopathology", name = "Antagonism - PID-5"),
pool_coef(with = "PID5_Detachment", component="Maladaptive", category = "Psychopathology", name = "Detachment - PID-5"),
pool_coef(with = "PID5_Disinhibition", component="Maladaptive", category = "Psychopathology", name = "Disinhibition - PID-5"),
pool_coef(with = "PID5_NegativeAffect", component="Maladaptive", category = "Psychopathology", name = "Negative Affect - PID-5"),
pool_coef(with = "PID5_Psychoticism", component="Maladaptive", category = "Psychopathology", name = "Psychoticism - PID-5")
)data <- rbind(
data,
pool_coef(with = "SPQ_ConstrictedAffect", component="Schizotypic", category = "Psychopathology", name = "Constricted Affect - SPQ"),
pool_coef(with = "SPQ_Eccentric", component="Schizotypic", category = "Psychopathology", name = "Eccentric - SPQ"),
pool_coef(with = "SPQ_MagicalThinking", component="Schizotypic", category = "Psychopathology", name = "Magical Thinking - SPQ"),
pool_coef(with = "SPQ_NoCloseFriends", component="Schizotypic", category = "Psychopathology", name = "No Close Friends - SPQ"),
pool_coef(with = "SPQ_OddSpeech", component="Schizotypic", category = "Psychopathology", name = "Odd Speech - SPQ"),
pool_coef(with = "SPQ_Reference", component="Schizotypic", category = "Psychopathology", name = "Reference - SPQ"),
pool_coef(with = "SPQ_SocialAnxiety", component="Schizotypic", category = "Psychopathology", name = "Social Anxiety - SPQ"),
pool_coef(with = "SPQ_Suspiciousness", component="Schizotypic", category = "Psychopathology", name = "Suspiciousness - SPQ"),
pool_coef(with = "SPQ_UnusualPerceptions", component="Schizotypic", category = "Psychopathology", name = "Unusual Perceptions - SPQ")
)# names(select(df10, starts_with("ASQ")))
data <- rbind(
data,
pool_coef(with = "ASQ_Imagination", component="Autistic", category = "Psychopathology", name = "Imagination - ASQ"),
pool_coef(with = "ASQ_LackSocialSkills", component="Autistic", category = "Psychopathology", name = "Lack of Social Skills - ASQ"),
pool_coef(with = "ASQ_LowAttentionalSwitching", component="Autistic", category = "Psychopathology", name = "Low Attentional Switching - ASQ"),
pool_coef(with = "ASQ_Patterns", component="Autistic", category = "Psychopathology", name = "Patterns and Numbers - ASQ"),
pool_coef(with = "ASQ_Routine", component="Autistic", category = "Psychopathology", name = "Routines - ASQ")
)data <- rbind(
data,
pool_coef(with = "GCBS_Extraterrestrial", component="Conspiracy Beliefs", category = "Beliefs", name = "Extraterrestrial - GCBS"),
pool_coef(with = "GCBS_GlobalConspiracies", component="Conspiracy Beliefs", category = "Beliefs", name = "Global Conspiracies - GCBS"),
pool_coef(with = "GCBS_GovernmentMalfeasance", component="Conspiracy Beliefs", category = "Beliefs", name = "Government Malfeasance - GCBS"),
pool_coef(with = "GCBS_InformationControl", component="Conspiracy Beliefs", category = "Beliefs", name = "Information Control - GCBS"),
pool_coef(with = "GCBS_PersonalWellbeing", component="Conspiracy Beliefs", category = "Beliefs", name = "Personal Wellbeing - GCBS")
)data <- rbind(
data,
pool_coef(with = "LIE_Ability", component="Lying Profile", category = "Beliefs", name = "Lying Ability"),
pool_coef(with = "LIE_Frequency", component="Lying Profile", category = "Beliefs", name = "Lying Frequency"),
pool_coef(with = "LIE_Contextuality", component="Lying Profile", category = "Beliefs", name = "Lying Contextuality"),
pool_coef(with = "LIE_Negativity", component="Lying Profile", category = "Beliefs", name = "Lying Negativity")
)# names(df10)[str_detect(names(df10), "PI_Alive")]
# names(df12)[str_detect(names(df12), "PI_Alive")]
# names(df13)[str_detect(names(df13), "PI_Alive")]
# data <- rbind(
# data,
# pool_coef(with = "PI_Alive", component="World Beliefs", name = "Alive", unequalrange=TRUE))
data <- rbind(
data,
pool_coef(with = "PI_Alive", component="World Beliefs", category = "Beliefs", name = "Alive - Primal Belief", unequalrange=TRUE),
pool_coef(with = "PI_Changing", component="World Beliefs", category = "Beliefs", name = "Changing - Primal Belief", unequalrange=TRUE),
pool_coef(with = "PI_Enticing", component="World Beliefs", category = "Beliefs", name = "Enticing - Primal Belief", unequalrange=TRUE),
pool_coef(with = "PI_Good", component="World Beliefs", category = "Beliefs", name = "Good - Primal Belief", unequalrange=TRUE),
pool_coef(with = "PI_Hierarchical", component="World Beliefs", category = "Beliefs", name = "Hierarchical - Primal Belief", unequalrange=TRUE),
pool_coef(with = "PI_Safe", component="World Beliefs", category = "Beliefs", name = "Safe - Primal Belief",unequalrange=TRUE),
pool_coef(with = "PI_Understandable", component="World Beliefs", category = "Beliefs", name = "Understandable - Primal Belief",unequalrange=TRUE)
# pool_coef(with = "PI_AboutMe", component="World Beliefs", name = "About me",unequalrange=TRUE),
# pool_coef(with = "PI_Abundant", component="World Beliefs", name = "Abundant",unequalrange=TRUE),
# pool_coef(with = "PI_Acceptable", component="World Beliefs", name = "Acceptable",unequalrange=TRUE),
# pool_coef(with = "PI_Beautiful", component="World Beliefs", name = "Beautiful",unequalrange=TRUE),
# pool_coef(with = "PI_Cooperative", component="World Beliefs", name = "Cooperative",unequalrange=TRUE),
# pool_coef(with = "PI_Funny", component="World Beliefs", name = "Funny",unequalrange=TRUE),
# pool_coef(with = "PI_Harmless", component="World Beliefs", name = "Harmless",unequalrange=TRUE),
# pool_coef(with = "PI_Improvable", component="World Beliefs", name = "Improvable",unequalrange=TRUE),
# pool_coef(with = "PI_Interconnected", component="World Beliefs", name = "Interconnected",unequalrange=TRUE),
# pool_coef(with = "PI_Interesting", component="World Beliefs", name = "Interesting",unequalrange=TRUE),
# pool_coef(with = "PI_Just", component="World Beliefs", name = "Just",unequalrange=TRUE),
# pool_coef(with = "PI_Meaningful", component="World Beliefs", name = "Meaningful",unequalrange=TRUE),
# pool_coef(with = "PI_NeedsMe", component="World Beliefs", name = "Needs Me",unequalrange=TRUE),
# pool_coef(with = "PI_Pleasurable", component="World Beliefs", name = "Pleasurable",unequalrange=TRUE),
# pool_coef(with = "PI_Progressing", component="World Beliefs", name = "Progressing",unequalrange=TRUE),
# pool_coef(with = "PI_Regenerative", component="World Beliefs", name = "Regenerative",unequalrange=TRUE),
# pool_coef(with = "PI_Stable", component="World Beliefs", name = "Stable",unequalrange=TRUE),
# pool_coef(with = "PI_WorthExploring", component="World Beliefs", name = "Worth Exploring",unequalrange=TRUE),
# pool_coef(with = "PI_Intentional", component="World Beliefs", name = "Intentional", unequalrange=TRUE)
)# names(df1a)
# names(df1b)
# names(df2) #TAS, MAIA, ICQ, BPQ, BVAQ
# names(df3) # TAS, BPQ
# names(df4) # BPQ, PBCS (private bodily consciousness?), MAIA, BAQ, BRS
# names(df5)
# names(df6) # PHQ2, GAD2, SSS8, IATS
# names(df7a) # STAIT, MAIA, CES (not reported in the paper), FFMQ, NEOFFI
# names(df7b) # BPQ, PHQ15, PHQ9, MAIA, STAIT,
# names(df7c) # CI01 (not reported in the paper), TAS, BPQ, MAIA, ASI, ICQ
# names(df8a) # EDI, BPQ
# names(df8b) # PHQ9, PHQ15, TAS
# names(df9) # ECR (Experience in Close Relationship Scale), TEAQ (touch experiences and attitudes questionnaire), STQ, TACSEN, UCLA, BFI, DBIA, BO, EQ
# names(df10) # ASQ, BPD, GCBS, IPIP6, LIE, MAIA, PHQ4, PI, PID, SPQ
# names(df11) # PHQ4, STAIT5, BDI, MAIA
# names(df12) # MAIA, PI,
# names(df14) # MAIA, TAS, MFQ(DEP), STAI(ANX)
# names(df15) #
# names(df16) #
average_corr <- data |>
summarise(min_r = min(r, na.rm = TRUE),
mean_r = mean(r, na.rm = TRUE),
max_r = max(r, na.rm = TRUE),
Max = var_Interoception[which.max(abs(r))],
.by=c("Component", "var_Correlate"))
#
# average_corr <- data |>
# summarise(
# min_r = min(r, na.rm = TRUE),
# mean_r = mean(r, na.rm = TRUE),
# max_r = max(r, na.rm = TRUE),
# Max = var_Interoception[which.max(abs(r))],
# n_sig_001 = sum(p < .001, na.rm = TRUE),
# n_sig_01 = sum(p < .01 & p >= .001, na.rm = TRUE),
# n_ns = sum(p >= .01 | is.na(p)),
# total = dplyr::n(),
# .by=c("Component", "var_Correlate")
# ) |>
# mutate(
# perc_sig = (n_sig_001 + n_sig_01) / total
# )
sort(table(average_corr$Max), decreasing = TRUE)
Original HungryThirsty BruiseBlood MusclesPain CoughSneeze
29 17 10 6 2
WindBurp BreathingHeart UrinateDefecate
2 1 1
average_corr |>
gt::gt() |>
gt::data_color(
columns = c(mean_r, min_r, max_r),
palette = c("#2196F3", "white", "#FF5722"),
domain = c(-0.7, 0, 0.7)
) |>
gt::data_color(
columns = c(Component, Max)
) |>
gt::fmt_auto()| Component | var_Correlate | min_r | mean_r | max_r | Max |
|---|---|---|---|---|---|
| Demographic | Gender (Female - Male) | −0.218 | −0.058 | 0.049 | HungryThirsty |
| Demographic | Age | 0.06 | 0.125 | 0.182 | Original |
| Personality | Neuroticism | −0.227 | −0.096 | −0.038 | HungryThirsty |
| Personality | Agreeableness | 0.045 | 0.08 | 0.131 | Original |
| Personality | Conscientiousness | 0.045 | 0.109 | 0.165 | Original |
| Personality | Openness | 0.068 | 0.103 | 0.17 | Original |
| Personality | Extraversion | 0.059 | 0.097 | 0.165 | BruiseBlood |
| Personality | Honesty-Humility | −0.217 | −0.101 | −0.014 | HungryThirsty |
| MAIA | Attention Regulation - MAIA | 0.153 | 0.249 | 0.369 | Original |
| MAIA | Listening - MAIA | 0.089 | 0.177 | 0.268 | BruiseBlood |
| MAIA | Trusting - MAIA | 0.153 | 0.237 | 0.357 | Original |
| MAIA | Emotional Awareness - MAIA | 0.132 | 0.197 | 0.296 | Original |
| MAIA | Not Distracting - MAIA | 0.019 | 0.061 | 0.127 | HungryThirsty |
| MAIA | Noticing - MAIA | 0.161 | 0.262 | 0.389 | Original |
| MAIA | Not Worrying - MAIA | −0.009 | 0.041 | 0.108 | UrinateDefecate |
| MAIA | Self Regulation - MAIA | 0.087 | 0.189 | 0.274 | Original |
| Interoception | Body Awareness - BPQ | 0.07 | 0.121 | 0.175 | Original |
| Interoception | Autonomic Reactivity - BPQ | −0.261 | −0.184 | −0.026 | Original |
| Interoception | Interoceptive Confusion - ICQ | −0.492 | −0.324 | −0.204 | Original |
| Interoception | Difficulties Identifying Feelings - TAS | −0.321 | −0.211 | −0.133 | Original |
| Interoception | Difficulties Describing Feelings - TAS | −0.244 | −0.154 | −0.111 | Original |
| Interoception | External Thinking - TAS | −0.128 | −0.081 | −0.023 | Original |
| Interoception | Affective - BVAQ | −0.036 | 0.042 | 0.159 | BruiseBlood |
| Interoception | Cognitive - BVAQ | −0.303 | −0.2 | −0.105 | Original |
| Depression | Somatic Concerns - PHQ-15 | −0.282 | −0.177 | −0.04 | Original |
| Depression | Depression - PHQ-9 | −0.265 | −0.172 | −0.069 | HungryThirsty |
| Depression | Depression - BDI | −0.342 | −0.204 | −0.134 | HungryThirsty |
| Depression | Depression - PHQ-4 | −0.187 | −0.091 | −0.032 | HungryThirsty |
| Depression | Depression - MFQ | −0.345 | −0.139 | −0.007 | BreathingHeart |
| Anxiety | Anxiety - STAI-T | −0.322 | −0.201 | −0.098 | HungryThirsty |
| Anxiety | Anxiety - PHQ-4 | −0.2 | −0.099 | −0.008 | HungryThirsty |
| Anxiety | Anxiety - GAD-7 | −0.374 | −0.187 | −0.098 | HungryThirsty |
| Maladaptive | Boderline Personality | −0.14 | −0.061 | 0.022 | HungryThirsty |
| Maladaptive | Antagonism - PID-5 | −0.082 | −0.024 | 0.141 | BruiseBlood |
| Maladaptive | Detachment - PID-5 | −0.167 | −0.081 | 0.004 | HungryThirsty |
| Maladaptive | Disinhibition - PID-5 | −0.065 | −0.016 | 0.069 | BruiseBlood |
| Maladaptive | Negative Affect - PID-5 | −0.153 | −0.111 | −0.024 | Original |
| Maladaptive | Psychoticism - PID-5 | −0.173 | −0.091 | 0.002 | MusclesPain |
| Schizotypic | Constricted Affect - SPQ | −0.146 | −0.085 | −0.009 | Original |
| Schizotypic | Eccentric - SPQ | −0.138 | −0.081 | −0.034 | HungryThirsty |
| Schizotypic | Magical Thinking - SPQ | −0.05 | 0.02 | 0.078 | BruiseBlood |
| Schizotypic | No Close Friends - SPQ | −0.172 | −0.122 | −0.062 | Original |
| Schizotypic | Odd Speech - SPQ | −0.15 | −0.089 | −4.804 × 10−4 | HungryThirsty |
| Schizotypic | Reference - SPQ | −0.111 | −0.041 | 0.023 | MusclesPain |
| Schizotypic | Social Anxiety - SPQ | −0.192 | −0.111 | −0.023 | BruiseBlood |
| Schizotypic | Suspiciousness - SPQ | −0.081 | −0.038 | 0.017 | WindBurp |
| Schizotypic | Unusual Perceptions - SPQ | −0.141 | −0.068 | 0.053 | MusclesPain |
| Autistic | Imagination - ASQ | −0.28 | −0.184 | −0.114 | Original |
| Autistic | Lack of Social Skills - ASQ | −0.189 | −0.119 | −0.04 | Original |
| Autistic | Low Attentional Switching - ASQ | −0.225 | −0.143 | −0.026 | Original |
| Autistic | Patterns and Numbers - ASQ | −0.064 | 0.005 | 0.083 | BruiseBlood |
| Autistic | Routines - ASQ | −0.225 | −0.133 | −0.019 | BruiseBlood |
| Conspiracy Beliefs | Extraterrestrial - GCBS | −0.017 | 0.026 | 0.057 | MusclesPain |
| Conspiracy Beliefs | Global Conspiracies - GCBS | 0.006 | 0.103 | 0.154 | Original |
| Conspiracy Beliefs | Government Malfeasance - GCBS | −0.021 | 0.053 | 0.096 | CoughSneeze |
| Conspiracy Beliefs | Information Control - GCBS | −0.059 | 0.06 | 0.124 | CoughSneeze |
| Conspiracy Beliefs | Personal Wellbeing - GCBS | 0.036 | 0.086 | 0.133 | HungryThirsty |
| Lying Profile | Lying Ability | 0.033 | 0.057 | 0.082 | WindBurp |
| Lying Profile | Lying Frequency | −0.088 | −0.041 | 0.034 | MusclesPain |
| Lying Profile | Lying Contextuality | −0.123 | −0.007 | 0.045 | BruiseBlood |
| Lying Profile | Lying Negativity | 0.011 | 0.064 | 0.106 | Original |
| World Beliefs | Alive - Primal Belief | −0.012 | 0.078 | 0.145 | Original |
| World Beliefs | Changing - Primal Belief | −0.083 | 0.01 | 0.058 | HungryThirsty |
| World Beliefs | Enticing - Primal Belief | −0.003 | 0.066 | 0.123 | Original |
| World Beliefs | Good - Primal Belief | −0.014 | 0.09 | 0.222 | Original |
| World Beliefs | Hierarchical - Primal Belief | 0.028 | 0.102 | 0.183 | HungryThirsty |
| World Beliefs | Safe - Primal Belief | −0.012 | 0.024 | 0.054 | MusclesPain |
| World Beliefs | Understandable - Primal Belief | 0.024 | 0.113 | 0.17 | Original |
p <- data |>
mutate(sig = ifelse(p < .01, "p < .01", ifelse(p < .001, "p < .001", "N.S.")),
dir = sign(r),
var_Interoception = str_replace(var_Interoception, "CoughSneeze", "Cough/Sneeze"),
var_Interoception = str_replace(var_Interoception, "HungryThirsty", "Hungry/Thirsty"),
var_Interoception = str_replace(var_Interoception, "BruiseBlood", "Bruise/Blood sugar"),
var_Interoception = str_replace(var_Interoception, "MusclesPain", "Muscles/Pain"),
var_Interoception = str_replace(var_Interoception, "BreathingHeart", "Breathing/Heart"),
var_Interoception = str_replace(var_Interoception, "UrinateDefecate", "Urinate/Defecate"),
var_Interoception = str_replace(var_Interoception, "WindBurp", "Wind/Burp"),
var_Interoception = fct_relevel(var_Interoception, "Original", "Hungry/Thirsty", "Bruise/Blood sugar", "Muscles/Pain", "Cough/Sneeze", "Wind/Burp", "Breathing/Heart", "Urinate/Defecate"),
Category = fct_relevel(
Category, "General", "Interoception", "Mood", "Psychopathology", "Beliefs"),
Component = fct_relevel(Component, "Personality", "Demographic", "Interoception", "MAIA", "Anxiety", "Depression", "Schizotypic", "Autistic", "Maladaptive", "World Beliefs", "Conspiracy Beliefs", "Lying Profile")) |>
group_by(Component) |>
mutate(var_Correlate = fct_reorder(var_Correlate, r, .fun=mean)) |>
ungroup() |>
ggplot(aes(y = var_Correlate)) +
annotate(geom = "rect", xmin = -0.1, xmax = 0.1, ymin = -Inf, ymax=Inf, fill = "#FFF8E1") +
annotate(geom = "rect", xmin = c(-0.3, 0.1), xmax = c(-0.1, 0.3), ymin = -Inf, ymax=Inf, fill = "#F1F8E9") +
annotate(geom = "rect", xmin = c(-0.6, 0.3), xmax = c(-0.3, 0.6), ymin = -Inf, ymax=Inf, fill = "#E8F5E9") +
geom_vline(xintercept = 0, linetype = "dashed") +
# geom_point2(aes(y=r, color = dir, alpha = sig), size = 3) +
geom_linerange(aes(color=dir, alpha=sig, xmax=r, xmin=0), linewidth = 1) +
geom_linerange(aes(color = dir, alpha = sig, xmin = CI_low, xmax = CI_high, linewidth = log(N))) +
# geom_linerange(aes(color=dir, alpha=sig, ymin=0, ymax=r, group=Sample), position = position_dodge2(width = 0.7), linewidth=2.5) +
# geom_linerange(aes(ymin = CI_low, ymax = CI_high, color = dir, alpha=sig, group=Sample), position = position_dodge2(width = 0.7),
# linewidth = 1) +
facet_grid(Category ~ var_Interoception, scales = "free", space ="free", switch = "y") +
scale_fill_gradient(low = "#2196F3", high = "#FF5722", guide = "none") +
scale_color_gradient(low = "#2196F3", high = "#FF5722", guide = "none") +
scale_alpha_discrete(range = c(0.2, 0.9), guide = "none") +
scale_x_continuous(expand = c(0, 0), breaks = c(-0.3, 0, 0.3)) +
scale_linewidth_continuous(range = c(3, 7), guide = "none") +
coord_cartesian(xlim = c(-0.47, 0.47)) +
theme_modern(axis.title.space = 5) +
labs(x = "Strength of Association (std. Beta)") +
theme(panel.grid.major.y = element_line(),
axis.title.y = element_blank(),
axis.line.x = element_blank(),
axis.text.y = element_text(size = rel(0.5)),
axis.text.x = element_text(size = rel(0.8)),
plot.title = element_text(face = "bold", hjust = 0),
strip.placement = "outside",
strip.background.y = element_rect(fill = "#E0E0E0", color = "white"),
strip.background.x = element_rect(fill = "#F8BBD0", color = "white"))
pggsave("figures/Figure3.png", p, width=21*0.55, height=29.7*0.4, dpi=300, bg="white")Benefits of the IAS: - Straightforward and sensation-centered items
Recommendations: - Remove Itch (redundant + issue in Chinese) - Use analog scales
Limitations: - Not much clear theorethical or empirical structure (small grouping of items) - Limited variability (clear mode at 4/5), very low prevalence of 5/5 responses. - Ambiguous items which grouping depends on the context (and its awareness) - E.g., heart beating fast, vomit when nauseaous - Few items for some modalities (e.g., 1 for heart) - Positive phrasing: benefits but also might exacerbate positivity bias (and thus unidimensionality)
Need for context-specific items (cross-modal when possible, i.e., cardioception, respiroception, etc.).
Neuroticism: effect unclear
Openness (driven by Wind/burp): effect of response bias