The aim of this study was to assess how manipulating descriptions of occupations as exposed to risk (vs bored) and/or helpful (vs unhelpful) would influence correlates of occupational heroism.

R session Environment

Toggle details regarding my R environment: packages and machine

Loading packages:

if(!require("dplyr")) install.packages("dplyr")
if(!require("tidyr")) install.packages("tidyr")
if(!require("stringr")) install.packages("stringr")
if(!require("ggplot2")) install.packages("ggplot2")
if(!require("emmeans")) install.packages("emmeans")
if(!require("data.table")) install.packages("data.table")
if(!require("PerformanceAnalytics")) install.packages("PerformanceAnalytics")
if(!require("interactions")) install.packages("interactions")
if(!require("car")) install.packages("car")
if(!require("effectsize")) install.packages("effectsize")
if(!require("RColorBrewer")) install.packages("RColorBrewer")
if(!require("report")) install.packages("report")
if(!require("robustbase")) install.packages("robustbase") # For Minimum Covariance distance
if(!require("knitr")) install.packages("knitr")
if(!require("gt")) install.packages("gt")
if(!require("lavaan")) install.packages("lavaan")
if(!require("semPlot")) install.packages("semPlot")
if(!require("ppcor")) install.packages("ppcor") # For partial correlations
if(!require("sjPlot")) install.packages("sjPlot")
if(!require("MASS")) install.packages("MASS")
if(!require("Matrix")) install.packages("Matrix")
if(!require("ggrepel")) install.packages("ggrepel")
if(!require("corrplot")) install.packages("corrplot")
if(!require("plotly")) install.packages("plotly") # Interactive plots <3
if(!require("performance")) install.packages("performance") 
if(!require("partR2")) install.packages("partR2") 
if(!require("kableExtra")) install.packages("kableExtra") 
if(!require("parameters")) install.packages("parameters") 
if(!require("lme4")) install.packages("lme4") 
if(!require("lmerTest")) install.packages("lmerTest") 
if(!require("MuMIn")) install.packages("MuMIn") 
if(!require("gridExtra")) install.packages("gridExtra") # Plot layout
if(!require("purrr")) install.packages("purrr") # Really cool 3D scatterplots
if(!require("olsrr")) install.packages("olsrr") # 
if(!require("modelsummary")) install.packages("modelsummary") # 
if(!require("modelsummary")) install.packages("modelsummary") # 

Session info:

sessionInfo()
## R version 4.5.1 (2025-06-13)
## Platform: aarch64-apple-darwin20
## Running under: macOS Sonoma 14.7.1
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: Europe/London
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] modelsummary_2.5.0         olsrr_0.6.1               
##  [3] purrr_1.1.0                gridExtra_2.3             
##  [5] MuMIn_1.48.11              lmerTest_3.1-3            
##  [7] lme4_1.1-37                parameters_0.28.2         
##  [9] kableExtra_1.4.0           partR2_0.9.2              
## [11] performance_0.15.1         plotly_4.11.0             
## [13] corrplot_0.95              ggrepel_0.9.6             
## [15] Matrix_1.7-3               sjPlot_2.9.0              
## [17] ppcor_1.1                  MASS_7.3-65               
## [19] semPlot_1.1.8              lavaan_0.6-20             
## [21] gt_1.1.0                   knitr_1.50                
## [23] robustbase_0.99-6          report_0.6.1              
## [25] RColorBrewer_1.1-3         effectsize_1.0.1          
## [27] car_3.1-3                  carData_3.0-5             
## [29] interactions_1.2.0         PerformanceAnalytics_2.0.8
## [31] xts_0.14.1                 zoo_1.8-14                
## [33] data.table_1.17.8          emmeans_1.11.2-8          
## [35] ggplot2_4.0.0              stringr_1.5.2             
## [37] tidyr_1.3.1                dplyr_1.1.4               
## 
## loaded via a namespace (and not attached):
##   [1] splines_4.5.1         tibble_3.3.0          datawizard_1.2.0     
##   [4] XML_3.99-0.22         rpart_4.1.24          lifecycle_1.0.4      
##   [7] Rdpack_2.6.4          globals_0.18.0        lattice_0.22-7       
##  [10] insight_1.4.2         rockchalk_1.8.157     backports_1.5.0      
##  [13] magrittr_2.0.4        openxlsx_4.2.8.1      Hmisc_5.2-5          
##  [16] sass_0.4.10           rmarkdown_2.29        jquerylib_0.1.4      
##  [19] yaml_2.3.10           qgraph_1.9.8          zip_2.3.3            
##  [22] pbapply_1.7-4         minqa_1.2.8           multcomp_1.4-28      
##  [25] abind_1.4-8           quadprog_1.5-8        nnet_7.3-20          
##  [28] TH.data_1.1-4         sandwich_3.1-1        jtools_2.3.0         
##  [31] listenv_0.9.1         nortest_1.0-4         arm_1.14-4           
##  [34] goftest_1.2-3         parallelly_1.45.1     svglite_2.2.1        
##  [37] codetools_0.2-20      xml2_1.4.0            tidyselect_1.2.1     
##  [40] farver_2.1.2          broom.mixed_0.2.9.6   stats4_4.5.1         
##  [43] base64enc_0.1-3       jsonlite_2.0.0        Formula_1.2-5        
##  [46] survival_3.8-3        systemfonts_1.2.3     tools_4.5.1          
##  [49] Rcpp_1.1.0            glue_1.8.0            mnormt_2.1.1         
##  [52] xfun_0.53             withr_3.0.2           numDeriv_2016.8-1.1  
##  [55] fastmap_1.2.0         boot_1.3-31           digest_0.6.37        
##  [58] mi_1.2                R6_2.6.1              estimability_1.5.1   
##  [61] textshaping_1.0.3     colorspace_2.1-2      gtools_3.9.5         
##  [64] jpeg_0.1-11           generics_0.1.4        corpcor_1.6.10       
##  [67] httr_1.4.7            htmlwidgets_1.6.4     pkgconfig_2.0.3      
##  [70] sem_3.1-16            gtable_0.3.6          S7_0.2.0             
##  [73] furrr_0.3.1           htmltools_0.5.8.1     scales_1.4.0         
##  [76] png_0.1-8             reformulas_0.4.1      rstudioapi_0.17.1    
##  [79] reshape2_1.4.4        coda_0.19-4.1         checkmate_2.3.3      
##  [82] nlme_3.1-168          nloptr_2.2.1          cachem_1.1.0         
##  [85] parallel_4.5.1        foreign_0.8-90        pillar_1.11.1        
##  [88] grid_4.5.1            vctrs_0.6.5           OpenMx_2.22.10       
##  [91] xtable_1.8-4          cluster_2.1.8.1       htmlTable_2.4.3      
##  [94] evaluate_1.0.5        pbivnorm_0.6.0        mvtnorm_1.3-3        
##  [97] cli_3.6.5             kutils_1.73           compiler_4.5.1       
## [100] rlang_1.1.6           fdrtool_1.2.18        plyr_1.8.9           
## [103] forcats_1.0.0         fs_1.6.6              stringi_1.8.7        
## [106] psych_2.5.6           pander_0.6.6          viridisLite_0.4.2    
## [109] tables_0.9.31         lazyeval_0.2.2        lisrelToR_0.3        
## [112] bayestestR_0.17.0     glasso_1.11           future_1.67.0        
## [115] rbibutils_2.3         igraph_2.2.2          broom_1.0.10         
## [118] RcppParallel_5.1.11-1 bslib_0.9.0           DEoptimR_1.1-4

What we know of occupational heroism

Some occupations are more likely than others to be perceived as being heroic. We have consistently shown that these occupations were qualified by high helpfulness perception and high exposure do danger perception. However, a central part of our research project is to identify the consequences (both positive and negative) of having one’s occupation perceived as heroic. In a previous correlational study, we found that perceived heroism predicted:

  • H1: Higher gratitude toward workers
  • H2: Reduced criticism acceptability
  • H3: Increased support for demands from the workers*
  • H4: Increased perception of victim-related aspects (e.g., suffering, vulnerability)*
  • H5: Increased impunity and motivation to de-regulate the occupation

*: note that H3 and H4 were inconsistent with our initial hypotheses – they were revised after finding correlational evidence supporting the updated hypotheses.

We also know from two experimental studies that heroism can be successfully manipulated through framing occupations as 1) exposed to risk (vs bored most of the time) and helpful (vs not very helpful).

In order to go beyond the correlational points made in our correlational study, the present study will manipulate heroism experimentally to assess the causal role of heroism in predicting H1-H5.

In addition, we decided to go further and explore the relationship between heroism and perceived suffering – we expect that heroes are perceived as more likely to endure pain (rather than avoid it). Following our findings that heroes are more socially supported, we also expect that - although heroic workers are perceived as more likely to accept exploitative policies (stanley & kay) - people are less likely to support exploitative policies targeting heroes.


Our hypotheses are:

  • H1: Occupations described as exposed to risk (vs bored most of the time) will be perceived as more heroic

  • H2: Occupations described as actually helpful (vs not very helpful) will be perceived as more heroic.

  • H3a: Participants will be more grateful towards workers from occupations described as exposed to risk (vs bored most of the time)

  • H3b: Participants will support demands initiated by workers (rather than the government) more when their occupation is described as exposed to risk (vs bored most of the time)

  • H3c: Participants will perceive workers as suffering more and needing more protection when their occupation is described as exposed to risk (vs bored most of the time)

  • H3d: Participants will report decreased criticism and hate speech acceptability for workers from occupations described as exposed to risk (vs bored most of the time)

  • H3e: Participants will support workers’ impunity more when their occupation is described as exposed to risk (vs bored most of the time)

  • H3f: Participants will report increased belief that workers would choose to endure suffering related to their mission rather than avoid it when their occupation is described as exposed to risk (vs bored most of the time)

  • H3g: Participants will report increased belief that the workers would willingly accept to be exploited if required by their mission when their occupation is described as exposed to risk (vs bored most of the time)

  • H3h: In contrast to H3g, Participants will report decreased support for exploiting workers if required by their mission when their occupation is described as exposed to risk (vs bored most of the time)

  • H4a: Participants will be more grateful towards workers from occupations described as actually helpful (vs not very helpful)

  • H4b: Participants will support demands initiated by workers (rather than the government) more when their occupation is described as actually helpful (vs not very helpful)

  • H4c: Participants will perceive workers as suffering more and needing more protection when their occupation is described as actually helpful (vs not very helpful)

  • H4d: Participants will report decreased criticism and hate speech acceptability for workers from occupations described as actually helpful (vs not very helpful)

  • H4e: Participants will support workers’ impunity more when their occupation is described as actually helpful (vs not very helpful)

  • H4f: Participants will report increased belief that workers would choose to endure suffering related to their mission rather than avoid it when their occupation is described as actually helpful (vs not very helpful)

  • H4g: Participants will report increased belief that the workers would willingly accept to be exploited if required by their mission when their occupation is described as actually helpful (vs not very helpful)

  • H4h: In contrast to H4g, Participants will report decreased support for exploiting workers if required by their mission when their occupation is described as actually helpful (vs not very helpful)

We will also explore correlational evidence supporting our hypotheses by regressing each outcomes on perceived occupational heroism.

We will also explore whether observed findings are consistent with mediation through perceived heroism (e.g., risk influence gratitude through perceived heroism).


Data Wrangling

From the chaotic Qualtrics export, we organise a long format data frame with one row per participant, with their condition (target occupation) neatly organised in one columns. Details of the data wrangling are given below.

DF <- read.csv("~/Downloads/Experimental+-+Hero+Scale+-+Part+1+(non+heroic+jobs)+-+Feb_March+9,+2026_05.10.csv", comment.char="#")

DF <- DF[-c(1:2), ]

DF <- subset(DF, DF$age != "")


ProlID <- read.csv("~/Downloads/prolific_demographic_export_69a6ce5be2630a6a7bb8daf5(2).csv")

ProlID_Approved <- subset(ProlID, ProlID$Status == "APPROVED")

DF <- subset(DF, prolID %in% ProlID_Approved$Participant.id)
Demographics <- DF[, c(181:191)]
DF <- DF[, c(23, 41:60, 65:104,121:180 , 207)] ### NEEDS ADJUSTMENT!
#DF <- DF[, c(23, 25:60, 65:180, 207)]

Psych <- subset(DF, startsWith(Cond, "PS_"))
Psych <- Psych[, colSums(!is.na(Psych) & Psych != "") > 0 | grepl("SpecCritP", names(Psych)), drop = FALSE]

Weld <- subset(DF, startsWith(Cond, "W_"))
Weld <- Weld[, colSums(!is.na(Weld) & Weld != "") > 0 | grepl("SpecCritW", names(Weld)), drop = FALSE]


# 1) Use Weld as the "template" for column names
template_names <- names(Weld)  # 47 names

# 2) Helper that renames a data frame by POSITION to match Weld
rename_like_weld <- function(df, template = template_names) {
  # Sanity checks to avoid silent disasters
  if (ncol(df) != length(template)) {
    stop("Column count mismatch: this df has ", ncol(df),
         " columns but template has ", length(template), ".")
  }
  # Copy names by position
  names(df) <- template
  df
}

# 3) Put all your data frames into a named list
dfs <- list(
  Weld    = Weld,
  Psych   = Psych
)

# 4) Harmonise names, then stack vertically with a source column
stacked <- dfs %>%
  purrr::map(rename_like_weld) %>%          # harmonise titles to Weld's names
  bind_rows(.id = "dataset")         # adds the dataset name as the first column

# Result: 48 columns total (1 "dataset" + 47 harmonised vars)
# and nrow(stacked) == sum(nrow(.) for each df)



#------------------------------------------------------------
# 0) Small helpers
#------------------------------------------------------------

# Replace "" and pure whitespace with NA
na_empty <- function(x) {
  x <- if (is.character(x)) str_trim(x) else x
  ifelse(is.character(x) & x == "", NA, x)
}

# Map character -> numeric using a named vector `key`.
# Unknown labels become NA (so you’ll notice and can fix the key).
map_to_num <- function(x, key) {
  x <- na_empty(x)
  # exact match after trimming
  out <- unname(key[ match(x, names(key)) ])
  # if x is already numeric-like (e.g., "5"), keep it
  suppressWarnings({
    out_numlike <- as.numeric(x)
  })
  out[is.na(out) & !is.na(out_numlike)] <- out_numlike[is.na(out) & !is.na(out_numlike)]
  as.numeric(out)
}

# Pull the first integer in a string like "7 - Strongly agree" -> 7
first_int <- function(x) {
  x <- na_empty(x)
  as.numeric(str_extract(x, "\\d+"))
}

# Checkbox columns: any non-empty text -> 1, blank/NA -> 0
checkbox01 <- function(x) as.numeric(!is.na(na_empty(x)))


#------------------------------------------------------------
# 1) Define your scale keys (edit here if wording differs)
#------------------------------------------------------------
Accept7 <- c("Completely unacceptable" = 1,
             "2" = 2, 
             "3" = 3,
             "Neither unacceptable nor acceptable" = 4,
             "5" = 5,
             "6" = 6,
             "Completely acceptable" = 7)
agree7 <- c(
  "Strongly disagree"             = 1,
  "Moderately disagree"           = 2,
  "Slightly disagree"             = 3,
  "Neither disagree, nor agree"   = 4,
  "Slightly agree"                = 5,
  "Moderately agree"              = 6,
  "Strongly agree"                = 7
)

likely7 <- c(
  "Very unlikely"                 = 1,
  "Quite unlikely"                = 2,
  "Slightly unlikely"             = 3,
  "Neither likely, nor unlikely"  = 4,
  "Slightly likely"               = 5,
  "Quite likely"                  = 6,
  "Very likely"                   = 7
)



# Intensity (seen in GenVictimWeld_*): ordered least -> most
intensity7 <- c(
  "Not at all"   = 1,
  "Very little"  = 2,
  "A little"     = 3,
  "Somewhat"     = 4,
  "Quite a bit"  = 5,
  "A lot"        = 6,
  "Very much"    = 7 #!!!!!

)

# Valence (Q239). Your data shows: Very/Quite negative, Somewhat/Quite/Very positive.
# Map to 1..5 (negative -> positive). If you have "Neither", add it as 3.
valence5 <- c(
  "Very negative"      = 1,
  "Quite negative"            = 2, 
  "Somewhat negative"     = 3, #!!!!!!
  "Neutral"  = 4,
  "Somewhat positive"     = 5,  
  "Quite positive"      = 6,
  "Very positive" = 7
)

# Gratitude single item (GenGratWeld) appears to use intensity-style words
grat7 <- intensity7


#------------------------------------------------------------
# 2) Identify column groups by name (using your Weld names)
#    We only target cols 2:41, but naming groups is clearer & safer.
#------------------------------------------------------------

agree_cols <- c(
  # Crit accept (general)
  "GenCritW_1","GenCritW_2","GenCritW_3",
  # Specific victims/villains attitudes (agree-type)
  "SpecSuppW_1","SpecSuppW_2","SpecSuppW_3",
  "SpecVictimW_1","SpecVictimW_2","SpecVictimW_3",
  "GenImpW_1","GenImpW_2","GenImpW_3","GenImpW_4",
  "SpecImpW_1","SpecImpW_2","SpecImpW_3","SpecImpW_4",
  "SpecImpW_1","SpecImpW_2","SpecImpW_3","SpecImpW_4",
  "Endure_GW_1", "Endure_GW_2", "Endure_GW_3", "Endure_GW_4",
  "SupportDem_Weld_1", #SupportDem_Weld
  "SelfExploit_GW_1", "SelfExploit_GW_2", "SelfExploit_GW_3", "SelfExploit_GW_4",
  "SupportExploit_GW_1", "SupportExploit_GW_2", "SupportExploit_GW_3", "SupportExploit_GW_4"
)

likely_cols <- c("SpecGratW_1","SpecGratW_2","SpecGratW_3",
                 "Endure_SW_1", "Endure_SW_2", "Endure_SW_3",
                 "SelfExploit_SW_1", "SelfExploit_SW_2", "SelfExploit_SW_3")


intensity_cols <- c("GenVictW_1","GenVictW_2","GenVictW_3","GeneralGratW")

# Checkbox blocks (present/blank -> 1/0)
checkbox_cols <- c(
  "SpecCritW1_1","SpecCritW1_2","SpecCritW1_3","SpecCritW1_9","SpecCritW1_4",
  "SpecCritW2_1","SpecCritW2_2","SpecCritW2_3","SpecCritW2_9","SpecCritW2_4"
)

# Hybrid numeric-label items
hybrid_num_cols <- c("HW_1","DangerHelpW_1","DangerHelpW_2")

# Valence item
valence_cols <- c("AttW")

Accept_cols <- c("SupportExploit_SW_1", "SupportExploit_SW_2","SupportExploit_SW_3")

#------------------------------------------------------------
# 3) Apply mappings to your stacked data (called `stacked`)
#    We leave identifying/meta columns alone: dataset, prolID, gender*, age, Q52, Attentive, Cond
#------------------------------------------------------------

stacked_num <- stacked %>%
  mutate(
    # scales
    across(all_of(agree_cols),    ~ map_to_num(.x, agree7)),
    across(all_of(likely_cols),   ~ map_to_num(.x, likely7)),
    across(all_of(intensity_cols),~ map_to_num(.x, intensity7)),
    across(all_of(valence_cols),  ~ map_to_num(.x, valence5)),
    across(all_of(Accept_cols),  ~ map_to_num(.x, Accept7)),

    # checkbox-style -> 0/1
    across(all_of(checkbox_cols), checkbox01),

    # hybrid numerics (e.g., "7 - Strongly agree" or just "5")
    across(all_of(hybrid_num_cols), first_int),

    )


#colnames(stacked_num)

# # Check results by uncommenting lines below:
# compare_freqs <- function(char_df, num_df, col) {
#     cat("\n\n###", col, "###\n")
#     
#     char_counts <- as.data.frame(table(char_df[[col]]), stringsAsFactors = FALSE)
#     num_counts  <- as.data.frame(table(num_df[[col]]), stringsAsFactors = FALSE)
#     
#     names(char_counts) <- c("label", "char_n")
#     names(num_counts)  <- c("num_value", "num_n")
#     
#     # Make sure numeric column is actually numeric for sorting
#     suppressWarnings(num_counts$num_value <- as.numeric(as.character(num_counts$num_value)))
#     num_counts <- num_counts[order(num_counts$num_value), ]
#     
#     # Match by frequency
#     matched_labels <- character(nrow(num_counts))
#     matched_char_n <- integer(nrow(num_counts))
#     errors <- character(0)
#     
#     for (i in seq_len(nrow(num_counts))) {
#         n <- num_counts$num_n[i]
#         match_rows <- which(char_counts$char_n == n)
#         
#         if (length(match_rows) == 1) {
#             matched_labels[i] <- char_counts$label[match_rows]
#             matched_char_n[i] <- char_counts$char_n[match_rows]
#         } else if (length(match_rows) > 1) {
#             # ambiguous match → keep first
#             matched_labels[i] <- char_counts$label[match_rows[1]]
#             matched_char_n[i] <- char_counts$char_n[match_rows[1]]
#         } else {
#             # no match → flag error
#             matched_labels[i] <- NA
#             matched_char_n[i] <- NA
#             errors <- c(errors, paste0("No matching label for numeric value ", num_counts$num_value[i],
#                                        " (n=", n, ")"))
#         }
#     }
#     
#     comparison <- data.frame(
#         num_value = num_counts$num_value,
#         num_n = num_counts$num_n,
#         label = matched_labels,
#         char_n = matched_char_n,
#         stringsAsFactors = FALSE
#     )
#     
#     print(comparison, row.names = FALSE)
#     
#     if (length(errors) > 0) {
#         cat("⚠️  Errors:\n", paste0(" - ", errors, collapse = "\n"), "\n")
#     }
# }
# 
# # Columns to check
# cols_to_check <- setdiff(names(stacked), c("dataset", "Q90", "Attentive", "Cond"))
# 
# # Run it
# for (col in cols_to_check) {
#     compare_freqs(stacked, stacked_num, col)
# }

#colnames(stacked_num)
#colnames(stacked_num[, c(37, 47, 49)])
# Remove ATTENTION CHECKS
stacked_num <- stacked_num[, -c(21, 31, 33)] # SpecSupp 2; GenImp 3; SpecImp 1




# Severity mapping: column suffix -> numeric severity
severity_map <- c("1" = 1, "2" = 2, "3" = 3, "9" = 4, "4" = 5)

# Helper: collapse one multi-response item (five 0/1 columns) into a single 1..5 severity
most_severe <- function(data, stem, map = severity_map) {
  # Build the expected column names for this stem
  suf  <- names(map)                           # c("1","2","3","9","4")
  cols <- paste0(stem, "_", suf)

  # Safety checks: are all expected columns present?
  missing <- setdiff(cols, names(data))
  if (length(missing)) {
    stop("Missing columns for '", stem, "': ", paste(missing, collapse = ", "))
  }

  # Grab the indicators as a numeric matrix (0/1/NA)
  M <- as.matrix(data[cols])

  # Treat 0 as "not selected" -> NA, so they don't affect the max
  M[M == 0] <- NA

  # Weight each column by its severity value (1..5) so max() = most severe chosen
  sev <- as.numeric(map)
  W   <- sweep(M, 2, sev, `*`)   # column j multiplied by sev[j]

  # Row-wise max ignoring NAs; if all NA -> NA
  out <- apply(W, 1, function(x) {
    m <- suppressWarnings(max(x, na.rm = TRUE))
    if (is.infinite(m)) NA_real_ else m
  })

  # Return as integer 1..5 (or NA if nothing ticked)
  as.integer(out)
}

# Apply to your two stems
stems <- c("SpecCritW1", "SpecCritW2")

for (s in stems) {
  newcol <- paste0(s, "_severity")
  stacked_num[[newcol]] <- most_severe(stacked_num, s)
}
Toggle Demographic From Study C1
Demographics$flag_inconsistent <- (Demographics$Job_match_6 == "None of the above") & 
  (Demographics$Job_match_1 != "" | Demographics$Job_match_2 != "" | Demographics$Job_match_3 != "" | 
   Demographics$Job_match_4 != "" | Demographics$Job_match_5 != "")




paste0("840 participants took part in the study. Mean age in the sample is ", mean(as.numeric(Demographics$age)), ", SD = ", sd(as.numeric(Demographics$age)))
## [1] "840 participants took part in the study. Mean age in the sample is 46.3724832214764, SD = 15.8570603283939"
## Gender

Demographics %>% group_by(gender) %>% summarise(N=n()) %>%
  ggplot(aes(x=gender,y=N,fill=gender))+
  geom_bar(stat = 'identity',color='black')+
  scale_y_continuous(labels = scales::comma_format(accuracy = 2))+
  geom_text(aes(label=N),vjust=-0.25,fontface='bold')+
  theme_bw()+
  theme(axis.text = element_text(color='black',face='bold'),
        axis.title = element_text(color='black',face='bold'),
        legend.text = element_text(color='black',face='bold'),
        legend.title = element_text(color='black',face='bold')) +
  ggtitle("Gender distribution")

## Occupations
#colnames(Set)
#jobs <- unlist(Demographics[-which(Demographics$flag_inconsistent == T), 4:10])           # Make a long list of all jobs that were named
# Columns 4:9 hold the six job-matches
job_mat <- Demographics[, 4:9]

# 1) Long list of named jobs (ignore blanks here)
jobs <- unlist(job_mat, use.names = FALSE)
jobs <- jobs[jobs != "" & !is.na(jobs)]

# 2) Count named jobs
job_df <- as.data.frame(table(jobs), stringsAsFactors = FALSE)
colnames(job_df) <- c("Job", "Count")

# 3) Count "None of the above" = rows where ALL six entries are blank (or NA)
none_count <- sum(apply(job_mat, 1, function(x) all(is.na(x) | x == "")))

# 4) Append that category
job_df <- rbind(job_df, data.frame(Job = "None of the above", Count = none_count))

# (optional) make Job a factor so it shows up nicely; here we keep your original plotting as-is
# job_df$Job <- factor(job_df$Job)

# 5) Plot (your code)
ggplot(job_df, aes(x = Job, y = Count, fill = Job)) +
  geom_bar(stat = 'identity', color = 'black') +
  scale_y_continuous(labels = scales::comma_format(accuracy = 2)) +
  geom_text(aes(label = Count), vjust = -0.25, fontface = 'bold') +
  theme_bw() +
  theme(axis.text = element_text(color = 'black', face = 'bold'),
        axis.title = element_text(color = 'black', face = 'bold'),
        legend.text = element_text(color = 'black', face = 'bold'),
        legend.title = element_text(color = 'black', face = 'bold')) +
  ggtitle("Job distribution")

Replicating Factor structure

Scale description

The previously validated hero scale measure the 5 hypothesised outcomes of perceptions of heroism. Each outcome is further decomposed in a general-level item type (i.e., items assessing general outcome) and a specific-level item type (i.e., reactions associated with a specific fictitious example).

Our previous validation in a sample of 440 UK residents evaluated that the final scale was reliable with omegas in each dimension between .7 and .9 (see online report, https://jeanmoneger.com/uploads/registered_factor_analyses#D_Refining_the_scale).

We added a new measure of support for worker’s demands because our previous one was unsatisfying in our validation study. The new measure directly contrasts the legitimacy of the workers vs the government in taking action for improving the workers’ conditions (see material). In addition, because of the nature of our specific-level acceptability of violations regulations (i.e., moral dilemmas based on the existing regulations of each independent occupations), we had to assess our dilemmas in a separate study (see https://osf.io/bjpgd/).

New measures were also added to explore newly generated hypotheses regarding the links between occupational heroism and workers’ exploitation and perceived suffering. Namely, we added measures of 1) perception that workers would willingly accept exploitative policies; 2) support for exploitative policies of workers; 3) perception that workers would willingly suffer for their mission.

Structure reproduction

We wanted to assess if the structure of the scale was reproduced in this new sample. We reproduced the analyses from the previous validation study. Overall, our scale was highly reliable, with the only exception of our new measure of support for workers’ demands that was associated with a low interitem correlation. Caution should be taken when interpreting results of this factor. We will conduct exploratory analyses using only the item ‘[it is justified for] XXX, and not the government, to take the lead on improvements that benefit the profession’ which is closely related to our target outcome of support for workers’ demands.

Toggle details of the structure analyses: Factor analyses, items distributions, etc.
# Define items per construct 
gratitude_items <- grep("GeneralGrat|SpecGrat", names(stacked_num), value = TRUE)
criticism_items <- grep("SpecCritW1_severity|SpecCritW2_severity|GenCrit", names(stacked_num), value = TRUE)
demand_items    <- grep("SpecSupp|SupportDem_Weld_1", names(stacked_num), value = TRUE)
victim_items    <- grep("GenVict|SpecVictim", names(stacked_num), value = TRUE)
violation_items <- grep("GenImp|SpecImp", names(stacked_num), value = TRUE)
Endure_Items <- grep("Endure_", names(stacked_num), value = TRUE)
SelfExploit_Items <- grep("SelfExploit_", names(stacked_num), value = TRUE)
SuppportExploit_Items <- grep("SupportExploit_", names(stacked_num), value = TRUE)

# Store all subscales in a named list for looping
scales <- list(
  Gratitude = gratitude_items,
  Criticism = criticism_items,
  Demands = demand_items,
  Victimhood = victim_items,
  Violations = violation_items,
  Endure = Endure_Items,
  SelfExploit = SelfExploit_Items,
  SupportExploit = SuppportExploit_Items
)

# Remove Attention checks



item_diagnostics <- function(df, items) {
  non_empty_items <- items[!sapply(df[items], function(x) all(is.na(x)))]

  if (length(non_empty_items) == 0) return(NULL)

  stats <- psych::describe(df[non_empty_items])
  out <- stats[, c("mean", "sd", "skew", "kurtosis")]
  flags <- ifelse(abs(out$skew) > 1 | abs(out$kurtosis) > 1, "⚠️", "")

  # Create histograms using ggplot2
  plots <- lapply(non_empty_items, function(item) {
    ggplot(df, aes_string(x = item)) +
      geom_histogram(bins = 20, fill = "grey", color = "black") +
      theme_minimal() +
      labs(title = paste("Histogram of", item), x = item, y = "Count")
  })
  names(plots) <- non_empty_items

  return(list(
    stats = out,
    flag = flags,
    plots = plots
  ))
}


# Run diagnostics for each scale
diagnostics <- lapply(scales, function(items) item_diagnostics(stacked_num, items))
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
#diagnostics




inter_item_corr <- lapply(names(scales), function(scale_name) {
  items <- scales[[scale_name]]
  # compute pairwise correlations, handling missing data
  cor(stacked_num[, items], use = "pairwise.complete.obs")
})
names(inter_item_corr) <- names(scales)

# To inspect:
#inter_item_corr$Gratitude      # matrix of Gratitude items
#inter_item_corr$Criticism      # matrix of Criticism items
#inter_item_corr$Demands
#inter_item_corr$Victimhood
#inter_item_corr$Violations



### Reversing items
stacked_num$SpecVictimW_1<- 8 -stacked_num$SpecVictimW_1

stacked_num$GenCritW_1<- 8 -stacked_num$GenCritW_1
stacked_num$GenCritW_2<- 8 -stacked_num$GenCritW_2
stacked_num$GenCritW_3<- 8 -stacked_num$GenCritW_3


stacked_num$Endure_SW_2<- 8 -stacked_num$Endure_SW_2
stacked_num$Endure_SW_3<- 8 -stacked_num$Endure_SW_3

stacked_num$SpecCritW1_severity<- 6 -stacked_num$SpecCritW1_severity
stacked_num$SpecCritW2_severity<- 6 -stacked_num$SpecCritW2_severity


# Factor analyses

library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:modelsummary':
## 
##     SD
## The following object is masked from 'package:lavaan':
## 
##     cor2cov
## The following object is masked from 'package:effectsize':
## 
##     phi
## The following object is masked from 'package:car':
## 
##     logit
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
for (scale_name in names(scales)) {
  vars <- stacked_num[scales[[scale_name]]]

  if (ncol(vars) < 2) {
    message("Skipping ", scale_name, ": only ", ncol(vars), " item(s).")
    next
  }

  # 1) KMO on the raw numeric matrix
  kmo_out <- KMO(as.matrix(vars))
  cat("\n\n===", scale_name, "===\n")
  cat("Overall KMO:", round(kmo_out$MSA, 2), "\n")

  # 2) Pearson correlation matrix
  R <- cor(vars, use="pairwise.complete.obs")

  # 3) Bartlett’s test on R
  bart_out <- cortest.bartlett(R, n = nrow(stacked_num))
  cat("Bartlett’s χ²:", round(bart_out$chisq,2),
      "df =", bart_out$df,
      "p =", format.pval(bart_out$p.value), "\n")

  # 4) Scree plot
  ev <- eigen(R)$values
  plot(ev, type="b",
       xlab="Factor #", ylab="Eigenvalue",
       main=paste("Scree:", scale_name))
  abline(h=1, lty=2)

  # 5) Parallel analysis on Pearson R
  fa.parallel(R,
              n.obs  = nrow(stacked_num),
              fa     = "fa",
              n.iter = 500,
              main   = paste("Parallel Analysis:", scale_name))

  mean_name <- paste0(scale_name, "_mean")
  stacked_num[[mean_name]] <- rowMeans(vars, na.rm = TRUE)
  cat("Stored ", mean_name, " (mean of ", ncol(vars), " items)\n", sep = "")

}
## 
## 
## === Gratitude ===
## Overall KMO: 0.77 
## Bartlett’s χ²: 1895.38 df = 6 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA 
## Stored Gratitude_mean (mean of 4 items)
## 
## 
## === Criticism ===
## Overall KMO: 0.68 
## Bartlett’s χ²: 2357.09 df = 10 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA 
## Stored Criticism_mean (mean of 5 items)
## 
## 
## === Demands ===
## Overall KMO: 0.51 
## Bartlett’s χ²: 826.39 df = 3 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  1  and the number of components =  NA 
## Stored Demands_mean (mean of 3 items)
## 
## 
## === Victimhood ===
## Overall KMO: 0.75 
## Bartlett’s χ²: 3260.6 df = 15 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA 
## Stored Victimhood_mean (mean of 6 items)
## 
## 
## === Violations ===
## Overall KMO: 0.74 
## Bartlett’s χ²: 3708.28 df = 15 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA 
## Stored Violations_mean (mean of 6 items)
## 
## 
## === Endure ===
## Overall KMO: 0.77 
## Bartlett’s χ²: 2847.65 df = 21 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA 
## Stored Endure_mean (mean of 7 items)
## 
## 
## === SelfExploit ===
## Overall KMO: 0.81 
## Bartlett’s χ²: 3651.85 df = 21 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA 
## Stored SelfExploit_mean (mean of 7 items)
## 
## 
## === SupportExploit ===
## Overall KMO: 0.83 
## Bartlett’s χ²: 3494.11 df = 21 p = < 2.22e-16

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA 
## Stored SupportExploit_mean (mean of 7 items)
items_ <- scales[["Gratitude"]]
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")
## Loading required namespace: GPArotation
# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##              ML1    ML2   
## SpecGratW_1   0.659       
## SpecGratW_2   0.839       
## SpecGratW_3   0.900       
## GeneralGratW         0.348
## 
##                  ML1   ML2
## SS loadings    2.034 0.197
## Proportion Var 0.508 0.049
## Cumulative Var 0.508 0.558
### Two, perfectly defined subscale: general vs specific
GEN_gratitude_items <- grep("GeneralGratW", names(stacked_num), value = TRUE)
SPEC_gratitude_items <- grep("SpecGratW", names(stacked_num), value = TRUE)


#### ####
#### Criticism

items_ <- scales[["Criticism"]]      # or scales$Gratitude
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")

# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##                     ML1    ML2   
## GenCritW_1           0.880       
## GenCritW_2           0.913       
## GenCritW_3           0.603       
## SpecCritW1_severity         0.664
## SpecCritW2_severity         0.883
## 
##                  ML1   ML2
## SS loadings    1.975 1.234
## Proportion Var 0.395 0.247
## Cumulative Var 0.395 0.642
## 3 factors: 1 clear general with only the 3 first that are good:
criticism_items_G <- grep("GenCritW", names(stacked_num), value = TRUE)
# Only the 'chill' posts are good. the two extreme ones measuring something else.
criticism_items_S <- grep("severity", names(stacked_num), value = TRUE)



#### ####
####Demands

items_ <- scales[["Demands"]]      # or scales$Gratitude
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")

# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##                   ML1    ML2   
## SpecSuppW_1        0.921  0.383
## SpecSuppW_3        0.921 -0.383
## SupportDem_Weld_1              
## 
##                  ML1   ML2
## SS loadings    1.714 0.293
## Proportion Var 0.571 0.098
## Cumulative Var 0.571 0.669
print("Oh, look out here -- the general measure seems to be pretty orthogonal - not loading on any dimension... this is something that we will see, is a problem in the CFA (see Measurement model).")
## [1] "Oh, look out here -- the general measure seems to be pretty orthogonal - not loading on any dimension... this is something that we will see, is a problem in the CFA (see Measurement model)."
# Let's keep the General that is distinct from specific (focus on protesting)
DemandSupp_G <- grep("SupportDem_Weld_1", names(stacked_num), value = TRUE)

# As for the specific, they are all in.

DemandSupp_S <- grep("SpecSuppW", names(stacked_num), value = TRUE)

#### ####
#### Victimhood


items_ <- scales[["Victimhood"]]      # or scales$Gratitude
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")

# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##               ML1    ML2   
## GenVictW_1     0.835       
## GenVictW_2     0.908       
## GenVictW_3     0.862       
## SpecVictimW_1         0.337
## SpecVictimW_2         0.706
## SpecVictimW_3         0.880
## 
##                  ML1   ML2
## SS loadings    2.267 1.397
## Proportion Var 0.378 0.233
## Cumulative Var 0.378 0.611
# General works fine
Victim_G  <- grep("GenVictW", names(stacked_num), value = TRUE)
# Same for Specific
Victim_S  <- grep("SpecVictimW", names(stacked_num), value = TRUE)



#### ####
#### Violations


items_ <- scales[["Violations"]]      # or scales$Gratitude
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")

# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##            ML1    ML2   
## GenImpW_1          0.820
## GenImpW_2          0.739
## GenImpW_4          0.599
## SpecImpW_2  0.860       
## SpecImpW_3  0.909       
## SpecImpW_4  0.911       
## 
##                  ML1   ML2
## SS loadings    2.409 1.578
## Proportion Var 0.402 0.263
## Cumulative Var 0.402 0.665
# Here also: general works fine

Villain_G  <- grep("GenImpW", names(stacked_num), value = TRUE)

## But specific not so much...
Villain_S <- grep("SpecImpW", names(stacked_num), value = TRUE)




#### ####
#### Endure
items_ <- scales[["Endure"]]      # or scales$Gratitude
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")

# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##             ML2    ML1   
## Endure_SW_1              
## Endure_SW_2         0.997
## Endure_SW_3         0.536
## Endure_GW_1  0.853       
## Endure_GW_2  0.653       
## Endure_GW_3  0.881       
## Endure_GW_4  0.708       
## 
##                  ML2   ML1
## SS loadings    2.497 1.340
## Proportion Var 0.357 0.191
## Cumulative Var 0.357 0.548
print("Oh, look out here -- The first item os specific enduring is bad. It should be removed. ")
## [1] "Oh, look out here -- The first item os specific enduring is bad. It should be removed. "
print("")
## [1] ""
print("For context, the first item is *Continue working because of the pain*, apparently irrelevant")
## [1] "For context, the first item is *Continue working because of the pain*, apparently irrelevant"
Endure_G  <- grep("Endure_GW", names(stacked_num), value = TRUE)

## But specific not so much...
Endure_S <- c("Endure_SW_2", "Endure_SW_3") # Ok, I only keep item 2 and 3




#### ####
#### Self Exploitation
items_ <- scales[["SelfExploit"]]      # or scales$Gratitude
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")

# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##                  ML1    ML2   
## SelfExploit_SW_1         0.769
## SelfExploit_SW_2         0.828
## SelfExploit_SW_3         0.805
## SelfExploit_GW_1  0.771       
## SelfExploit_GW_2  0.746       
## SelfExploit_GW_3  0.695       
## SelfExploit_GW_4  0.858       
## 
##                  ML1   ML2
## SS loadings    2.374 1.932
## Proportion Var 0.339 0.276
## Cumulative Var 0.339 0.615
SelfExploit_G  <- grep("SelfExploit_GW", names(stacked_num), value = TRUE)

SelfExploit_S <- grep("SelfExploit_SW", names(stacked_num), value = TRUE)



#### ####
#### SupportExploit
items_ <- scales[["SupportExploit"]]      # or scales$Gratitude
# 2) subset your data
Subdf    <- stacked_num[, items_]
# 3) get the Pearson R matrix and run ML‐FA with oblimin
Mat_cor <- cor(Subdf, use = "pairwise.complete.obs")
Res_fa  <- fa(r       = Mat_cor,
              nfactors = 2,
              n.obs    = nrow(Subdf),
              fm       = "ml",
              rotate   = "oblimin")

# 4) print out the loadings
print(Res_fa$loadings, cutoff = .30)
## 
## Loadings:
##                     ML1    ML2   
## SupportExploit_SW_1         0.695
## SupportExploit_SW_2         0.874
## SupportExploit_SW_3         0.762
## SupportExploit_GW_1  0.708       
## SupportExploit_GW_2  0.751       
## SupportExploit_GW_3  0.796       
## SupportExploit_GW_4  0.789       
## 
##                  ML1   ML2
## SS loadings    2.328 1.829
## Proportion Var 0.333 0.261
## Cumulative Var 0.333 0.594
SupportExploit_G  <- grep("SupportExploit_GW", names(stacked_num), value = TRUE)

SupportExploit_S <- grep("SupportExploit_SW", names(stacked_num), value = TRUE)






scales <- list(
  Gratitude_G = GEN_gratitude_items,
  Gratitude_S = SPEC_gratitude_items,

  criticism_items_G = criticism_items_G,
  criticism_items_S = criticism_items_S,

  DemandSupp_G  = DemandSupp_G,
  DemandSupp_S = DemandSupp_S,# Only 2 items

  Victim_G  = Victim_G ,
  Victim_S = Victim_S,

  Villain_G = Villain_G,
  Villain_S = Villain_S,
  
  Endure_G = Endure_G,
  Endure_S = Endure_S,
  
  SelfExploit_G = SelfExploit_G,
  SelfExploit_S = SelfExploit_S,
  
  SupportExploit_G = SupportExploit_G,
  SupportExploit_S = SupportExploit_S
)


for (name in names(scales)) {
  items <- scales[[name]]
  df_subset <- stacked_num[items]
  stacked_num[[paste0(name, "_mean")]] <- rowMeans(df_subset, na.rm = TRUE)
}

sapply(scales, length)
##       Gratitude_G       Gratitude_S criticism_items_G criticism_items_S 
##                 1                 3                 3                 2 
##      DemandSupp_G      DemandSupp_S          Victim_G          Victim_S 
##                 1                 2                 3                 3 
##         Villain_G         Villain_S          Endure_G          Endure_S 
##                 3                 3                 4                 2 
##     SelfExploit_G     SelfExploit_S  SupportExploit_G  SupportExploit_S 
##                 4                 3                 4                 3
# keep only scales that have 2+ items
scales_2plus <- Filter(function(v) length(v) >= 2, scales)

reliability_results <- lapply(scales_2plus, function(items) {
  df_subset <- stacked_num[, items, drop = FALSE]         # keep as data.frame
  df_subset <- df_subset[complete.cases(df_subset), , drop = FALSE]
  if (nrow(df_subset) < 2) return(NULL)                   # optional guard
  psych::omega(df_subset, nfactors = 1, plot = FALSE)
})
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in cov2cor(t(w) %*% r %*% w): diag(V) had non-positive or NA entries;
## the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## diag(V) had non-positive or NA entries; the non-finite result may be dubious
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
omega_values <- sapply(reliability_results, function(res) res$omega.tot)

omega_summary <- tibble(
  Scale = names(omega_values),
  Omega_total = round(omega_values, 2)
)
omega_summary %>%
  gt() %>%
  tab_header("McDonald's ω (Total) by Subscale") %>%
  fmt_number(columns = "Omega_total", decimals = 2)
McDonald's ω (Total) by Subscale
Scale Omega_total
Gratitude_S 0.86
criticism_items_G 0.85
criticism_items_S 0.75
DemandSupp_S 0.82
Victim_G 0.90
Victim_S 0.70
Villain_G 0.77
Villain_S 0.92
Endure_G 0.86
Endure_S 0.69
SelfExploit_G 0.85
SelfExploit_S 0.84
SupportExploit_G 0.85
SupportExploit_S 0.82

Measurement model

We registered the following approach to data analysis:

we will compute a SEM using lavaan with an MLR estimator (Rosseel, 2012) to assess the second order measurement model where each of our five latent constructs explain their own two levels (general and specific) of latent construct, each in turn explaining the items of our scales. If the model does not have a satisfying fit (CFI < .90, or TLI < .90, or RMSEA > .08, or SRMR > .08) then we will disregard the model and assess each level of measure separately. If however, the model has a satisfying fit, and if the two levels of measure (specific and general) are associated with a factor loading > .5 on their higher order latent construct, then we will average the two scores and treat the higher order construct as unitary. If for one factor, the loadings of the specific or the general level is below .5, then we will treat the two levels of measure independently.

Using Lavaan, let’s fit a measurement model of second order using two levels of latent variable

Measures <- Latent variable 1 (eg, gratitude specific v gratitude general) <- Latent variable 2 (e.g., gratitude)

library(lavaan)

# --- choose reliabilities for single-indicator "general" measures (edit these) ---
reliability_single <- list(
  GeneralGratW = 0.80,
  SupportDem_Weld_1   = 0.80 
)

make_single_indicator_factor <- function(data, factor_name, indicator_name, rel) {

  if (!indicator_name %in% names(data)) {
    stop("Single-indicator variable not found in data: ", indicator_name)
  }

  x <- data[[indicator_name]]
  v <- stats::var(x, na.rm = TRUE)

  if (is.na(v) || v <= 0) {
    stop("Variance for ", indicator_name, " is NA or <= 0 (cannot set error variance).")
  }

  if (is.na(rel) || rel <= 0 || rel >= 1) {
    stop("Reliability for ", indicator_name, " must be between 0 and 1 (exclusive).")
  }

  err <- (1 - rel) * v

  paste0(
    factor_name, " =~ 1*", indicator_name, "\n",
    indicator_name, " ~~ ", sprintf("%.6f", err), "*", indicator_name, "\n"
  )
}
# Ok so, because it is a single item, the variance is estimated following (1 - rel) * Var(observed). See https://www.sciencedirect.com/science/article/abs/pii/S1053482208000302 : 
# A third approach to representing a latent variable involves forming a sum of all of the items used to measure the underlying construct, and using the resulting scale as a single indicator of the latent variable. A key aspect of this approach is that this basic model will not be identified, and the unique variance for the single indicator can not be obtained. Given this, it has been suggested (e.g. Bollen, 1989) that researchers should obtain a reliability estimate for the scale (relS), and use this estimate to calculate a value to be used as an estimate of the unique variance for the indicator. This estimate of the unique variance for the indicator is calculated by multiplying the quantity (1 − relS) times the variance of the scale (σ2) and using the resulting value as a fixed parameter (⁎). Thus, this approach does not estimate a unique variance for the aggregated scale as part of the model, but it does avoid the researcher having to assume that the scale has no measurement error.

# ----- measurement model -----
model_measurement <- paste0(
  # ========= GRATITUDE =========
  "SpecGrat =~ SpecGratW_1 + SpecGratW_2 + SpecGratW_3\n",
# Note Gen grat = single item (see above)
  # ========= CRITICISM =========
  "GenCrit  =~ GenCritW_1 + GenCritW_2 + GenCritW_3\n",
  "SpecCrit =~ SpecCritW1_severity + SpecCritW2_severity\n",

  # ========= SUPPORT =========
  "SpecSupp =~ SpecSuppW_1 + SpecSuppW_3\n",
  # NOTE: GenSupp is now single-indicator (defined below), using GenSuppW_2 only

  # ========= VICTIM =========
  "GenVict  =~ GenVictW_1 + GenVictW_2 + GenVictW_3\n",
  "SpecVict =~ SpecVictimW_1 + SpecVictimW_2 + SpecVictimW_3\n",

  # ========= IMPUNITY =========
  "GenImp   =~ GenImpW_1 + GenImpW_2 + GenImpW_4\n",
  "SpecImp  =~ SpecImpW_2 + SpecImpW_3 + SpecImpW_4\n",

# ========= Endure =========
  "GenEnd   =~ Endure_GW_1 + Endure_GW_2 + Endure_GW_3 + Endure_GW_4\n",
  "SpecEnd  =~ Endure_SW_1 + Endure_SW_2 + Endure_SW_3\n",

# ========= Self exploit =========
  "GenSelfExpl   =~ SelfExploit_GW_1 + SelfExploit_GW_2 + SelfExploit_GW_3 + SelfExploit_GW_4\n",
  "SpecSelfExpl  =~ SelfExploit_SW_1 + SelfExploit_SW_2 + SelfExploit_SW_3\n",

# ========= Support Exploit =========
  "GenSuppExpl   =~ SupportExploit_GW_1 + SupportExploit_GW_2 + SupportExploit_GW_3 + SupportExploit_GW_4\n",
  "SpecSuppExpl  =~ SupportExploit_SW_1 + SupportExploit_SW_2 + SupportExploit_SW_3\n",

  # ========= SECOND-ORDER CONSTRUCTS =========
  "Gratitude  =~ SpecGrat + GenGrat\n",
  "Criticism  =~ SpecCrit + GenCrit\n",
  "Support    =~ SpecSupp + GenSupp\n",
  "Victim     =~ SpecVict + GenVict\n",
  "Impunity   =~ SpecImp  + GenImp\n",
  "Endure     =~ GenEnd   + SpecEnd\n",
  "SelfExploit=~ GenSelfExpl   + SpecSelfExpl\n",
  "SuppExpl   =~ GenSuppExpl   + SpecSuppExpl\n"

)

# Add single-indicator factors (Gratitude general + Support general)
model_measurement <- paste0(
  model_measurement, "\n",
  make_single_indicator_factor(stacked_num, "GenGrat", "GeneralGratW", reliability_single$GeneralGratW), "\n",
  make_single_indicator_factor(stacked_num, "GenSupp", "SupportDem_Weld_1",   reliability_single$SupportDem_Weld_1)
)

fit <- cfa(
  model = model_measurement,
  data  = stacked_num,
  estimator = "MLR",     # robust SEs; good default for Likert-ish items
  missing = "fiml", # There's no missing anyway so does not matter
  std.lv = TRUE          # makes higher-order identification usually less annoying / must investigate
)
## Warning: lavaan->lav_object_post_check():  
##    covariance matrix of latent variables is not positive definite ; use 
##    lavInspect(fit, "cov.lv") to investigate.
summary(fit, fit.measures = TRUE, standardized = TRUE)
## Warning: lavaan->lav_fit_cfi_lavobject():  
##    computation of robust CFI failed.
## Warning: lavaan->lav_fit_rmsea_lavobject():  
##    computation of robust RMSEA failed.
## lavaan 0.6-20 ended normally after 1315 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                       175
## 
##   Number of observations                          1192
##   Number of missing patterns                         4
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                              3062.969    2798.172
##   Degrees of freedom                               905         905
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.095
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                             26808.463   23455.379
##   Degrees of freedom                               990         990
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.143
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.916       0.916
##   Tucker-Lewis Index (TLI)                       0.909       0.908
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -83826.110  -83826.110
##   Scaling correction factor                                  1.299
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)     -82294.626  -82294.626
##   Scaling correction factor                                  1.128
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                              168002.221  168002.221
##   Bayesian (BIC)                            168891.814  168891.814
##   Sample-size adjusted Bayesian (SABIC)     168335.948  168335.948
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.045       0.042
##   90 Percent confidence interval - lower         0.043       0.040
##   90 Percent confidence interval - upper         0.046       0.044
##   P-value H_0: RMSEA <= 0.050                    1.000       1.000
##   P-value H_0: RMSEA >= 0.080                    0.000       0.000
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                        NA
##   90 Percent confidence interval - upper                        NA
##   P-value H_0: Robust RMSEA <= 0.050                            NA
##   P-value H_0: Robust RMSEA >= 0.080                            NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.064       0.064
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SpecGrat =~                                                           
##     SpecGratW_1       1.114    0.053   21.153    0.000    1.491    0.758
##     SpecGratW_2       1.164    0.057   20.531    0.000    1.557    0.883
##     SpecGratW_3       1.010    0.053   18.969    0.000    1.352    0.813
##   GenCrit =~                                                            
##     GenCritW_1        0.725    0.054   13.443    0.000    1.073    0.871
##     GenCritW_2        0.779    0.056   13.850    0.000    1.153    0.906
##     GenCritW_3        0.574    0.043   13.314    0.000    0.850    0.651
##   SpecCrit =~                                                           
##     SpcCrtW1_svrty    0.661    0.038   17.446    0.000    0.749    0.779
##     SpcCrtW2_svrty    0.688    0.037   18.851    0.000    0.781    0.765
##   SpecSupp =~                                                           
##     SpecSuppW_1       0.793    0.065   12.185    0.000    1.178    0.874
##     SpecSuppW_3       0.756    0.061   12.447    0.000    1.123    0.803
##   GenVict =~                                                            
##     GenVictW_1        0.886    0.039   22.714    0.000    1.139    0.792
##     GenVictW_2        1.105    0.040   27.337    0.000    1.421    0.916
##     GenVictW_3        1.084    0.039   27.867    0.000    1.395    0.892
##   SpecVict =~                                                           
##     SpecVictimW_1     0.293    0.033    8.880    0.000    0.451    0.324
##     SpecVictimW_2     0.637    0.042   15.067    0.000    0.979    0.770
##     SpecVictimW_3     0.660    0.045   14.701    0.000    1.015    0.823
##   GenImp =~                                                             
##     GenImpW_1         0.986    0.065   15.076    0.000    1.138    0.815
##     GenImpW_2         0.986    0.059   16.800    0.000    1.138    0.718
##     GenImpW_4         0.914    0.048   18.982    0.000    1.056    0.636
##   SpecImp =~                                                            
##     SpecImpW_2        1.398    0.051   27.404    0.000    1.532    0.856
##     SpecImpW_3        1.410    0.048   29.187    0.000    1.545    0.912
##     SpecImpW_4        1.484    0.047   31.567    0.000    1.626    0.912
##   GenEnd =~                                                             
##     Endure_GW_1       0.007    0.000   46.808    0.000    1.253    0.843
##     Endure_GW_2       0.005    0.000   26.000    0.000    0.926    0.667
##     Endure_GW_3       0.007    0.000   44.765    0.000    1.252    0.881
##     Endure_GW_4       0.006    0.000   30.942    0.000    1.074    0.713
##   SpecEnd =~                                                            
##     Endure_SW_1       0.432    0.058    7.446    0.000    0.442    0.296
##     Endure_SW_2       1.403    0.100   14.003    0.000    1.433    0.978
##     Endure_SW_3       0.831    0.061   13.706    0.000    0.848    0.538
##   GenSelfExpl =~                                                        
##     SelfExplt_GW_1    0.894    0.057   15.601    0.000    1.265    0.782
##     SelfExplt_GW_2    0.710    0.048   14.922    0.000    1.005    0.750
##     SelfExplt_GW_3    0.756    0.050   15.076    0.000    1.070    0.726
##     SelfExplt_GW_4    0.824    0.054   15.134    0.000    1.167    0.828
##   SpecSelfExpl =~                                                       
##     SelfExplt_SW_1    0.869    0.039   22.456    0.000    0.994    0.744
##     SelfExplt_SW_2    1.142    0.040   28.578    0.000    1.307    0.840
##     SelfExplt_SW_3    1.108    0.038   28.905    0.000    1.268    0.814
##   GenSuppExpl =~                                                        
##     SpprtExpl_GW_1    0.634    0.050   12.738    0.000    0.936    0.701
##     SpprtExpl_GW_2    0.739    0.053   13.890    0.000    1.090    0.758
##     SpprtExpl_GW_3    0.747    0.053   14.029    0.000    1.102    0.794
##     SpprtExpl_GW_4    0.783    0.056   14.097    0.000    1.155    0.792
##   SpecSuppExpl =~                                                       
##     SpprtExpl_SW_1    0.659    0.050   13.165    0.000    0.925    0.653
##     SpprtExpl_SW_2    0.795    0.057   13.855    0.000    1.116    0.889
##     SpprtExpl_SW_3    0.762    0.056   13.528    0.000    1.069    0.777
##   Gratitude =~                                                          
##     SpecGrat          0.889    0.090    9.845    0.000    0.664    0.664
##     GenGrat           0.848    0.040   21.386    0.000    0.647    0.647
##   Criticism =~                                                          
##     SpecCrit          0.535    0.056    9.502    0.000    0.471    0.471
##     GenCrit           1.091    0.136    8.033    0.000    0.737    0.737
##   Support =~                                                            
##     SpecSupp          1.098    0.145    7.580    0.000    0.739    0.739
##     GenSupp          -0.344    0.058   -5.894    0.000   -0.325   -0.325
##   Victim =~                                                             
##     SpecVict          1.169    0.115   10.200    0.000    0.760    0.760
##     GenVict           0.809    0.065   12.435    0.000    0.629    0.629
##   Impunity =~                                                           
##     SpecImp           0.448    0.069    6.498    0.000    0.409    0.409
##     GenImp            0.578    0.102    5.671    0.000    0.500    0.500
##   Endure =~                                                             
##     GenEnd          186.243    2.896   64.320    0.000    1.000    1.000
##     SpecEnd           0.209    0.044    4.800    0.000    0.205    0.205
##   SelfExploit =~                                                        
##     GenSelfExpl       1.002    0.118    8.481    0.000    0.708    0.708
##     SpecSelfExpl      0.557    0.055   10.044    0.000    0.486    0.486
##   SuppExpl =~                                                           
##     GenSuppExpl       1.085    0.127    8.544    0.000    0.735    0.735
##     SpecSuppExpl      0.985    0.127    7.747    0.000    0.702    0.702
##   GenGrat =~                                                            
##     GeneralGratW      1.000                               1.311    0.903
##   GenSupp =~                                                            
##     SupprtDm_Wld_1    1.000                               1.058    0.857
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Gratitude ~~                                                          
##     Criticism        -0.869    0.062  -14.019    0.000   -0.869   -0.869
##     Support           0.719    0.060   12.002    0.000    0.719    0.719
##     Victim            0.794    0.048   16.430    0.000    0.794    0.794
##     Impunity          0.709    0.082    8.676    0.000    0.709    0.709
##     Endure            0.416    0.042    9.947    0.000    0.416    0.416
##     SelfExploit       0.535    0.059    9.061    0.000    0.535    0.535
##     SuppExpl         -0.037    0.063   -0.586    0.558   -0.037   -0.037
##   Criticism ~~                                                          
##     Support          -0.521    0.061   -8.557    0.000   -0.521   -0.521
##     Victim           -0.710    0.053  -13.462    0.000   -0.710   -0.710
##     Impunity         -0.696    0.102   -6.843    0.000   -0.696   -0.696
##     Endure           -0.295    0.043   -6.833    0.000   -0.295   -0.295
##     SelfExploit      -0.314    0.062   -5.103    0.000   -0.314   -0.314
##     SuppExpl          0.358    0.058    6.132    0.000    0.358    0.358
##   Support ~~                                                            
##     Victim            0.950    0.060   15.729    0.000    0.950    0.950
##     Impunity          0.521    0.100    5.193    0.000    0.521    0.521
##     Endure            0.223    0.050    4.510    0.000    0.223    0.223
##     SelfExploit       0.300    0.067    4.481    0.000    0.300    0.300
##     SuppExpl         -0.481    0.067   -7.229    0.000   -0.481   -0.481
##   Victim ~~                                                             
##     Impunity          0.710    0.087    8.165    0.000    0.710    0.710
##     Endure            0.362    0.043    8.346    0.000    0.362    0.362
##     SelfExploit       0.461    0.058    7.913    0.000    0.461    0.461
##     SuppExpl         -0.386    0.065   -5.965    0.000   -0.386   -0.386
##   Impunity ~~                                                           
##     Endure            0.391    0.060    6.470    0.000    0.391    0.391
##     SelfExploit       0.500    0.086    5.789    0.000    0.500    0.500
##     SuppExpl          0.089    0.105    0.846    0.398    0.089    0.089
##   Endure ~~                                                             
##     SelfExploit       0.772    0.040   19.492    0.000    0.772    0.772
##     SuppExpl          0.170    0.054    3.160    0.002    0.170    0.170
##   SelfExploit ~~                                                        
##     SuppExpl          0.396    0.076    5.228    0.000    0.396    0.396
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .SpecGratW_1       3.589    0.057   63.003    0.000    3.589    1.825
##    .SpecGratW_2       2.944    0.051   57.662    0.000    2.944    1.670
##    .SpecGratW_3       2.746    0.048   57.028    0.000    2.746    1.652
##    .GenCritW_1        2.386    0.036   66.839    0.000    2.386    1.936
##    .GenCritW_2        2.478    0.037   67.181    0.000    2.478    1.946
##    .GenCritW_3        3.143    0.038   83.195    0.000    3.143    2.410
##    .SpcCrtW1_svrty    1.957    0.028   70.197    0.000    1.957    2.036
##    .SpcCrtW2_svrty    2.630    0.030   88.785    0.000    2.630    2.577
##    .SpecSuppW_1       4.788    0.039  122.645    0.000    4.788    3.552
##    .SpecSuppW_3       5.176    0.041  127.686    0.000    5.176    3.698
##    .GenVictW_1        2.687    0.042   64.496    0.000    2.687    1.868
##    .GenVictW_2        3.222    0.045   71.671    0.000    3.222    2.076
##    .GenVictW_3        3.064    0.045   67.616    0.000    3.064    1.958
##    .SpecVictimW_1     4.356    0.040  108.045    0.000    4.356    3.129
##    .SpecVictimW_2     5.279    0.037  143.314    0.000    5.279    4.151
##    .SpecVictimW_3     5.471    0.036  153.235    0.000    5.471    4.438
##    .GenImpW_1         4.327    0.040  107.032    0.000    4.327    3.100
##    .GenImpW_2         3.628    0.046   79.042    0.000    3.628    2.289
##    .GenImpW_4         3.607    0.048   75.036    0.000    3.607    2.173
##    .SpecImpW_2        5.049    0.052   97.379    0.000    5.049    2.821
##    .SpecImpW_3        5.121    0.049  104.306    0.000    5.121    3.021
##    .SpecImpW_4        4.951    0.052   95.827    0.000    4.951    2.776
##    .Endure_GW_1       3.808    0.043   88.457    0.000    3.808    2.562
##    .Endure_GW_2       4.009    0.040   99.673    0.000    4.009    2.887
##    .Endure_GW_3       4.053    0.041   98.414    0.000    4.053    2.851
##    .Endure_GW_4       4.172    0.044   95.710    0.000    4.172    2.772
##    .Endure_SW_1       4.870    0.043  112.621    0.000    4.870    3.262
##    .Endure_SW_2       3.311    0.042   77.986    0.000    3.311    2.259
##    .Endure_SW_3       3.924    0.046   85.908    0.000    3.924    2.488
##    .SelfExplt_GW_1    4.117    0.047   87.845    0.000    4.117    2.544
##    .SelfExplt_GW_2    4.656    0.039  120.002    0.000    4.656    3.476
##    .SelfExplt_GW_3    3.887    0.043   91.006    0.000    3.887    2.636
##    .SelfExplt_GW_4    4.362    0.041  106.813    0.000    4.362    3.094
##    .SelfExplt_SW_1    2.254    0.039   58.194    0.000    2.254    1.686
##    .SelfExplt_SW_2    2.587    0.045   57.438    0.000    2.587    1.664
##    .SelfExplt_SW_3    2.537    0.045   56.228    0.000    2.537    1.629
##    .SpprtExpl_GW_1    2.081    0.039   53.870    0.000    2.081    1.560
##    .SpprtExpl_GW_2    2.700    0.042   64.822    0.000    2.700    1.878
##    .SpprtExpl_GW_3    2.509    0.040   62.422    0.000    2.509    1.808
##    .SpprtExpl_GW_4    2.772    0.042   65.636    0.000    2.772    1.901
##    .SpprtExpl_SW_1    2.226    0.041   54.264    0.000    2.226    1.572
##    .SpprtExpl_SW_2    1.989    0.036   54.700    0.000    1.989    1.584
##    .SpprtExpl_SW_3    2.079    0.040   52.165    0.000    2.079    1.511
##    .GeneralGratW      5.128    0.040  126.986    0.000    5.128    3.531
##    .SupprtDm_Wld_1    3.986    0.041   96.964    0.000    3.986    3.231
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .GeneralGratW      0.389                               0.389    0.185
##    .SupprtDm_Wld_1    0.403                               0.403    0.265
##    .SpecGratW_1       1.645    0.100   16.503    0.000    1.645    0.425
##    .SpecGratW_2       0.683    0.075    9.079    0.000    0.683    0.220
##    .SpecGratW_3       0.936    0.073   12.747    0.000    0.936    0.339
##    .GenCritW_1        0.367    0.035   10.555    0.000    0.367    0.242
##    .GenCritW_2        0.292    0.033    8.954    0.000    0.292    0.180
##    .GenCritW_3        0.980    0.050   19.673    0.000    0.980    0.576
##    .SpcCrtW1_svrty    0.363    0.051    7.150    0.000    0.363    0.392
##    .SpcCrtW2_svrty    0.432    0.054    7.947    0.000    0.432    0.415
##    .SpecSuppW_1       0.428    0.067    6.363    0.000    0.428    0.236
##    .SpecSuppW_3       0.697    0.077    9.040    0.000    0.697    0.356
##    .GenVictW_1        0.771    0.051   15.193    0.000    0.771    0.373
##    .GenVictW_2        0.390    0.048    8.045    0.000    0.390    0.162
##    .GenVictW_3        0.501    0.053    9.481    0.000    0.501    0.205
##    .SpecVictimW_1     1.734    0.073   23.903    0.000    1.734    0.895
##    .SpecVictimW_2     0.658    0.073    8.975    0.000    0.658    0.407
##    .SpecVictimW_3     0.490    0.053    9.254    0.000    0.490    0.322
##    .GenImpW_1         0.653    0.072    9.023    0.000    0.653    0.335
##    .GenImpW_2         1.215    0.086   14.149    0.000    1.215    0.484
##    .GenImpW_4         1.638    0.107   15.278    0.000    1.638    0.595
##    .SpecImpW_2        0.857    0.113    7.551    0.000    0.857    0.267
##    .SpecImpW_3        0.485    0.053    9.160    0.000    0.485    0.169
##    .SpecImpW_4        0.536    0.063    8.576    0.000    0.536    0.169
##    .Endure_GW_1       0.640    0.056   11.392    0.000    0.640    0.290
##    .Endure_GW_2       1.071    0.055   19.386    0.000    1.071    0.555
##    .Endure_GW_3       0.454    0.049    9.228    0.000    0.454    0.225
##    .Endure_GW_4       1.112    0.067   16.661    0.000    1.112    0.491
##    .Endure_SW_1       2.034    0.093   21.907    0.000    2.034    0.912
##    .Endure_SW_2       0.095    0.260    0.364    0.716    0.095    0.044
##    .Endure_SW_3       1.768    0.116   15.295    0.000    1.768    0.711
##    .SelfExplt_GW_1    1.019    0.075   13.594    0.000    1.019    0.389
##    .SelfExplt_GW_2    0.784    0.053   14.678    0.000    0.784    0.437
##    .SelfExplt_GW_3    1.029    0.072   14.242    0.000    1.029    0.473
##    .SelfExplt_GW_4    0.625    0.054   11.554    0.000    0.625    0.315
##    .SelfExplt_SW_1    0.800    0.081    9.906    0.000    0.800    0.447
##    .SelfExplt_SW_2    0.711    0.071   10.031    0.000    0.711    0.294
##    .SelfExplt_SW_3    0.818    0.080   10.198    0.000    0.818    0.337
##    .SpprtExpl_GW_1    0.904    0.086   10.492    0.000    0.904    0.508
##    .SpprtExpl_GW_2    0.879    0.067   13.136    0.000    0.879    0.425
##    .SpprtExpl_GW_3    0.712    0.060   11.786    0.000    0.712    0.370
##    .SpprtExpl_GW_4    0.792    0.069   11.472    0.000    0.792    0.373
##    .SpprtExpl_SW_1    1.150    0.107   10.750    0.000    1.150    0.573
##    .SpprtExpl_SW_2    0.332    0.048    6.973    0.000    0.332    0.210
##    .SpprtExpl_SW_3    0.751    0.074   10.117    0.000    0.751    0.397
##    .SpecGrat          1.000                               0.559    0.559
##    .GenCrit           1.000                               0.457    0.457
##    .SpecCrit          1.000                               0.778    0.778
##    .SpecSupp          1.000                               0.453    0.453
##    .GenVict           1.000                               0.604    0.604
##    .SpecVict          1.000                               0.422    0.422
##    .GenImp            1.000                               0.750    0.750
##    .SpecImp           1.000                               0.833    0.833
##    .GenEnd            1.000                               0.000    0.000
##    .SpecEnd           1.000                               0.958    0.958
##    .GenSelfExpl       1.000                               0.499    0.499
##    .SpecSelfExpl      1.000                               0.763    0.763
##    .GenSuppExpl       1.000                               0.459    0.459
##    .SpecSuppExpl      1.000                               0.508    0.508
##     Gratitude         1.000                               1.000    1.000
##     Criticism         1.000                               1.000    1.000
##     Support           1.000                               1.000    1.000
##     Victim            1.000                               1.000    1.000
##     Impunity          1.000                               1.000    1.000
##     Endure            1.000                               1.000    1.000
##     SelfExploit       1.000                               1.000    1.000
##     SuppExpl          1.000                               1.000    1.000
##    .GenGrat           1.000                               0.582    0.582
##    .GenSupp           1.000                               0.894    0.894

The measurement model is overallok’: CFI and TLI > .9, and RMSEA and SRMR < .08. But, this is only the necessary component of the registration. We now inspect loadings of factors.

At the first levels, some items seems to do a bad job at measuring the constructs they’re intended to measure. If we apply a cut-off of item loading < .3, then at least the first specific measure of Endure (Endure_SW_1) seems to be disappointing (in the CFA, loading = .29). So let’s do some trimming and remove it – it might help with the low internal reliability of Specific enduring (omega = .66; omega = .69 upon removing it – see omega table above).

Now, let’s also look at another oddity in the measurement model: the general support for workers demands is doing a negative job (!!!) – the more we support workers following this general single item…… the less we support workers. That’s a red flag. Let’s drop it from the measurement model - this time, not as a psychometric trimming decision, but as a construct-validity decision.

We thus remove SUPPORT FOR WORKERS’ DEMANDS from the two levels measurement model.


Following registration - some factors can be merged in a higher level factor merging general-level and specific level (both 1st level factors associated with loadings > .5 on 2nd level factors): Gratitude; Victim perception; Support for exploitation.

Others factors are already out of the model for not behaving: Support for workers demands.

And others factors just do not make the threshold of a .5 loading for one of the two subfactors: Criticism acceptability (Specific level loading = .47); Impunity (Specific level loading = .41; the general one is bordeline with .5); Enduring pain (outrageous loading of 1 vs 0.15), and borderline belief worker would willingly accept exploitation (specific, loading= 0.48).

  • the Enduring Specific item #1 was associated with a factor loading < .3 and was thus discarded (as a standard practice). (this was done l. 865)
# ----- measurement model -----
model_measurement <- paste0(
  # ========= GRATITUDE =========
  "SpecGrat =~ SpecGratW_1 + SpecGratW_2 + SpecGratW_3\n",
# Note Gen grat = single item (see above)
  # ========= CRITICISM =========
  "GenCrit  =~ GenCritW_1 + GenCritW_2 + GenCritW_3\n",
  "SpecCrit =~ SpecCritW1_severity + SpecCritW2_severity\n",

  # ========= VICTIM =========
  "GenVict  =~ GenVictW_1 + GenVictW_2 + GenVictW_3\n",
  "SpecVict =~ SpecVictimW_1 + SpecVictimW_2 + SpecVictimW_3\n",

  # ========= IMPUNITY =========
  "GenImp   =~ GenImpW_1 + GenImpW_2 + GenImpW_4\n",
  "SpecImp  =~ SpecImpW_2 + SpecImpW_3 + SpecImpW_4\n",

# ========= Endure =========
  "GenEnd   =~ Endure_GW_1 + Endure_GW_2 + Endure_GW_3 + Endure_GW_4\n",
  "SpecEnd  =~ Endure_SW_2 + Endure_SW_3\n",

# ========= Self exploit =========
  "GenSelfExpl   =~ SelfExploit_GW_1 + SelfExploit_GW_2 + SelfExploit_GW_3 + SelfExploit_GW_4\n",
  "SpecSelfExpl  =~ SelfExploit_SW_1 + SelfExploit_SW_2 + SelfExploit_SW_3\n",

# ========= Support Exploit =========
  "GenSuppExpl   =~ SupportExploit_GW_1 + SupportExploit_GW_2 + SupportExploit_GW_3 + SupportExploit_GW_4\n",
  "SpecSuppExpl  =~ SupportExploit_SW_1 + SupportExploit_SW_2 + SupportExploit_SW_3\n",

  # ========= SECOND-ORDER CONSTRUCTS =========
  "Gratitude  =~ SpecGrat + GenGrat\n",
  "Criticism  =~ SpecCrit + GenCrit\n",
  "Victim     =~ SpecVict + GenVict\n",
  "Impunity   =~ SpecImp  + GenImp\n",
  "Endure     =~ GenEnd   + SpecEnd\n",
  "SelfExploit=~ GenSelfExpl   + SpecSelfExpl\n",
  "SuppExpl   =~ GenSuppExpl   + SpecSuppExpl\n"

)

# Add single-indicator factors (Gratitude general + Support general)
model_measurement <- paste0(
  model_measurement, "\n",
  make_single_indicator_factor(stacked_num, "GenGrat", "GeneralGratW", reliability_single$GeneralGratW), "\n")
fit <- cfa(
  model = model_measurement,
  data  = stacked_num,
  estimator = "MLR",     # robust SEs; good default for Likert-ish items
  missing = "fiml", # There's no missing anyway so does not matter
  std.lv = TRUE          # makes higher-order identification usually less annoying / must investigate
)
## Warning: lavaan->lav_object_post_check():  
##    some estimated ov variances are negative
## Warning: lavaan->lav_object_post_check():  
##    covariance matrix of latent variables is not positive definite ; use 
##    lavInspect(fit, "cov.lv") to investigate.
#summary(fit, fit.measures = TRUE, standardized = TRUE)
library(semPlot)

semPlot::semPaths(
  fit,
  what = "std",
  whatLabels = "std",layout = 'tree',
  style = "lisrel",
  residuals = FALSE,
  intercepts = FALSE,
  nCharNodes = 0
)

stacked_num$GlobalGratitude <- rowMeans(
  cbind(
    scale(stacked_num$Gratitude_G_mean),
    scale(stacked_num$Gratitude_S_mean)
  ))

stacked_num$GlobalVictim <- rowMeans(
  cbind(
    scale(stacked_num$Victim_G_mean),
    scale(stacked_num$Victim_S_mean)
  ))

# stacked_num$GlobalSelfExpl <- rowMeans(
#   cbind(
#     scale(stacked_num$SelfExploit_G_mean),
#     scale(stacked_num$SelfExploit_S_mean)
#   ))

stacked_num$GlobalSupportExpl <- rowMeans(
  cbind(
    scale(stacked_num$SupportExploit_S_mean),
    scale(stacked_num$SupportExploit_G_mean)
  ))

Primary checks

Below are some checks we performed: 1) testing whether our manipulations influenced perceived exposure to risk and helpfulness; 2) assessing the credibility of our manipulations.

Manipulation checks

We will first run some manipulation checks: how Danger ratings and Helpfulness ratings are influenced by our manipulation of risk and helpfulness:

#stacked_num <- stacked_num[, -40]
scale_scores <- stacked_num[, c(60, 1, 2, 61:89, 56:59 )]
scale_scores$ExpCond <- scale_scores$Cond
scale_scores$Cond <- as.factor(scale_scores$dataset)
contrasts(scale_scores$Cond) <- contr.sum(nlevels(scale_scores$Cond))
contrasts(scale_scores$Cond) # Deviations from registration!! We need to use sum to zero contrasts to make coef interpretable
##       [,1]
## Psych    1
## Weld    -1
scale_scores$Heroism <- scale_scores$HW_1
scale_scores$Attitude <- scale(scale_scores$AttW)
scale_scores$Danger <- scale(scale_scores$DangerHelpW_1)
scale_scores$Help <- scale(scale_scores$DangerHelpW_2)


# table(scale_scores$ExpCond)
scale_scores$ExpCond2 <- ifelse(grepl("NR_H_", scale_scores$ExpCond) == T, "NR_H",
                                ifelse(grepl("NR_NH_", scale_scores$ExpCond) == T, "NR_NH",
                                       ifelse(grepl("R_H_", scale_scores$ExpCond) == T, "R_H",
                                           "R_NH")))
scale_scores$ExpCond <- scale_scores$ExpCond2

scale_scores$Risk_cond <- ifelse(grepl("NR_", scale_scores$ExpCond) == T, -0.5, 0.5)
scale_scores$Help_cond <- ifelse(grepl("_NH", scale_scores$ExpCond) == T, -0.5, 0.5)

#####

cat("thankfully, our helpfulness condition does not influence perceived exposure to risk, p = .56")
## thankfully, our helpfulness condition does not influence perceived exposure to risk, p = .56
t.test(scale_scores$DangerHelpW_1 ~ scale_scores$Help_cond)
## 
##  Welch Two Sample t-test
## 
## data:  scale_scores$DangerHelpW_1 by scale_scores$Help_cond
## t = 0.58622, df = 1189.3, p-value = 0.5578
## alternative hypothesis: true difference in means between group -0.5 and group 0.5 is not equal to 0
## 95 percent confidence interval:
##  -0.09619754  0.17817952
## sample estimates:
## mean in group -0.5  mean in group 0.5 
##           5.716667           5.675676
cat("thankfully, our helpfulness condition does  influence perceived helpfulness, p <.001")
## thankfully, our helpfulness condition does  influence perceived helpfulness, p <.001
t.test(scale_scores$DangerHelpW_2 ~ scale_scores$Help_cond)
## 
##  Welch Two Sample t-test
## 
## data:  scale_scores$DangerHelpW_2 by scale_scores$Help_cond
## t = -14.382, df = 1052.2, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group -0.5 and group 0.5 is not equal to 0
## 95 percent confidence interval:
##  -1.1546878 -0.8774293
## sample estimates:
## mean in group -0.5  mean in group 0.5 
##           5.063333           6.079392
cat("thankfully, our risk exposure condition does  influence perceived exposure to risk, p < .001")
## thankfully, our risk exposure condition does  influence perceived exposure to risk, p < .001
t.test(scale_scores$DangerHelpW_1 ~ scale_scores$Risk_cond)
## 
##  Welch Two Sample t-test
## 
## data:  scale_scores$DangerHelpW_1 by scale_scores$Risk_cond
## t = -11.859, df = 1134.7, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group -0.5 and group 0.5 is not equal to 0
## 95 percent confidence interval:
##  -0.9148316 -0.6550812
## sample estimates:
## mean in group -0.5  mean in group 0.5 
##           5.301855           6.086811
cat("thankfully, our risk exposure condition does not influence perceived helpfulness, p = .61")
## thankfully, our risk exposure condition does not influence perceived helpfulness, p = .61
t.test(scale_scores$DangerHelpW_2 ~ scale_scores$Risk_cond)
## 
##  Welch Two Sample t-test
## 
## data:  scale_scores$DangerHelpW_2 by scale_scores$Risk_cond
## t = -0.51618, df = 1189.8, p-value = 0.6058
## alternative hypothesis: true difference in means between group -0.5 and group 0.5 is not equal to 0
## 95 percent confidence interval:
##  -0.1900457  0.1108749
## sample estimates:
## mean in group -0.5  mean in group 0.5 
##           5.548061           5.587646

So far, so good; our manipulation checks work and emphasise success of the manipulations.

Credibility analyses

We include a credibility check. Participants are asked at the end of the study, “to what extent they found the information presented believable”. Scores range from 1 to 7. We can check the distribution of the credibility rating:

Set <- scale_scores


Set$Credibility <- Demographics$Q490
scale_scores$Credibility <- Demographics$Q490
levels_cred <- c(
  "Very unbelievable",
  "Quite unbelievable",
  "Somewhat unbelievable",
  "Neutral",
  "Somewhat believable",
  "Quite believable",
  "Very believable"
)

Set$Credibility_num <- match(Set$Credibility, levels_cred)
scale_scores$Credibility_num <- match(scale_scores$Credibility, levels_cred)

  
hist(Set$Credibility_num, main = "Frequency of Responses for the Credibility item")

my_sum <- Set %>%
  group_by(Cond) %>%
  summarise( 
    n=n(),
    mean=mean(Credibility_num),
    sd=sd(Credibility_num)
  ) %>%
  mutate( se=sd/sqrt(n))

# Standard deviation
ggplot(my_sum) +
  geom_bar( aes(x=Cond, y=mean), stat="identity", fill="forestgreen", alpha=0.5) +
  geom_errorbar( aes(x=Cond, ymin=mean-se, ymax=mean+se), width=0.4, colour="orange", alpha=0.9, size=1.5) +
  ggtitle("Credibility (bars are SE) by job condition")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Overall, it seems the credibily of our descriptions was average, slightly credible. The welders condition was more credible than the psychiatrists condition – which is expected as welders occupations is less attached to stereotypes than the psych occupation.

H1 & H2: Heroism ~ Risk x Help

For H1 and H2, we will use the single item measuring perceived occupational heroism as a dependent variable. We will dummy code helpfulness and risk manipulations (-0.5, 0.5).

A model comparison approach will be used to assess our main hypotheses and qualify the part of variance explained by general attitude (i.e., Halo effect).

We will perform independent OLS regression models predicting perceived occupational heroism using Risk manipulation, Helpfulness manipulation, and occupations as predictors.

We will establish four models assessing the effect of our manipulations while accounting for possible interactions with occupation types and possible halo effects (see subsection Variable roles for details on each model). Variable Roles

Model 1 (Heroism effect across occupations): Perceived occupational heroism: predicted variable Occupation: covariate Dummy-coded Risk manipulation: Main predictor Dummy-coded Helpfulness manipulation: Main predictor Model: Heroism ~ Occupation + Risk * Helpfulness

Model 2 (Heroism within occupations): Percieved occupational heroism: predicted variable Occupation: main predictor and moderator Dummy-coded Risk manipulation: Main predictor Dummy-coded Helpfulness manipulation: Main predictor Model: Heroism ~ Risk * Helpfulness + Occupation:Risk + Occupation:Helpfulness + Occupation

Model 3 (Heroism effect across occupations and Halo effect): Perceived occupational heroism: predicted variable Occupation: covariate Attitude: Covariate Dummy-coded Risk manipulation: Main predictor Dummy-coded Helpfulness manipulation: Main predictor Model: Heroism ~ Occupation + Risk*Helpfulness + Attitude

Model 4 (Heroism within occupations and Halo effect): Perceived occupational heroism: predicted variable Occupation: main predictor and moderator Heroism: Main predictor and moderator Attitude: Covariate Model: Heroism ~ Risk * Helpfulness + Occupation:Risk + Occupation:Helpfulness + Occupation + Attitude

Note that we will use sum-to-zero contrasts so that each level of occupations can be interpreted as a deviation from the grand mean of all occupations.

Below, we also report some diagnostics and robustness checks.
Toggle details of diagnostics and robustness checks

Below, we assess normality via Q-Q plots, heteroscedasticity via residuals v fitted values plots, and we compare outputs of robust regressions (using robustbase) and classic OLS models. As you can see, homoscedasticity is sometimes not great - residuals’ normality can also sometimes smell fishy. But in almost all cases - our inferences are robust to using robust models - indicating that models which are less sensitive to these assumpations provide similar outputs.

run_model_diagnostics_and_robust <- function(
  data,
  outcomes = "Heroism",
  models_to_run = c(1, 2, 3, 4),
  occupation_var = "Cond",
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE
) {
  if (!requireNamespace("robustbase", quietly = TRUE)) {
    stop("Package 'robustbase' is required.")
  }

  # Formula builders ------------------------------------------------------
  f_model_1 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var, " + ", risk_var, " * ", help_var
    ))
  }

  f_model_2 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var
    ))
  }

  f_model_3 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var,
      " + ", risk_var, " * ", help_var,
      " + ", attitude_var
    ))
  }

  f_model_4 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var,
      " + ", attitude_var
    ))
  }

  formula_builders <- list(
    "1" = f_model_1,
    "2" = f_model_2,
    "3" = f_model_3,
    "4" = f_model_4
  )

  results <- list()

  for (outcome_name in outcomes) {
    results[[outcome_name]] <- list()

    for (model_number in models_to_run) {
      model_key <- as.character(model_number)
      formula_i <- formula_builders[[model_key]](outcome_name)
      model_name <- paste0("model_", model_number)

      cat("\n====================================================\n")
      cat("Outcome:", outcome_name, "\n")
      cat("Model:", model_name, "\n")
      cat("Formula:", deparse(formula_i), "\n")
      cat("====================================================\n")

      # Standard OLS model ------------------------------------------------
      lm_fit <- lm(formula_i, data = data)

      if (print_summaries) {
        cat("\n--- lm summary ---\n")
        print(summary(lm_fit))
      }

      # Diagnostic plots for OLS ------------------------------------------
      old_par <- par(no.readonly = TRUE)
      par(mfrow = c(1, 2))

      qqnorm(
        resid(lm_fit),
        main = paste("QQ plot\n", outcome_name, "-", model_name)
      )
      qqline(resid(lm_fit))

      plot(
        fitted(lm_fit),
        resid(lm_fit),
        xlab = "Fitted values",
        ylab = "Residuals",
        main = paste("Residuals vs fitted\n", outcome_name, "-", model_name)
      )
      abline(h = 0, lty = 2)

      par(old_par)

      # Robust model ------------------------------------------------------
      lmrob_fit <- robustbase::lmrob(formula_i, data = data)

      if (print_summaries) {
        cat("\n--- lmrob summary ---\n")
        print(summary(lmrob_fit))
      }

      results[[outcome_name]][[model_name]] <- list(
        formula = formula_i,
        lm_fit = lm_fit,
        lmrob_fit = lmrob_fit
      )
    }
  }

  return(results)
}
diagnostic_results <- run_model_diagnostics_and_robust(
  data = scale_scores,
  models_to_run = c(1, 2, 3, 4),
  print_summaries = TRUE
)
## 
## ====================================================
## Outcome: Heroism 
## Model: model_1 
## Formula: Heroism ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9420 -0.6615  0.0580  0.7831  2.7831 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.55607    0.03952 115.278  < 2e-16 ***
## Cond1               -0.14026    0.03962  -3.540 0.000416 ***
## Risk_cond            0.26138    0.07906   3.306 0.000975 ***
## Help_cond            0.18320    0.07908   2.317 0.020696 *  
## Risk_cond:Help_cond  0.09363    0.15839   0.591 0.554552    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.364 on 1187 degrees of freedom
## Multiple R-squared:  0.0233, Adjusted R-squared:  0.02001 
## F-statistic: 7.079 on 4 and 1187 DF,  p-value: 1.243e-05

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -3.996189 -0.730122  0.003811  0.736361  2.736361 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.60738    0.03976 115.869  < 2e-16 ***
## Cond1               -0.13303    0.03993  -3.332 0.000889 ***
## Risk_cond            0.25559    0.08004   3.193 0.001443 ** 
## Help_cond            0.21089    0.07973   2.645 0.008273 ** 
## Risk_cond:Help_cond  0.09013    0.15930   0.566 0.571660    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.238 
## Multiple R-squared:  0.02474,    Adjusted R-squared:  0.02145 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  53 weights are ~= 1. The remaining 1139 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2756  0.8656  0.9680  0.8944  0.9867  0.9960 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Heroism 
## Model: model_2 
## Formula: Heroism ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0747 -0.6373 -0.0747  0.6497  2.6497 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.55960    0.03949 115.462  < 2e-16 ***
## Risk_cond            0.25319    0.07909   3.201 0.001405 ** 
## Help_cond            0.17547    0.07911   2.218 0.026749 *  
## Cond1               -0.13998    0.03956  -3.538 0.000419 ***
## Risk_cond:Help_cond  0.10770    0.15827   0.680 0.496343    
## Risk_cond:Cond1     -0.13029    0.07913  -1.647 0.099926 .  
## Help_cond:Cond1     -0.13735    0.07913  -1.736 0.082872 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.362 on 1185 degrees of freedom
## Multiple R-squared:  0.02794,    Adjusted R-squared:  0.02301 
## F-statistic: 5.676 on 6 and 1185 DF,  p-value: 7.924e-06

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.1448 -0.6829 -0.1448  0.6074  2.6074 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.61155    0.03967 116.234  < 2e-16 ***
## Risk_cond            0.24771    0.07960   3.112  0.00190 ** 
## Help_cond            0.20256    0.07929   2.555  0.01075 *  
## Cond1               -0.13053    0.03985  -3.275  0.00109 ** 
## Risk_cond:Help_cond  0.10649    0.15893   0.670  0.50297    
## Risk_cond:Cond1     -0.16099    0.07947  -2.026  0.04302 *  
## Help_cond:Cond1     -0.14096    0.07935  -1.777  0.07590 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.239 
## Multiple R-squared:  0.0309, Adjusted R-squared:  0.026 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2402  0.8611  0.9725  0.8998  0.9884  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Heroism 
## Model: model_3 
## Formula: Heroism ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7018 -0.6301  0.0704  0.8361  3.5169 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.55514    0.03182 143.157  < 2e-16 ***
## Cond1               -0.10032    0.03194  -3.141  0.00173 ** 
## Risk_cond            0.11686    0.06391   1.829  0.06771 .  
## Help_cond           -0.11101    0.06471  -1.715  0.08652 .  
## Attitude             0.82570    0.03250  25.403  < 2e-16 ***
## Risk_cond:Help_cond  0.03603    0.12754   0.283  0.77759    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.098 on 1186 degrees of freedom
## Multiple R-squared:  0.3675, Adjusted R-squared:  0.3648 
## F-statistic: 137.8 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -4.86255 -0.75087 -0.04679  0.71257  3.47973 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.65003    0.03205 145.094  < 2e-16 ***
## Cond1               -0.07898    0.03046  -2.593  0.00963 ** 
## Risk_cond            0.06574    0.06153   1.068  0.28560    
## Help_cond           -0.08218    0.06170  -1.332  0.18315    
## Attitude             0.85015    0.03147  27.014  < 2e-16 ***
## Risk_cond:Help_cond -0.01460    0.12082  -0.121  0.90386    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.9778 
## Multiple R-squared:  0.4201, Adjusted R-squared:  0.4177 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  observation 165 is an outlier with |weight| = 0 ( < 8.4e-05); 
##  158 weights are ~= 1. The remaining 1033 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.06438 0.88050 0.93190 0.88410 0.98430 0.99870 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Heroism 
## Model: model_4 
## Formula: Heroism ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7453 -0.5957  0.0361  0.7963  3.5492 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.556343   0.031848 143.065  < 2e-16 ***
## Risk_cond            0.112100   0.064031   1.751  0.08025 .  
## Help_cond           -0.110119   0.064798  -1.699  0.08950 .  
## Cond1               -0.100565   0.031945  -3.148  0.00168 ** 
## Attitude             0.824453   0.032641  25.258  < 2e-16 ***
## Risk_cond:Help_cond  0.039344   0.127666   0.308  0.75800    
## Risk_cond:Cond1      0.003557   0.064038   0.056  0.95572    
## Help_cond:Cond1     -0.080212   0.063857  -1.256  0.20932    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.099 on 1184 degrees of freedom
## Multiple R-squared:  0.3683, Adjusted R-squared:  0.3646 
## F-statistic: 98.62 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -4.89197 -0.72206 -0.07337  0.73112  3.51166 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.650815   0.032356 143.739   <2e-16 ***
## Risk_cond            0.062487   0.061504   1.016   0.3098    
## Help_cond           -0.082817   0.061637  -1.344   0.1793    
## Cond1               -0.079707   0.030552  -2.609   0.0092 ** 
## Attitude             0.848844   0.031545  26.909   <2e-16 ***
## Risk_cond:Help_cond -0.008953   0.121164  -0.074   0.9411    
## Risk_cond:Cond1     -0.008798   0.060777  -0.145   0.8849    
## Help_cond:Cond1     -0.068503   0.060551  -1.131   0.2581    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.9754 
## Multiple R-squared:  0.4212, Adjusted R-squared:  0.4178 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  observation 165 is an outlier with |weight| = 0 ( < 8.4e-05); 
##  158 weights are ~= 1. The remaining 1033 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.07026 0.88110 0.93270 0.88370 0.98190 0.99890 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)

Below, we run each model.

run_prereg_models_2 <- function(
  data,
  outcomes = "Heroism",
  models_to_run = c(1, 2, 3, 4),
  occupation_var = "Cond",
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE
) {

  # ---- basic checks ----
  required_vars <- unique(c(outcomes, occupation_var, risk_var, help_var, attitude_var))
  missing_vars <- setdiff(required_vars, names(data))
  if (length(missing_vars) > 0) {
    stop("Missing columns in `data`: ", paste(missing_vars, collapse = ", "))
  }

  # Make sure occupation is treated as categorical
  if (!is.factor(data[[occupation_var]])) {
    data[[occupation_var]] <- as.factor(data[[occupation_var]])
  }

  # Define formulas (exactly your prereg)
  f_model_1 <- function(y) {
    as.formula(paste0(y, " ~ ", occupation_var, " + ", risk_var, " * ", help_var))
  }
  f_model_2 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var
    ))
  }
  f_model_3 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var,
      " + ", risk_var, " * ", help_var,
      " + ", attitude_var
    ))
  }
  f_model_4 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var,
      " + ", attitude_var
    ))
  }

  formula_fns <- list(
    `1` = f_model_1,
    `2` = f_model_2,
    `3` = f_model_3,
    `4` = f_model_4
  )

  model_titles <- list(
    `1` = "Model 1 — Heroism effect across occupations",
    `2` = "Model 2 — Heroism within occupations",
    `3` = "Model 3 — Across occupations + halo (Attitude)",
    `4` = "Model 4 — Within occupations + halo (Attitude)"
  )

  results <- list()

  for (y in outcomes) {

    cat("\n\n============================================================\n")
    cat("Outcome:", y, "\n")
    cat("============================================================\n")

    for (m in models_to_run) {

      if (!as.character(m) %in% names(formula_fns)) {
        warning("Unknown model number: ", m, " (skipping)")
        next
      }

      form <- formula_fns[[as.character(m)]](y)

      # Fit model (lm will drop rows with missing vars automatically)
      fit <- lm(form, data = data)

      # Store
      results[[y]][[paste0("Model_", m)]] <- fit

      # Print
      cat("\n------------------------------------------------------------\n")
      cat(model_titles[[as.character(m)]], "\n")
      cat("Formula: ", deparse(form), "\n", sep = "")
      cat("N used: ", nobs(fit), "\n", sep = "")
      cat("------------------------------------------------------------\n")

      if (print_summaries) {
        print(summary(fit))
      }
    }
  }

  invisible(results)
}

fits <- run_prereg_models_2( scale_scores )
## 
## 
## ============================================================
## Outcome: Heroism 
## ============================================================
## 
## ------------------------------------------------------------
## Model 1 — Heroism effect across occupations 
## Formula: Heroism ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9420 -0.6615  0.0580  0.7831  2.7831 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.55607    0.03952 115.278  < 2e-16 ***
## Cond1               -0.14026    0.03962  -3.540 0.000416 ***
## Risk_cond            0.26138    0.07906   3.306 0.000975 ***
## Help_cond            0.18320    0.07908   2.317 0.020696 *  
## Risk_cond:Help_cond  0.09363    0.15839   0.591 0.554552    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.364 on 1187 degrees of freedom
## Multiple R-squared:  0.0233, Adjusted R-squared:  0.02001 
## F-statistic: 7.079 on 4 and 1187 DF,  p-value: 1.243e-05
## 
## 
## ------------------------------------------------------------
## Model 2 — Heroism within occupations 
## Formula: Heroism ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0747 -0.6373 -0.0747  0.6497  2.6497 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.55960    0.03949 115.462  < 2e-16 ***
## Risk_cond            0.25319    0.07909   3.201 0.001405 ** 
## Help_cond            0.17547    0.07911   2.218 0.026749 *  
## Cond1               -0.13998    0.03956  -3.538 0.000419 ***
## Risk_cond:Help_cond  0.10770    0.15827   0.680 0.496343    
## Risk_cond:Cond1     -0.13029    0.07913  -1.647 0.099926 .  
## Help_cond:Cond1     -0.13735    0.07913  -1.736 0.082872 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.362 on 1185 degrees of freedom
## Multiple R-squared:  0.02794,    Adjusted R-squared:  0.02301 
## F-statistic: 5.676 on 6 and 1185 DF,  p-value: 7.924e-06
## 
## 
## ------------------------------------------------------------
## Model 3 — Across occupations + halo (Attitude) 
## Formula: Heroism ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7018 -0.6301  0.0704  0.8361  3.5169 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.55514    0.03182 143.157  < 2e-16 ***
## Cond1               -0.10032    0.03194  -3.141  0.00173 ** 
## Risk_cond            0.11686    0.06391   1.829  0.06771 .  
## Help_cond           -0.11101    0.06471  -1.715  0.08652 .  
## Attitude             0.82570    0.03250  25.403  < 2e-16 ***
## Risk_cond:Help_cond  0.03603    0.12754   0.283  0.77759    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.098 on 1186 degrees of freedom
## Multiple R-squared:  0.3675, Adjusted R-squared:  0.3648 
## F-statistic: 137.8 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Model 4 — Within occupations + halo (Attitude) 
## Formula: Heroism ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7453 -0.5957  0.0361  0.7963  3.5492 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.556343   0.031848 143.065  < 2e-16 ***
## Risk_cond            0.112100   0.064031   1.751  0.08025 .  
## Help_cond           -0.110119   0.064798  -1.699  0.08950 .  
## Cond1               -0.100565   0.031945  -3.148  0.00168 ** 
## Attitude             0.824453   0.032641  25.258  < 2e-16 ***
## Risk_cond:Help_cond  0.039344   0.127666   0.308  0.75800    
## Risk_cond:Cond1      0.003557   0.064038   0.056  0.95572    
## Help_cond:Cond1     -0.080212   0.063857  -1.256  0.20932    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.099 on 1184 degrees of freedom
## Multiple R-squared:  0.3683, Adjusted R-squared:  0.3646 
## F-statistic: 98.62 on 7 and 1184 DF,  p-value: < 2.2e-16

Conclusion for H1 and H2: > We replicated the findings that framing occupations as exposed to risk and helpful increased perceived heroism. However, this seems to be greatly reduced when including attitude as a covariate. Results remain significant when conducted with a one-tailed alpha level (as registered?).

We can compare models with and without attitude as a covariate, using ANOVAs – but it is obvious that the model with attitude will be providing a significantly better fit. Indeed, it is the case, as can be seen by toggling details below:

Toggle details of model comparisons to assess the importance of attitude
anova(fits$Heroism$Model_1, fits$Heroism$Model_3)
## Analysis of Variance Table
## 
## Model 1: Heroism ~ Cond + Risk_cond * Help_cond
## Model 2: Heroism ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq     F    Pr(>F)    
## 1   1187 2209.6                                 
## 2   1186 1431.0  1    778.62 645.3 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$Heroism$Model_2, fits$Heroism$Model_4)
## Analysis of Variance Table
## 
## Model 1: Heroism ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond
## Model 2: Heroism ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 2199.2                                  
## 2   1184 1429.1  1    770.04 637.97 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

H3 & H4: Outcomes ~ Risk x Help

Risk and helpfulness manipulations will both be dummy coded (-0.5, 0.5)

Attitude and heroism will be based on the single item ratings of participants.

All variable will be standardised for our analyses (centred on zero, and transformed to have a SD = 1). Statistical Technique

A model comparison approach will be used to assess our main hypotheses and qualify the part of variance explained by general attitude (i.e., Halo effect).

For each step of our model‐comparison procedure, we will evaluate two models: 1) one based on general-level items, 2) one based on specific-level items,

If an hypothesis is supported at both the general and specific levels, we will interpret this as full support for the hypothesis. If only one type of measure supports the hypothesis, we will interpret this as partial support for the hypothesis.

We will perform independent OLS regression models predicting each of our target outcomes (i.e., gratitude, criticism acceptability, support for workers demands, suffering assessment, acceptability of regulations violation, belief that workers would choose suffering if their mission required it, belief that workers would agree to be exploited, and support for exploiting workers when needed) using Risk manipulation, Helpfulness manipulation, and occupations as predictors.

We will establish four models assessing the effect of our manipulations while accounting for possible interactions with occupation types and possible halo effects (see subsection Variable roles for details on each model). Variable Roles

Model 1 (Heroism effect across occupations): Target construct (gratitude, criticism acceptability, support for demands, suffering assessment, acceptability of regulations violation, belief that workers would choose suffering if their mission required it, belief that workers would agree to be exploited, or support for exploiting workers when needed): predicted variable Occupation: covariate Dummy-coded Risk manipulation: Main predictor Dummy-coded Helpfulness manipulation: Main predictor Model: Target outcome ~ Occupation + Risk * Helpfulness

Model 2 (Heroism within occupations): Target construct (gratitude, criticism acceptability, support for demands, suffering assessment, acceptability of regulations violation, belief that workers would choose suffering if their mission required it, belief that workers would agree to be exploited, or support for exploiting workers when needed): predicted variable Occupation: main predictor and moderator Dummy-coded Risk manipulation: Main predictor Dummy-coded Helpfulness manipulation: Main predictor Model: Target outcome ~ Risk * Helpfulness + Occupation:Risk + Occupation:Helpfulness + Occupation

Model 3 (Heroism effect across occupations and Halo effect): Target construct (gratitude, criticism acceptability, support for demands, suffering assessment, acceptability of regulations violation, belief that workers would choose suffering if their mission required it, belief that workers would agree to be exploited, or support for exploiting workers when needed): predicted variable Occupation: covariate Attitude: Covariate Dummy-coded Risk manipulation: Main predictor Dummy-coded Helpfulness manipulation: Main predictor Model: Target outcome ~ Occupation + Risk*Helpfulness + Attitude

Model 4 (Heroism within occupations and Halo effect): Target construct (gratitude, criticism acceptability, support for demands, suffering assessment,acceptability of regulations violation, belief that workers would choose suffering if their mission required it, belief that workers would agree to be exploited, or support for exploiting workers when needed): predicted variable Occupation: main predictor and moderator Heroism: Main predictor and moderator Attitude: Covariate Model: Target outcome ~ Risk * Helpfulness + Occupation:Risk + Occupation:Helpfulness + Occupation + Attitude

NOTE: for gratitude, belief in self exploitation, support for exploitation, and victim perception, following our registration document, we used a global factor. Details on each subset can be found in the exploratory section.

NOTE, we also registered some diagnostics, as follow:

We will assess the normality of the residual via a Q-Q plot. We will also check homoscedasticity by plotting fitted values vs residuals. If any those conditions are not met, we will still report the predicted analyses (given their robustness to these violations of assumptions), but will additionally assess if using huber weighted robust regression (lmrob from the package robustbase) more robust to assumptions deviations (see Wilcox, 1997) results in differences in conclusion.

You can toggle details about these assumpation/robustness checks below.

Toggle details of diagnostics and robustness checks

Below, we assess normality via Q-Q plots, heteroscedasticity via residuals v fitted values plots, and we compare outputs of robust regressions (using robustbase) and classic OLS models. As you can see, homoscedasticity is sometimes not great - residuals’ normality can also sometimes smell fishy. But in almost all cases - our inferences are robust to using robust models - indicating that models which are less sensitive to these assumpations provide similar outputs.

run_model_diagnostics_and_robust <- function(
  data,
  outcomes = c(
    "GlobalGratitude",
    "criticism_items_G_mean", "criticism_items_S_mean",
    "DemandSupp_G_mean", "DemandSupp_S_mean",
    "GlobalVictim",
    "Villain_G_mean", "Villain_S_mean",
    "Endure_G_mean", "Endure_S_mean",
    "SelfExploit_G_mean", "SelfExploit_S_mean",
    "GlobalSupportExpl"
  ),
  models_to_run = c(1, 2, 3, 4),
  occupation_var = "Cond",
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE
) {
  if (!requireNamespace("robustbase", quietly = TRUE)) {
    stop("Package 'robustbase' is required.")
  }

  # Formula builders ------------------------------------------------------
  f_model_1 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var, " + ", risk_var, " * ", help_var
    ))
  }

  f_model_2 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var
    ))
  }

  f_model_3 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var,
      " + ", risk_var, " * ", help_var,
      " + ", attitude_var
    ))
  }

  f_model_4 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var,
      " + ", attitude_var
    ))
  }

  formula_builders <- list(
    "1" = f_model_1,
    "2" = f_model_2,
    "3" = f_model_3,
    "4" = f_model_4
  )

  results <- list()

  for (outcome_name in outcomes) {
    results[[outcome_name]] <- list()

    for (model_number in models_to_run) {
      model_key <- as.character(model_number)
      formula_i <- formula_builders[[model_key]](outcome_name)
      model_name <- paste0("model_", model_number)

      cat("\n====================================================\n")
      cat("Outcome:", outcome_name, "\n")
      cat("Model:", model_name, "\n")
      cat("Formula:", deparse(formula_i), "\n")
      cat("====================================================\n")

      # Standard OLS model ------------------------------------------------
      lm_fit <- lm(formula_i, data = data)

      if (print_summaries) {
        cat("\n--- lm summary ---\n")
        print(summary(lm_fit))
      }

      # Diagnostic plots for OLS ------------------------------------------
      old_par <- par(no.readonly = TRUE)
      par(mfrow = c(1, 2))

      qqnorm(
        resid(lm_fit),
        main = paste("QQ plot\n", outcome_name, "-", model_name)
      )
      qqline(resid(lm_fit))

      plot(
        fitted(lm_fit),
        resid(lm_fit),
        xlab = "Fitted values",
        ylab = "Residuals",
        main = paste("Residuals vs fitted\n", outcome_name, "-", model_name)
      )
      abline(h = 0, lty = 2)

      par(old_par)

      # Robust model ------------------------------------------------------
      lmrob_fit <- robustbase::lmrob(formula_i, data = data)

      if (print_summaries) {
        cat("\n--- lmrob summary ---\n")
        print(summary(lmrob_fit))
      }

      results[[outcome_name]][[model_name]] <- list(
        formula = formula_i,
        lm_fit = lm_fit,
        lmrob_fit = lmrob_fit
      )
    }
  }

  return(results)
}
diagnostic_results <- run_model_diagnostics_and_robust(
  data = scale_scores,
  models_to_run = c(1, 2, 3, 4),
  print_summaries = TRUE
)
## 
## ====================================================
## Outcome: GlobalGratitude 
## Model: model_1 
## Formula: GlobalGratitude ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.30112 -0.59313  0.03678  0.62718  2.10343 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.0002094  0.0241467   0.009  0.99308    
## Cond1               -0.0023042  0.0242079  -0.095  0.92419    
## Risk_cond            0.1302404  0.0483046   2.696  0.00711 ** 
## Help_cond            0.2255853  0.0483161   4.669 3.37e-06 ***
## Risk_cond:Help_cond -0.0774810  0.0967730  -0.801  0.42350    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8336 on 1187 degrees of freedom
## Multiple R-squared:  0.02417,    Adjusted R-squared:  0.02088 
## F-statistic:  7.35 on 4 and 1187 DF,  p-value: 7.582e-06

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.32171 -0.59767  0.02469  0.61094  2.11069 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.01264    0.02542   0.497  0.61901    
## Cond1               -0.00484    0.02552  -0.190  0.84962    
## Risk_cond            0.13476    0.05063   2.662  0.00788 ** 
## Help_cond            0.24385    0.05069   4.810  1.7e-06 ***
## Risk_cond:Help_cond -0.10055    0.10222  -0.984  0.32549    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.8851 
## Multiple R-squared:  0.0264, Adjusted R-squared:  0.02312 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  90 weights are ~= 1. The remaining 1102 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4713  0.8809  0.9497  0.9175  0.9834  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalGratitude 
## Model: model_2 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.36223 -0.59019  0.01833  0.62010  2.03441 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.001740   0.024148   0.072   0.9426    
## Risk_cond            0.127882   0.048366   2.644   0.0083 ** 
## Help_cond            0.220581   0.048378   4.560 5.66e-06 ***
## Cond1               -0.002033   0.024193  -0.084   0.9331    
## Risk_cond:Help_cond -0.070552   0.096779  -0.729   0.4661    
## Risk_cond:Cond1     -0.082185   0.048389  -1.698   0.0897 .  
## Help_cond:Cond1     -0.041420   0.048388  -0.856   0.3922    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.833 on 1185 degrees of freedom
## Multiple R-squared:  0.02711,    Adjusted R-squared:  0.02218 
## F-statistic: 5.503 on 6 and 1185 DF,  p-value: 1.239e-05

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.39089 -0.59835  0.01275  0.60512  2.02928 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.014392   0.025370   0.567   0.5706    
## Risk_cond            0.130893   0.050897   2.572   0.0102 *  
## Help_cond            0.236786   0.050926   4.650  3.7e-06 ***
## Cond1               -0.004195   0.025453  -0.165   0.8691    
## Risk_cond:Help_cond -0.093128   0.101976  -0.913   0.3613    
## Risk_cond:Cond1     -0.091955   0.050913  -1.806   0.0712 .  
## Help_cond:Cond1     -0.051425   0.050887  -1.011   0.3124    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.8831 
## Multiple R-squared:  0.02987,    Adjusted R-squared:  0.02496 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  98 weights are ~= 1. The remaining 1094 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4437  0.8846  0.9488  0.9168  0.9825  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalGratitude 
## Model: model_3 
## Formula: GlobalGratitude ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.19080 -0.44096  0.05308  0.46112  2.35567 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.0003964  0.0186570  -0.021    0.983    
## Cond1                0.0238073  0.0187270   1.271    0.204    
## Risk_cond            0.0357576  0.0374714   0.954    0.340    
## Help_cond            0.0332298  0.0379442   0.876    0.381    
## Attitude             0.5398395  0.0190588  28.325   <2e-16 ***
## Risk_cond:Help_cond -0.1151371  0.0747837  -1.540    0.124    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6441 on 1186 degrees of freedom
## Multiple R-squared:  0.4179, Adjusted R-squared:  0.4155 
## F-statistic: 170.3 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.22083 -0.45472  0.04392  0.44606  2.36523 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.01215    0.01956   0.621    0.535    
## Cond1                0.02291    0.01947   1.177    0.240    
## Risk_cond            0.04111    0.03854   1.067    0.286    
## Help_cond            0.03214    0.03929   0.818    0.414    
## Attitude             0.55376    0.01929  28.708   <2e-16 ***
## Risk_cond:Help_cond -0.11550    0.07767  -1.487    0.137    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.6622 
## Multiple R-squared:  0.4255, Adjusted R-squared:  0.4231 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  79 weights are ~= 1. The remaining 1113 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1754  0.8826  0.9518  0.9139  0.9848  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalGratitude 
## Model: model_4 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.19613 -0.44109  0.05417  0.46448  2.35079 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.0003946  0.0186861  -0.021    0.983    
## Risk_cond            0.0354680  0.0375689   0.944    0.345    
## Help_cond            0.0335259  0.0380187   0.882    0.378    
## Cond1                0.0237827  0.0187431   1.269    0.205    
## Attitude             0.5399996  0.0191515  28.196   <2e-16 ***
## Risk_cond:Help_cond -0.1153202  0.0749054  -1.540    0.124    
## Risk_cond:Cond1      0.0054836  0.0375729   0.146    0.884    
## Help_cond:Cond1     -0.0039961  0.0374665  -0.107    0.915    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6446 on 1184 degrees of freedom
## Multiple R-squared:  0.4179, Adjusted R-squared:  0.4145 
## F-statistic: 121.5 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.22829 -0.45203  0.04429  0.44824  2.35893 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.012051   0.019568   0.616    0.538    
## Risk_cond            0.040590   0.038884   1.044    0.297    
## Help_cond            0.032840   0.039588   0.830    0.407    
## Cond1                0.022804   0.019499   1.169    0.242    
## Attitude             0.554171   0.019491  28.432   <2e-16 ***
## Risk_cond:Help_cond -0.116184   0.077701  -1.495    0.135    
## Risk_cond:Cond1      0.010546   0.039201   0.269    0.788    
## Help_cond:Cond1     -0.001638   0.038986  -0.042    0.966    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.6636 
## Multiple R-squared:  0.4253, Adjusted R-squared:  0.4219 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  81 weights are ~= 1. The remaining 1111 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1800  0.8821  0.9508  0.9140  0.9847  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_G_mean 
## Model: model_1 
## Formula: criticism_items_G_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9425 -0.7832 -0.0032  0.7463  4.2168 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.66934    0.03186  83.772  < 2e-16 ***
## Cond1                0.07631    0.03195   2.389 0.017058 *  
## Risk_cond           -0.23439    0.06374  -3.677 0.000247 ***
## Help_cond           -0.12105    0.06376  -1.899 0.057857 .  
## Risk_cond:Help_cond  0.07643    0.12770   0.599 0.549613    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.1 on 1187 degrees of freedom
## Multiple R-squared:  0.0184, Adjusted R-squared:  0.01509 
## F-statistic: 5.563 on 4 and 1187 DF,  p-value: 0.0001946

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.88425 -0.74572  0.04642  0.76801  4.26728 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.62812    0.03235  81.252  < 2e-16 ***
## Cond1                0.07577    0.03242   2.337 0.019590 *  
## Risk_cond           -0.22220    0.06467  -3.436 0.000611 ***
## Help_cond           -0.09673    0.06474  -1.494 0.135406    
## Risk_cond:Help_cond  0.08361    0.12970   0.645 0.519318    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.162 
## Multiple R-squared:  0.01633,    Adjusted R-squared:  0.01301 
## Convergence in 9 IRWLS iterations
## 
## Robustness weights: 
##  98 weights are ~= 1. The remaining 1094 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1488  0.8711  0.9502  0.9176  0.9852  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_G_mean 
## Model: model_2 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9105 -0.7983  0.0121  0.7202  4.2017 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.66851    0.03191  83.634  < 2e-16 ***
## Risk_cond           -0.23163    0.06391  -3.625 0.000302 ***
## Help_cond           -0.12040    0.06392  -1.884 0.059876 .  
## Cond1                0.07635    0.03197   2.388 0.017074 *  
## Risk_cond:Help_cond  0.07371    0.12788   0.576 0.564436    
## Risk_cond:Cond1      0.01256    0.06394   0.196 0.844261    
## Help_cond:Cond1      0.04501    0.06394   0.704 0.481610    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.101 on 1185 degrees of freedom
## Multiple R-squared:  0.01884,    Adjusted R-squared:  0.01387 
## F-statistic: 3.792 on 6 and 1185 DF,  p-value: 0.0009513

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.84894 -0.74501  0.04633  0.73820  4.25499 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.62750    0.03232  81.288  < 2e-16 ***
## Risk_cond           -0.22013    0.06483  -3.395 0.000708 ***
## Help_cond           -0.09466    0.06490  -1.459 0.144951    
## Cond1                0.07534    0.03243   2.323 0.020327 *  
## Risk_cond:Help_cond  0.08064    0.12964   0.622 0.534039    
## Risk_cond:Cond1      0.03185    0.06480   0.492 0.623154    
## Help_cond:Cond1      0.03105    0.06481   0.479 0.631963    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.164 
## Multiple R-squared:  0.01668,    Adjusted R-squared:  0.0117 
## Convergence in 9 IRWLS iterations
## 
## Robustness weights: 
##  85 weights are ~= 1. The remaining 1107 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1527  0.8753  0.9555  0.9188  0.9853  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_G_mean 
## Model: model_3 
## Formula: criticism_items_G_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5290 -0.6423 -0.0491  0.5721  5.1462 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.66999    0.02729  97.841   <2e-16 ***
## Cond1                0.04827    0.02739   1.762   0.0783 .  
## Risk_cond           -0.13293    0.05481  -2.425   0.0154 *  
## Help_cond            0.08550    0.05550   1.540   0.1237    
## Attitude            -0.57968    0.02788 -20.794   <2e-16 ***
## Risk_cond:Help_cond  0.11687    0.10938   1.068   0.2856    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9421 on 1186 degrees of freedom
## Multiple R-squared:  0.2807, Adjusted R-squared:  0.2776 
## F-statistic: 92.55 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -2.559652 -0.585040 -0.007434  0.596595  5.247062 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.64050    0.02769  95.345   <2e-16 ***
## Cond1                0.04878    0.02749   1.774   0.0762 .  
## Risk_cond           -0.12236    0.05468  -2.238   0.0254 *  
## Help_cond            0.13207    0.05552   2.379   0.0175 *  
## Attitude            -0.61000    0.03163 -19.286   <2e-16 ***
## Risk_cond:Help_cond  0.11945    0.10929   1.093   0.2746    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.8885 
## Multiple R-squared:  0.3077, Adjusted R-squared:  0.3048 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  observation 506 is an outlier with |weight| = 0 ( < 8.4e-05); 
##  94 weights are ~= 1. The remaining 1097 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02075 0.86830 0.94970 0.90080 0.98500 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_G_mean 
## Model: model_4 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4985 -0.6709 -0.0375  0.5734  5.1864 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.67081    0.02731  97.810   <2e-16 ***
## Risk_cond           -0.13185    0.05490  -2.402   0.0165 *  
## Help_cond            0.08156    0.05556   1.468   0.1423    
## Cond1                0.04848    0.02739   1.770   0.0770 .  
## Attitude            -0.58303    0.02799 -20.833   <2e-16 ***
## Risk_cond:Help_cond  0.12205    0.10946   1.115   0.2651    
## Risk_cond:Cond1     -0.08209    0.05491  -1.495   0.1351    
## Help_cond:Cond1      0.00460    0.05475   0.084   0.9331    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.942 on 1184 degrees of freedom
## Multiple R-squared:  0.282,  Adjusted R-squared:  0.2778 
## F-statistic: 66.44 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.55400 -0.61508 -0.02272  0.60286  5.30005 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.64188    0.02771  95.335   <2e-16 ***
## Risk_cond           -0.12311    0.05473  -2.249   0.0247 *  
## Help_cond            0.12969    0.05557   2.334   0.0198 *  
## Cond1                0.04909    0.02748   1.787   0.0742 .  
## Attitude            -0.61387    0.03177 -19.320   <2e-16 ***
## Risk_cond:Help_cond  0.12308    0.10925   1.127   0.2602    
## Risk_cond:Cond1     -0.06715    0.05505  -1.220   0.2228    
## Help_cond:Cond1     -0.03494    0.05483  -0.637   0.5241    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.89 
## Multiple R-squared:  0.3088, Adjusted R-squared:  0.3047 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  observation 506 is an outlier with |weight| = 0 ( < 8.4e-05); 
##  81 weights are ~= 1. The remaining 1110 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02363 0.86630 0.95260 0.90240 0.98300 0.99890 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_S_mean 
## Model: model_1 
## Formula: criticism_items_S_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3565 -0.7485 -0.2263  0.6694  2.7628 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.2918609  0.0257267  89.085   <2e-16 ***
## Cond1                0.0494503  0.0257894   1.917   0.0554 .  
## Risk_cond            0.0213135  0.0514644   0.414   0.6788    
## Help_cond            0.0008514  0.0514764   0.017   0.9868    
## Risk_cond:Help_cond -0.0199516  0.1031002  -0.194   0.8466    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8877 on 1186 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.00335,    Adjusted R-squared:  -1.129e-05 
## F-statistic: 0.9966 on 4 and 1186 DF,  p-value: 0.4083

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3408 -0.7107 -0.2063  0.6938  2.8064 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.266000   0.028153  80.488   <2e-16 ***
## Cond1                0.056299   0.027775   2.027   0.0429 *  
## Risk_cond            0.019542   0.055062   0.355   0.7227    
## Help_cond           -0.015068   0.055012  -0.274   0.7842    
## Risk_cond:Help_cond -0.004815   0.110414  -0.044   0.9652    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.9522 
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.003914,   Adjusted R-squared:  0.0005546 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3651  0.8619  0.9505  0.9247  0.9913  0.9975 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.396e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_S_mean 
## Model: model_2 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3858 -0.7508 -0.2246  0.6930  2.7291 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.292056   0.025758  88.985   <2e-16 ***
## Risk_cond            0.019178   0.051589   0.372   0.7101    
## Help_cond            0.002764   0.051602   0.054   0.9573    
## Cond1                0.049254   0.025804   1.909   0.0565 .  
## Risk_cond:Help_cond -0.020350   0.103226  -0.197   0.8438    
## Risk_cond:Cond1      0.029110   0.051613   0.564   0.5729    
## Help_cond:Cond1     -0.033314   0.051611  -0.645   0.5187    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8882 on 1184 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.003977,   Adjusted R-squared:  -0.001071 
## F-statistic: 0.7878 on 6 and 1184 DF,  p-value: 0.5795

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3705 -0.7060 -0.2060  0.7247  2.7700 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.265665   0.028254  80.188   <2e-16 ***
## Risk_cond            0.016806   0.055395   0.303   0.7616    
## Help_cond           -0.011843   0.055361  -0.214   0.8306    
## Cond1                0.055943   0.027776   2.014   0.0442 *  
## Risk_cond:Help_cond -0.005252   0.110739  -0.047   0.9622    
## Risk_cond:Cond1      0.038184   0.055467   0.688   0.4913    
## Help_cond:Cond1     -0.028355   0.055444  -0.511   0.6092    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.9504 
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.004561,   Adjusted R-squared:  -0.0004836 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3757  0.8618  0.9497  0.9245  0.9924  0.9983 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.396e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_S_mean 
## Model: model_3 
## Formula: criticism_items_S_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.20829 -0.65575 -0.08522  0.60028  3.05005 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.292163   0.024950  91.871   <2e-16 ***
## Cond1                0.038660   0.025041   1.544    0.123    
## Risk_cond            0.060084   0.050108   1.199    0.231    
## Help_cond            0.079892   0.050738   1.575    0.116    
## Attitude            -0.222115   0.025477  -8.718   <2e-16 ***
## Risk_cond:Help_cond -0.004258   0.100003  -0.043    0.966    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8609 on 1185 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.06342,    Adjusted R-squared:  0.05947 
## F-statistic: 16.05 on 5 and 1185 DF,  p-value: 2.486e-15

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.31233 -0.62888 -0.08996  0.63443  3.12011 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.268089   0.026889  84.349   <2e-16 ***
## Cond1                0.045929   0.026684   1.721   0.0855 .  
## Risk_cond            0.056811   0.052825   1.075   0.2824    
## Help_cond            0.080493   0.054300   1.482   0.1385    
## Attitude            -0.249742   0.029316  -8.519   <2e-16 ***
## Risk_cond:Help_cond  0.001862   0.105722   0.018   0.9860    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.8967 
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.0744, Adjusted R-squared:  0.07049 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  92 weights are ~= 1. The remaining 1099 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2010  0.8762  0.9491  0.9142  0.9845  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.396e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: criticism_items_S_mean 
## Model: model_4 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2437 -0.6601 -0.1057  0.5981  3.0291 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.292971   0.024978  91.800   <2e-16 ***
## Risk_cond            0.057323   0.050217   1.142    0.254    
## Help_cond            0.080037   0.050817   1.575    0.116    
## Cond1                0.038551   0.025053   1.539    0.124    
## Attitude            -0.223256   0.025590  -8.724   <2e-16 ***
## Risk_cond:Help_cond -0.001720   0.100123  -0.017    0.986    
## Risk_cond:Cond1     -0.007075   0.050221  -0.141    0.888    
## Help_cond:Cond1     -0.048727   0.050079  -0.973    0.331    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8613 on 1183 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.06419,    Adjusted R-squared:  0.05865 
## F-statistic: 11.59 on 7 and 1183 DF,  p-value: 2.605e-14

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.34385 -0.65383 -0.07139  0.60677  3.09977 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.269152   0.027055  83.872   <2e-16 ***
## Risk_cond            0.053939   0.053181   1.014   0.3107    
## Help_cond            0.081643   0.054573   1.496   0.1349    
## Cond1                0.045638   0.026677   1.711   0.0874 .  
## Attitude            -0.250757   0.029621  -8.466   <2e-16 ***
## Risk_cond:Help_cond  0.005787   0.106203   0.054   0.9566    
## Risk_cond:Cond1     -0.005168   0.053689  -0.096   0.9233    
## Help_cond:Cond1     -0.043963   0.053346  -0.824   0.4100    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.8984 
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.07485,    Adjusted R-squared:  0.06938 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  94 weights are ~= 1. The remaining 1097 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2095  0.8802  0.9469  0.9144  0.9853  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.396e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_G_mean 
## Model: model_1 
## Formula: DemandSupp_G_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1920 -0.9312  0.0688  0.9635  3.2243 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.984409   0.040951  97.297  < 2e-16 ***
## Cond1                0.130382   0.041055   3.176  0.00153 ** 
## Risk_cond            0.005219   0.081921   0.064  0.94922    
## Help_cond            0.001122   0.081941   0.014  0.98908    
## Risk_cond:Help_cond -0.300512   0.164121  -1.831  0.06734 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.414 on 1187 degrees of freedom
## Multiple R-squared:  0.01186,    Adjusted R-squared:  0.00853 
## F-statistic: 3.562 on 4 and 1187 DF,  p-value: 0.006761

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.22572 -0.93726  0.06274  0.93462  3.22308 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.996779   0.043110  92.712  < 2e-16 ***
## Cond1                0.144229   0.042992   3.355 0.000819 ***
## Risk_cond            0.009077   0.085860   0.106 0.915820    
## Help_cond           -0.012964   0.085882  -0.151 0.880039    
## Risk_cond:Help_cond -0.294746   0.171251  -1.721 0.085487 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.371 
## Multiple R-squared:  0.01339,    Adjusted R-squared:  0.01006 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  183 weights are ~= 1. The remaining 1009 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.5590  0.8274  0.9453  0.8933  0.9709  0.9980 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_G_mean 
## Model: model_2 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1967 -0.9412  0.0588  0.9731  3.2265 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.9841392  0.0410145  97.140  < 2e-16 ***
## Risk_cond            0.0063438  0.0821470   0.077  0.93846    
## Help_cond            0.0010175  0.0821684   0.012  0.99012    
## Cond1                0.1304235  0.0410907   3.174  0.00154 ** 
## Risk_cond:Help_cond -0.3012370  0.1643759  -1.833  0.06711 .  
## Risk_cond:Cond1     -0.0008511  0.0821874  -0.010  0.99174    
## Help_cond:Cond1      0.0181194  0.0821850   0.220  0.82554    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.415 on 1185 degrees of freedom
## Multiple R-squared:  0.0119, Adjusted R-squared:  0.006898 
## F-statistic: 2.379 on 6 and 1185 DF,  p-value: 0.02737

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.22131 -0.95734  0.04266  0.94322  3.23524 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.996401   0.043198  92.514  < 2e-16 ***
## Risk_cond            0.010522   0.085894   0.122 0.902526    
## Help_cond           -0.014028   0.085926  -0.163 0.870339    
## Cond1                0.144258   0.042966   3.358 0.000811 ***
## Risk_cond:Help_cond -0.296213   0.171580  -1.726 0.084540 .  
## Risk_cond:Cond1     -0.007292   0.085976  -0.085 0.932421    
## Help_cond:Cond1      0.030446   0.085936   0.354 0.723188    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.373 
## Multiple R-squared:  0.0135, Adjusted R-squared:  0.008501 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  183 weights are ~= 1. The remaining 1009 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.5583  0.8292  0.9448  0.8937  0.9709  0.9979 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_G_mean 
## Model: model_3 
## Formula: DemandSupp_G_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2300 -0.9511  0.0291  0.9693  3.2711 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.98444    0.04096  97.276  < 2e-16 ***
## Cond1                0.12898    0.04111   3.137  0.00175 ** 
## Risk_cond            0.01029    0.08227   0.125  0.90046    
## Help_cond            0.01145    0.08330   0.137  0.89070    
## Attitude            -0.02899    0.04184  -0.693  0.48861    
## Risk_cond:Help_cond -0.29849    0.16418  -1.818  0.06931 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.414 on 1186 degrees of freedom
## Multiple R-squared:  0.01226,    Adjusted R-squared:  0.008095 
## F-statistic: 2.944 on 5 and 1186 DF,  p-value: 0.01198

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.23760 -0.94694  0.04064  0.94256  3.25635 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.996365   0.043151  92.614  < 2e-16 ***
## Cond1                0.143243   0.043003   3.331 0.000892 ***
## Risk_cond            0.011737   0.085480   0.137 0.890810    
## Help_cond           -0.004755   0.087386  -0.054 0.956612    
## Attitude            -0.023280   0.048096  -0.484 0.628459    
## Risk_cond:Help_cond -0.292053   0.171561  -1.702 0.088955 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.372 
## Multiple R-squared:  0.01362,    Adjusted R-squared:  0.009465 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  183 weights are ~= 1. The remaining 1009 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.5526  0.8286  0.9449  0.8935  0.9713  0.9986 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_G_mean 
## Model: model_4 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2400 -0.9561  0.0293  0.9695  3.2664 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.984254   0.041024  97.120  < 2e-16 ***
## Risk_cond            0.011296   0.082480   0.137  0.89109    
## Help_cond            0.011041   0.083467   0.132  0.89478    
## Cond1                0.129040   0.041149   3.136  0.00176 ** 
## Attitude            -0.028937   0.042046  -0.688  0.49144    
## Risk_cond:Help_cond -0.298838   0.164449  -1.817  0.06944 .  
## Risk_cond:Cond1     -0.005549   0.082489  -0.067  0.94638    
## Help_cond:Cond1      0.016114   0.082255   0.196  0.84472    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.415 on 1184 degrees of freedom
## Multiple R-squared:  0.0123, Adjusted R-squared:  0.006456 
## F-statistic: 2.106 on 7 and 1184 DF,  p-value: 0.04034

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.25652 -0.96698  0.02194  0.94024  3.25908 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.996060   0.043228  92.440  < 2e-16 ***
## Risk_cond            0.013262   0.085562   0.155 0.876845    
## Help_cond           -0.005911   0.087477  -0.068 0.946142    
## Cond1                0.143277   0.042978   3.334 0.000883 ***
## Attitude            -0.023385   0.048140  -0.486 0.627213    
## Risk_cond:Help_cond -0.293246   0.171931  -1.706 0.088345 .  
## Risk_cond:Cond1     -0.010971   0.086227  -0.127 0.898779    
## Help_cond:Cond1      0.029205   0.085896   0.340 0.733917    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.375 
## Multiple R-squared:  0.01374,    Adjusted R-squared:  0.007904 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  183 weights are ~= 1. The remaining 1009 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.5535  0.8281  0.9456  0.8939  0.9713  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_S_mean 
## Model: model_1 
## Formula: DemandSupp_S_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2271 -0.7463  0.1360  0.8047  2.3047 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.982093   0.036292 137.278  < 2e-16 ***
## Cond1               -0.197811   0.036384  -5.437 6.58e-08 ***
## Risk_cond            0.126926   0.072601   1.748   0.0807 .  
## Help_cond            0.009214   0.072618   0.127   0.8991    
## Risk_cond:Help_cond -0.083586   0.145448  -0.575   0.5656    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.253 on 1187 degrees of freedom
## Multiple R-squared:  0.02648,    Adjusted R-squared:  0.02319 
## F-statistic:  8.07 on 4 and 1187 DF,  p-value: 2.027e-06

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -4.31741 -0.80189  0.02824  0.73371  2.23371 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.06885    0.03524 143.837  < 2e-16 ***
## Cond1               -0.17282    0.03506  -4.929 9.42e-07 ***
## Risk_cond            0.13596    0.06993   1.944   0.0521 .  
## Help_cond            0.06951    0.07027   0.989   0.3228    
## Risk_cond:Help_cond -0.10799    0.14008  -0.771   0.4409    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.166 
## Multiple R-squared:  0.02475,    Adjusted R-squared:  0.02146 
## Convergence in 9 IRWLS iterations
## 
## Robustness weights: 
##  126 weights are ~= 1. The remaining 1066 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1411  0.8748  0.9479  0.8946  0.9851  0.9978 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_S_mean 
## Model: model_2 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3130 -0.7200  0.1005  0.7886  2.2886 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.984535   0.036298 137.323  < 2e-16 ***
## Risk_cond            0.119358   0.072700   1.642   0.1009    
## Help_cond            0.006526   0.072719   0.090   0.9285    
## Cond1               -0.197859   0.036365  -5.441 6.44e-08 ***
## Risk_cond:Help_cond -0.075194   0.145473  -0.517   0.6053    
## Risk_cond:Cond1     -0.048826   0.072736  -0.671   0.5022    
## Help_cond:Cond1     -0.124121   0.072734  -1.707   0.0882 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.252 on 1185 degrees of freedom
## Multiple R-squared:  0.02921,    Adjusted R-squared:  0.02429 
## F-statistic: 5.942 on 6 and 1185 DF,  p-value: 3.969e-06

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -4.39898 -0.84168 -0.00281  0.71121  2.15832 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.07042    0.03510 144.469  < 2e-16 ***
## Risk_cond            0.12681    0.06995   1.813   0.0701 .  
## Help_cond            0.06395    0.07034   0.909   0.3634    
## Cond1               -0.17442    0.03502  -4.980 7.29e-07 ***
## Risk_cond:Help_cond -0.10496    0.13969  -0.751   0.4526    
## Risk_cond:Cond1     -0.03586    0.06980  -0.514   0.6075    
## Help_cond:Cond1     -0.13413    0.06991  -1.919   0.0553 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.165 
## Multiple R-squared:  0.02827,    Adjusted R-squared:  0.02335 
## Convergence in 9 IRWLS iterations
## 
## Robustness weights: 
##  110 weights are ~= 1. The remaining 1082 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1228  0.8729  0.9510  0.8962  0.9835  0.9987 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_S_mean 
## Model: model_3 
## Formula: DemandSupp_S_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6665 -0.5927  0.0743  0.8335  2.6518 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.98164    0.03443 144.695  < 2e-16 ***
## Cond1               -0.17819    0.03456  -5.156 2.95e-07 ***
## Risk_cond            0.05595    0.06915   0.809   0.4186    
## Help_cond           -0.13529    0.07002  -1.932   0.0536 .  
## Attitude             0.40555    0.03517  11.531  < 2e-16 ***
## Risk_cond:Help_cond -0.11188    0.13800  -0.811   0.4177    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.189 on 1186 degrees of freedom
## Multiple R-squared:  0.1246, Adjusted R-squared:  0.1209 
## F-statistic: 33.77 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -4.726481 -0.691767 -0.005724  0.704129  2.533021 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.06846    0.03404 148.911  < 2e-16 ***
## Cond1               -0.15417    0.03312  -4.656 3.59e-06 ***
## Risk_cond            0.08274    0.06568   1.260    0.208    
## Help_cond           -0.08836    0.06875  -1.285    0.199    
## Attitude             0.39472    0.03757  10.508  < 2e-16 ***
## Risk_cond:Help_cond -0.12188    0.13217  -0.922    0.357    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.059 
## Multiple R-squared:  0.1307, Adjusted R-squared:  0.1271 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  106 weights are ~= 1. The remaining 1086 ones are summarized as
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.008397 0.852300 0.950500 0.888300 0.985300 0.998800 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: DemandSupp_S_mean 
## Model: model_4 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7261 -0.5758  0.0920  0.7907  2.5975 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.98294    0.03445 144.627  < 2e-16 ***
## Risk_cond            0.05012    0.06927   0.724   0.4695    
## Help_cond           -0.13362    0.07010  -1.906   0.0569 .  
## Cond1               -0.17852    0.03456  -5.166 2.81e-07 ***
## Attitude             0.40458    0.03531  11.457  < 2e-16 ***
## Risk_cond:Help_cond -0.10874    0.13811  -0.787   0.4313    
## Risk_cond:Cond1      0.01686    0.06928   0.243   0.8078    
## Help_cond:Cond1     -0.09608    0.06908  -1.391   0.1645    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.189 on 1184 degrees of freedom
## Multiple R-squared:  0.1261, Adjusted R-squared:  0.1209 
## F-statistic: 24.41 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -4.80931 -0.68627  0.02747  0.71206  2.46076 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.06922    0.03392 149.437  < 2e-16 ***
## Risk_cond            0.07556    0.06575   1.149   0.2507    
## Help_cond           -0.08837    0.06865  -1.287   0.1983    
## Cond1               -0.15548    0.03308  -4.700 2.91e-06 ***
## Attitude             0.39499    0.03766  10.487  < 2e-16 ***
## Risk_cond:Help_cond -0.12220    0.13179  -0.927   0.3540    
## Risk_cond:Cond1      0.03807    0.06628   0.574   0.5658    
## Help_cond:Cond1     -0.11535    0.06585  -1.752   0.0801 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.061 
## Multiple R-squared:  0.1337, Adjusted R-squared:  0.1286 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  128 weights are ~= 1. The remaining 1064 ones are summarized as
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.004066 0.858500 0.948500 0.886700 0.984000 0.999000 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalVictim 
## Model: model_1 
## Formula: GlobalVictim ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.44446 -0.53092 -0.00233  0.52292  2.56463 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.0007449  0.0230606  -0.032    0.974    
## Cond1               -0.1447419  0.0231191  -6.261 5.35e-10 ***
## Risk_cond            0.3091352  0.0461321   6.701 3.19e-11 ***
## Help_cond           -0.0502585  0.0461431  -1.089    0.276    
## Risk_cond:Help_cond -0.0966867  0.0924206  -1.046    0.296    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7961 on 1187 degrees of freedom
## Multiple R-squared:  0.06658,    Adjusted R-squared:  0.06343 
## F-statistic: 21.17 on 4 and 1187 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -2.4535200 -0.5195845 -0.0008129  0.5158726  2.5625758 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.001934   0.023524  -0.082    0.934    
## Cond1               -0.133828   0.023630  -5.663 1.86e-08 ***
## Risk_cond            0.317473   0.047005   6.754 2.25e-11 ***
## Help_cond           -0.054923   0.047073  -1.167    0.244    
## Risk_cond:Help_cond -0.092015   0.094275  -0.976    0.329    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.7706 
## Multiple R-squared:  0.06558,    Adjusted R-squared:  0.06243 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  96 weights are ~= 1. The remaining 1096 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2462  0.8619  0.9520  0.9025  0.9867  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalVictim 
## Model: model_2 
## Formula: GlobalVictim ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.41368 -0.52475 -0.01441  0.49911  2.59350 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.001706   0.023072  -0.074    0.941    
## Risk_cond            0.309636   0.046211   6.701 3.20e-11 ***
## Help_cond           -0.045752   0.046223  -0.990    0.322    
## Cond1               -0.145036   0.023115  -6.275 4.91e-10 ***
## Risk_cond:Help_cond -0.101724   0.092468  -1.100    0.272    
## Risk_cond:Cond1      0.072807   0.046233   1.575    0.116    
## Help_cond:Cond1      0.011061   0.046232   0.239    0.811    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7959 on 1185 degrees of freedom
## Multiple R-squared:  0.06856,    Adjusted R-squared:  0.06385 
## F-statistic: 14.54 on 6 and 1185 DF,  p-value: 4.592e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -2.418318 -0.525988 -0.003531  0.505939  2.598132 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.002609   0.023510  -0.111    0.912    
## Risk_cond            0.318066   0.047070   6.757 2.20e-11 ***
## Help_cond           -0.050823   0.047153  -1.078    0.281    
## Cond1               -0.134477   0.023620  -5.693 1.57e-08 ***
## Risk_cond:Help_cond -0.095482   0.094243  -1.013    0.311    
## Risk_cond:Cond1      0.067516   0.047101   1.433    0.152    
## Help_cond:Cond1     -0.006187   0.047136  -0.131    0.896    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.7691 
## Multiple R-squared:  0.06758,    Adjusted R-squared:  0.06286 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  110 weights are ~= 1. The remaining 1082 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2305  0.8567  0.9502  0.9010  0.9863  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalVictim 
## Model: model_3 
## Formula: GlobalVictim ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.31638 -0.47580  0.01706  0.48309  2.40265 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.001076   0.021492  -0.050 0.960077    
## Cond1               -0.130469   0.021572  -6.048 1.96e-09 ***
## Risk_cond            0.257491   0.043165   5.965 3.22e-09 ***
## Help_cond           -0.155400   0.043709  -3.555 0.000392 ***
## Attitude             0.295075   0.021954  13.440  < 2e-16 ***
## Risk_cond:Help_cond -0.117269   0.086146  -1.361 0.173682    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7419 on 1186 degrees of freedom
## Multiple R-squared:   0.19,  Adjusted R-squared:  0.1865 
## F-statistic: 55.62 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.33989 -0.47868  0.01207  0.48177  2.38465 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.0007872  0.0218640   0.036 0.971283    
## Cond1               -0.1231878  0.0219768  -5.605 2.58e-08 ***
## Risk_cond            0.2719631  0.0438047   6.209 7.38e-10 ***
## Help_cond           -0.1620978  0.0440813  -3.677 0.000246 ***
## Attitude             0.3044101  0.0248098  12.270  < 2e-16 ***
## Risk_cond:Help_cond -0.1149015  0.0878234  -1.308 0.191017    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.7168 
## Multiple R-squared:  0.1992, Adjusted R-squared:  0.1958 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  115 weights are ~= 1. The remaining 1077 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2458  0.8651  0.9487  0.9006  0.9856  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalVictim 
## Model: model_4 
## Formula: GlobalVictim ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.36183 -0.49221  0.00904  0.46609  2.32559 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.002895   0.021449  -0.135 0.892675    
## Risk_cond            0.258170   0.043124   5.987 2.84e-09 ***
## Help_cond           -0.149925   0.043640  -3.435 0.000612 ***
## Cond1               -0.130660   0.021515  -6.073 1.69e-09 ***
## Attitude             0.300729   0.021983  13.680  < 2e-16 ***
## Risk_cond:Help_cond -0.126656   0.085982  -1.473 0.141002    
## Risk_cond:Cond1      0.121630   0.043129   2.820 0.004880 ** 
## Help_cond:Cond1      0.031903   0.043007   0.742 0.458353    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7399 on 1184 degrees of freedom
## Multiple R-squared:  0.1957, Adjusted R-squared:  0.1909 
## F-statistic: 41.15 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -2.392432 -0.486363  0.006199  0.475777  2.340421 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.0008667  0.0217923  -0.040 0.968284    
## Risk_cond            0.2720462  0.0438430   6.205 7.55e-10 ***
## Help_cond           -0.1543484  0.0440006  -3.508 0.000469 ***
## Cond1               -0.1240608  0.0218965  -5.666 1.84e-08 ***
## Attitude             0.3107277  0.0248139  12.522  < 2e-16 ***
## Risk_cond:Help_cond -0.1239101  0.0876186  -1.414 0.157566    
## Risk_cond:Cond1      0.1259772  0.0439588   2.866 0.004233 ** 
## Help_cond:Cond1      0.0185978  0.0439064   0.424 0.671950    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.7134 
## Multiple R-squared:  0.206,  Adjusted R-squared:  0.2013 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  107 weights are ~= 1. The remaining 1085 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2378  0.8639  0.9486  0.9011  0.9864  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_G_mean 
## Model: model_1 
## Formula: Villain_G_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0202 -0.8080  0.0188  0.9043  3.3129 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.8534028  0.0367392 104.885  < 2e-16 ***
## Cond1                0.1288977  0.0368324   3.500 0.000483 ***
## Risk_cond           -0.0004371  0.0734957  -0.006 0.995256    
## Help_cond           -0.0384674  0.0735132  -0.523 0.600883    
## Risk_cond:Help_cond  0.0736009  0.1472405   0.500 0.617261    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.268 on 1187 degrees of freedom
## Multiple R-squared:  0.01042,    Adjusted R-squared:  0.00709 
## F-statistic: 3.126 on 4 and 1187 DF,  p-value: 0.01431

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.05052 -0.82921  0.02629  0.87650  3.31402 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.85997    0.03849 100.292  < 2e-16 ***
## Cond1                0.13018    0.03850   3.381 0.000745 ***
## Risk_cond           -0.01656    0.07658  -0.216 0.828866    
## Help_cond           -0.06025    0.07658  -0.787 0.431610    
## Risk_cond:Help_cond  0.08787    0.15283   0.575 0.565426    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.271 
## Multiple R-squared:  0.01069,    Adjusted R-squared:  0.007359 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  121 weights are ~= 1. The remaining 1071 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4766  0.8581  0.9473  0.9056  0.9796  0.9975 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_G_mean 
## Model: model_2 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0550 -0.7905  0.0511  0.9067  3.2655 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.854543   0.036765 104.844  < 2e-16 ***
## Risk_cond           -0.006678   0.073635  -0.091 0.927757    
## Help_cond           -0.035955   0.073654  -0.488 0.625531    
## Cond1                0.128532   0.036833   3.490 0.000502 ***
## Risk_cond:Help_cond  0.075624   0.147344   0.513 0.607875    
## Risk_cond:Cond1      0.035769   0.073672   0.486 0.627396    
## Help_cond:Cond1     -0.099248   0.073669  -1.347 0.178172    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.268 on 1185 degrees of freedom
## Multiple R-squared:  0.01215,    Adjusted R-squared:  0.007146 
## F-statistic: 2.429 on 6 and 1185 DF,  p-value: 0.02445

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.10323 -0.79838  0.07321  0.89677  3.25310 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.86232    0.03862 100.007   <2e-16 ***
## Risk_cond           -0.02362    0.07687  -0.307   0.7587    
## Help_cond           -0.05521    0.07689  -0.718   0.4729    
## Cond1                0.12936    0.03848   3.362   0.0008 ***
## Risk_cond:Help_cond  0.09333    0.15320   0.609   0.5425    
## Risk_cond:Cond1      0.01992    0.07709   0.258   0.7961    
## Help_cond:Cond1     -0.11753    0.07714  -1.524   0.1279    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.258 
## Multiple R-squared:  0.0128, Adjusted R-squared:  0.007797 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  121 weights are ~= 1. The remaining 1071 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4835  0.8603  0.9512  0.9040  0.9818  0.9973 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_G_mean 
## Model: model_3 
## Formula: Villain_G_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3465 -0.8157  0.0812  0.8552  3.4522 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.85314    0.03616 106.554  < 2e-16 ***
## Cond1                0.14009    0.03630   3.860  0.00012 ***
## Risk_cond           -0.04093    0.07263  -0.564  0.57312    
## Help_cond           -0.12092    0.07354  -1.644  0.10042    
## Attitude             0.23139    0.03694   6.264 5.24e-10 ***
## Risk_cond:Help_cond  0.05746    0.14495   0.396  0.69186    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.248 on 1186 degrees of freedom
## Multiple R-squared:  0.04211,    Adjusted R-squared:  0.03807 
## F-statistic: 10.43 on 5 and 1186 DF,  p-value: 8.278e-10

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.38333 -0.82952  0.06375  0.82983  3.44023 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.87315    0.03860 100.335  < 2e-16 ***
## Cond1                0.13487    0.03790   3.558 0.000388 ***
## Risk_cond           -0.04740    0.07512  -0.631 0.528177    
## Help_cond           -0.14324    0.07657  -1.871 0.061641 .  
## Attitude             0.24161    0.04249   5.687 1.63e-08 ***
## Risk_cond:Help_cond  0.05897    0.15084   0.391 0.695936    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.25 
## Multiple R-squared:  0.04311,    Adjusted R-squared:  0.03907 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  98 weights are ~= 1. The remaining 1094 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4289  0.8725  0.9502  0.9075  0.9853  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_G_mean 
## Model: model_4 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4226 -0.8523  0.0803  0.8610  3.3686 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.85362    0.03618 106.506  < 2e-16 ***
## Risk_cond           -0.04656    0.07275  -0.640 0.522303    
## Help_cond           -0.11667    0.07362  -1.585 0.113260    
## Cond1                0.13967    0.03629   3.849 0.000125 ***
## Attitude             0.23302    0.03708   6.284 4.64e-10 ***
## Risk_cond:Help_cond  0.05631    0.14504   0.388 0.697936    
## Risk_cond:Cond1      0.07360    0.07275   1.012 0.311917    
## Help_cond:Cond1     -0.08310    0.07255  -1.145 0.252257    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.248 on 1184 degrees of freedom
## Multiple R-squared:  0.04403,    Adjusted R-squared:  0.03838 
## F-statistic:  7.79 on 7 and 1184 DF,  p-value: 3.056e-09

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4566 -0.8780  0.0548  0.8253  3.3516 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.87476    0.03874 100.015  < 2e-16 ***
## Risk_cond           -0.05503    0.07550  -0.729 0.466244    
## Help_cond           -0.13651    0.07694  -1.774 0.076278 .  
## Cond1                0.13382    0.03792   3.529 0.000433 ***
## Attitude             0.24218    0.04262   5.683 1.67e-08 ***
## Risk_cond:Help_cond  0.05937    0.15141   0.392 0.695030    
## Risk_cond:Cond1      0.05941    0.07619   0.780 0.435658    
## Help_cond:Cond1     -0.09895    0.07612  -1.300 0.193906    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.245 
## Multiple R-squared:  0.04506,    Adjusted R-squared:  0.03942 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  105 weights are ~= 1. The remaining 1087 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4207  0.8698  0.9455  0.9064  0.9845  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_S_mean 
## Model: model_1 
## Formula: Villain_S_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7178 -0.9619  0.2822  1.2240  2.6880 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.040677   0.044492 113.293  < 2e-16 ***
## Cond1               -0.544592   0.044605 -12.209  < 2e-16 ***
## Risk_cond            0.323259   0.089005   3.632 0.000293 ***
## Help_cond           -0.006686   0.089027  -0.075 0.940145    
## Risk_cond:Help_cond -0.103190   0.178312  -0.579 0.562900    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.536 on 1187 degrees of freedom
## Multiple R-squared:  0.1192, Adjusted R-squared:  0.1162 
## F-statistic: 40.17 on 4 and 1187 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.8241 -1.0620  0.1759  1.1567  2.5531 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.143780   0.051249 100.368  < 2e-16 ***
## Cond1               -0.547721   0.047145 -11.618  < 2e-16 ***
## Risk_cond            0.284376   0.092363   3.079  0.00213 ** 
## Help_cond           -0.002612   0.092259  -0.028  0.97742    
## Risk_cond:Help_cond -0.033239   0.184825  -0.180  0.85731    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.468 
## Multiple R-squared:  0.1198, Adjusted R-squared:  0.1169 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  52 weights are ~= 1. The remaining 1140 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2578  0.8776  0.9442  0.9033  0.9871  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_S_mean 
## Model: model_2 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6457 -0.9097  0.3028  1.2984  2.7702 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.039115   0.044507 113.221  < 2e-16 ***
## Risk_cond            0.322486   0.089142   3.618  0.00031 ***
## Help_cond            0.002850   0.089165   0.032  0.97451    
## Cond1               -0.545272   0.044590 -12.229  < 2e-16 ***
## Risk_cond:Help_cond -0.112491   0.178372  -0.631  0.52839    
## Risk_cond:Cond1      0.152714   0.089185   1.712  0.08710 .  
## Help_cond:Cond1     -0.006226   0.089183  -0.070  0.94436    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.535 on 1185 degrees of freedom
## Multiple R-squared:  0.1214, Adjusted R-squared:  0.1169 
## F-statistic: 27.29 on 6 and 1185 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7490 -1.0099  0.2166  1.1822  2.6607 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.141903   0.051342 100.151  < 2e-16 ***
## Risk_cond            0.297714   0.094694   3.144  0.00171 ** 
## Help_cond            0.007999   0.094568   0.085  0.93260    
## Cond1               -0.551994   0.047356 -11.656  < 2e-16 ***
## Risk_cond:Help_cond -0.045548   0.185009  -0.246  0.80558    
## Risk_cond:Cond1      0.187785   0.094828   1.980  0.04791 *  
## Help_cond:Cond1     -0.015037   0.094384  -0.159  0.87344    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.462 
## Multiple R-squared:  0.1248, Adjusted R-squared:  0.1203 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  76 weights are ~= 1. The remaining 1116 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2695  0.8739  0.9413  0.9008  0.9815  0.9986 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_S_mean 
## Model: model_3 
## Formula: Villain_S_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.0480 -0.9158  0.2409  1.0786  3.6107 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.04034    0.04366 115.446  < 2e-16 ***
## Cond1               -0.52985    0.04382 -12.091  < 2e-16 ***
## Risk_cond            0.26991    0.08769   3.078  0.00213 ** 
## Help_cond           -0.11530    0.08879  -1.298  0.19438    
## Attitude             0.30481    0.04460   6.834 1.31e-11 ***
## Risk_cond:Help_cond -0.12445    0.17500  -0.711  0.47714    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.507 on 1186 degrees of freedom
## Multiple R-squared:  0.1526, Adjusted R-squared:  0.149 
## F-statistic: 42.71 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2075 -1.0148  0.1264  0.9847  3.6201 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.14481    0.04923 104.509  < 2e-16 ***
## Cond1               -0.53213    0.04591 -11.591  < 2e-16 ***
## Risk_cond            0.22289    0.09001   2.476   0.0134 *  
## Help_cond           -0.12866    0.09151  -1.406   0.1600    
## Attitude             0.35223    0.05375   6.553 8.39e-11 ***
## Risk_cond:Help_cond -0.06146    0.17988  -0.342   0.7326    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.412 
## Multiple R-squared:  0.1661, Adjusted R-squared:  0.1625 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  99 weights are ~= 1. The remaining 1093 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1450  0.8702  0.9504  0.8960  0.9818  0.9983 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Villain_S_mean 
## Model: model_4 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.9496 -0.9578  0.2554  1.0504  3.7601 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.03788    0.04363 115.471  < 2e-16 ***
## Risk_cond            0.26881    0.08772   3.065  0.00223 ** 
## Help_cond           -0.10579    0.08877  -1.192  0.23361    
## Cond1               -0.53028    0.04376 -12.117  < 2e-16 ***
## Attitude             0.31362    0.04472   7.014  3.9e-12 ***
## Risk_cond:Help_cond -0.13849    0.17489  -0.792  0.42860    
## Risk_cond:Cond1      0.20363    0.08773   2.321  0.02045 *  
## Help_cond:Cond1      0.01551    0.08748   0.177  0.85931    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.505 on 1184 degrees of freedom
## Multiple R-squared:  0.1564, Adjusted R-squared:  0.1515 
## F-statistic: 31.37 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.1231 -1.0794  0.1176  0.9086  3.8051 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.145427   0.049791 103.340  < 2e-16 ***
## Risk_cond            0.239966   0.092753   2.587  0.00980 ** 
## Help_cond           -0.115879   0.094124  -1.231  0.21852    
## Cond1               -0.538608   0.046277 -11.639  < 2e-16 ***
## Attitude             0.364411   0.053834   6.769 2.03e-11 ***
## Risk_cond:Help_cond -0.080885   0.180309  -0.449  0.65381    
## Risk_cond:Cond1      0.246672   0.093414   2.641  0.00838 ** 
## Help_cond:Cond1     -0.009025   0.092362  -0.098  0.92218    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.381 
## Multiple R-squared:  0.1759, Adjusted R-squared:  0.1711 
## Convergence in 13 IRWLS iterations
## 
## Robustness weights: 
##  69 weights are ~= 1. The remaining 1123 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1392  0.8579  0.9443  0.8951  0.9853  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_G_mean 
## Model: model_1 
## Formula: Endure_G_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2523 -0.6994  0.0846  0.8346  3.1190 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.01030    0.03492 114.843  < 2e-16 ***
## Cond1               -0.04345    0.03501  -1.241    0.215    
## Risk_cond            0.29481    0.06986   4.220 2.63e-05 ***
## Help_cond            0.07657    0.06987   1.096    0.273    
## Risk_cond:Help_cond  0.05160    0.13995   0.369    0.712    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.205 on 1187 degrees of freedom
## Multiple R-squared:  0.01684,    Adjusted R-squared:  0.01353 
## F-statistic: 5.083 on 4 and 1187 DF,  p-value: 0.0004612

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.29353 -0.74276  0.05137  0.80137  3.07890 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.04670    0.03656 110.693  < 2e-16 ***
## Cond1               -0.04745    0.03586  -1.323    0.186    
## Risk_cond            0.29136    0.07199   4.047 5.52e-05 ***
## Help_cond            0.08107    0.07196   1.127    0.260    
## Risk_cond:Help_cond  0.05267    0.14409   0.366    0.715    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.142 
## Multiple R-squared:  0.01714,    Adjusted R-squared:  0.01383 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  131 weights are ~= 1. The remaining 1061 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3853  0.8442  0.9465  0.8946  0.9860  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_G_mean 
## Model: model_2 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3236 -0.7665  0.1078  0.8578  3.1821 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.01255    0.03490 114.969  < 2e-16 ***
## Risk_cond            0.28514    0.06990   4.079 4.82e-05 ***
## Help_cond            0.07781    0.06992   1.113   0.2660    
## Cond1               -0.04384    0.03497  -1.254   0.2102    
## Risk_cond:Help_cond  0.05748    0.13987   0.411   0.6812    
## Risk_cond:Cond1      0.01282    0.06994   0.183   0.8546    
## Help_cond:Cond1     -0.15552    0.06993  -2.224   0.0263 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.204 on 1185 degrees of freedom
## Multiple R-squared:  0.02096,    Adjusted R-squared:  0.016 
## F-statistic: 4.229 on 6 and 1185 DF,  p-value: 0.0003208

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.37159 -0.79664  0.07898  0.82898  3.14686 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.04810    0.03639 111.240  < 2e-16 ***
## Risk_cond            0.28316    0.07183   3.942 8.55e-05 ***
## Help_cond            0.08318    0.07180   1.158   0.2469    
## Cond1               -0.04983    0.03588  -1.389   0.1652    
## Risk_cond:Help_cond  0.05776    0.14353   0.402   0.6875    
## Risk_cond:Cond1      0.01114    0.07160   0.156   0.8764    
## Help_cond:Cond1     -0.16325    0.07167  -2.278   0.0229 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.143 
## Multiple R-squared:  0.02195,    Adjusted R-squared:  0.01699 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  99 weights are ~= 1. The remaining 1093 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3645  0.8626  0.9477  0.8984  0.9887  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_G_mean 
## Model: model_3 
## Formula: Endure_G_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6385 -0.6714  0.0829  0.7586  2.8980 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.00993    0.03364 119.196  < 2e-16 ***
## Cond1               -0.02743    0.03377  -0.812 0.416774    
## Risk_cond            0.23683    0.06757   3.505 0.000473 ***
## Help_cond           -0.04148    0.06842  -0.606 0.544455    
## Attitude             0.33129    0.03437   9.640  < 2e-16 ***
## Risk_cond:Help_cond  0.02850    0.13485   0.211 0.832675    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.161 on 1186 degrees of freedom
## Multiple R-squared:  0.08828,    Adjusted R-squared:  0.08444 
## F-statistic: 22.97 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.74429 -0.73959  0.02583  0.70159  2.83092 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.07082    0.03564 114.208  < 2e-16 ***
## Cond1               -0.02928    0.03406  -0.860 0.390192    
## Risk_cond            0.25820    0.06786   3.805 0.000149 ***
## Help_cond           -0.04111    0.06887  -0.597 0.550669    
## Attitude             0.35665    0.03447  10.348  < 2e-16 ***
## Risk_cond:Help_cond  0.04199    0.13640   0.308 0.758253    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.077 
## Multiple R-squared:  0.1052, Adjusted R-squared:  0.1014 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  120 weights are ~= 1. The remaining 1072 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2015  0.8540  0.9466  0.8922  0.9863  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_G_mean 
## Model: model_4 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6451 -0.6540  0.1012  0.7816  2.9265 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.01124    0.03362 119.294  < 2e-16 ***
## Risk_cond            0.22836    0.06760   3.378 0.000754 ***
## Help_cond           -0.03712    0.06841  -0.543 0.587541    
## Cond1               -0.02798    0.03373  -0.830 0.406984    
## Attitude             0.33177    0.03446   9.627  < 2e-16 ***
## Risk_cond:Help_cond  0.02998    0.13479   0.222 0.824037    
## Risk_cond:Cond1      0.06668    0.06761   0.986 0.324217    
## Help_cond:Cond1     -0.13253    0.06742  -1.966 0.049560 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.16 on 1184 degrees of freedom
## Multiple R-squared:  0.09204,    Adjusted R-squared:  0.08667 
## F-statistic: 17.15 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.75800 -0.72036  0.03197  0.70712  2.85978 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.07148    0.03555 114.520  < 2e-16 ***
## Risk_cond            0.25141    0.06778   3.709 0.000217 ***
## Help_cond           -0.03664    0.06883  -0.532 0.594620    
## Cond1               -0.03146    0.03412  -0.922 0.356581    
## Attitude             0.35546    0.03453  10.295  < 2e-16 ***
## Risk_cond:Help_cond  0.04500    0.13607   0.331 0.740904    
## Risk_cond:Cond1      0.06188    0.06794   0.911 0.362557    
## Help_cond:Cond1     -0.12800    0.06836  -1.872 0.061394 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.076 
## Multiple R-squared:  0.1083, Adjusted R-squared:  0.1031 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  105 weights are ~= 1. The remaining 1087 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1973  0.8575  0.9510  0.8939  0.9861  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_S_mean 
## Model: model_1 
## Formula: Endure_S_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8793 -0.9046 -0.2966  0.7341  3.5954 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.61686    0.03804  95.089  < 2e-16 ***
## Cond1                0.21933    0.03813   5.752 1.12e-08 ***
## Risk_cond            0.02717    0.07609   0.357    0.721    
## Help_cond            0.05020    0.07611   0.660    0.510    
## Risk_cond:Help_cond -0.12643    0.15244  -0.829    0.407    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.313 on 1187 degrees of freedom
## Multiple R-squared:  0.02897,    Adjusted R-squared:  0.0257 
## F-statistic: 8.854 on 4 and 1187 DF,  p-value: 4.806e-07

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8607 -0.8468 -0.2470  0.7697  3.6808 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.564218   0.041767  85.336  < 2e-16 ***
## Cond1                0.233244   0.040534   5.754 1.11e-08 ***
## Risk_cond            0.003989   0.080562   0.050    0.961    
## Help_cond            0.051412   0.080214   0.641    0.522    
## Risk_cond:Help_cond -0.158014   0.160477  -0.985    0.325    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.307 
## Multiple R-squared:  0.03172,    Adjusted R-squared:  0.02845 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  13 weights are ~= 1. The remaining 1179 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4078  0.8672  0.9621  0.9128  0.9931  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_S_mean 
## Model: model_2 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9032 -0.9130 -0.2986  0.7138  3.5777 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.617220   0.038091  94.963  < 2e-16 ***
## Risk_cond            0.027748   0.076291   0.364    0.716    
## Help_cond            0.047460   0.076311   0.622    0.534    
## Cond1                0.219532   0.038162   5.753 1.12e-08 ***
## Risk_cond:Help_cond -0.124018   0.152658  -0.812    0.417    
## Risk_cond:Cond1     -0.043617   0.076329  -0.571    0.568    
## Help_cond:Cond1      0.007498   0.076326   0.098    0.922    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.314 on 1185 degrees of freedom
## Multiple R-squared:  0.02925,    Adjusted R-squared:  0.02433 
## F-statistic: 5.951 on 6 and 1185 DF,  p-value: 3.877e-06

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8949 -0.8547 -0.2470  0.7723  3.6827 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.564382   0.041923  85.021  < 2e-16 ***
## Risk_cond            0.006974   0.080705   0.086    0.931    
## Help_cond            0.048744   0.080350   0.607    0.544    
## Cond1                0.233055   0.040503   5.754 1.11e-08 ***
## Risk_cond:Help_cond -0.158216   0.161103  -0.982    0.326    
## Risk_cond:Cond1     -0.034685   0.080624  -0.430    0.667    
## Help_cond:Cond1      0.039377   0.080648   0.488    0.625    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.31 
## Multiple R-squared:  0.032,  Adjusted R-squared:  0.0271 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  44 weights are ~= 1. The remaining 1148 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4094  0.8666  0.9586  0.9108  0.9917  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_S_mean 
## Model: model_3 
## Formula: Endure_S_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9911 -0.9150 -0.2285  0.7905  3.5845 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.61677    0.03798  95.218  < 2e-16 ***
## Cond1                0.22322    0.03813   5.855 6.18e-09 ***
## Risk_cond            0.01310    0.07629   0.172   0.8637    
## Help_cond            0.02155    0.07725   0.279   0.7803    
## Attitude             0.08041    0.03880   2.072   0.0385 *  
## Risk_cond:Help_cond -0.13204    0.15225  -0.867   0.3860    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.311 on 1186 degrees of freedom
## Multiple R-squared:  0.03248,    Adjusted R-squared:  0.0284 
## F-statistic: 7.962 on 5 and 1186 DF,  p-value: 2.159e-07

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9556 -0.8499 -0.1831  0.8252  3.6682 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.567717   0.042362  84.219  < 2e-16 ***
## Cond1                0.235925   0.040546   5.819 7.62e-09 ***
## Risk_cond           -0.004092   0.080253  -0.051    0.959    
## Help_cond            0.023925   0.084010   0.285    0.776    
## Attitude             0.067964   0.044783   1.518    0.129    
## Risk_cond:Help_cond -0.166924   0.160907  -1.037    0.300    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.303 
## Multiple R-squared:  0.03398,    Adjusted R-squared:  0.02991 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  47 weights are ~= 1. The remaining 1145 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4080  0.8659  0.9578  0.9099  0.9889  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: Endure_S_mean 
## Model: model_4 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +      Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0100 -0.9240 -0.2217  0.7975  3.5760 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.61691    0.03804  95.080  < 2e-16 ***
## Risk_cond            0.01417    0.07648   0.185   0.8531    
## Help_cond            0.01997    0.07740   0.258   0.7964    
## Cond1                0.22333    0.03816   5.853 6.25e-09 ***
## Attitude             0.07935    0.03899   2.035   0.0421 *  
## Risk_cond:Help_cond -0.13060    0.15249  -0.856   0.3919    
## Risk_cond:Cond1     -0.03074    0.07649  -0.402   0.6879    
## Help_cond:Cond1      0.01300    0.07627   0.170   0.8647    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.312 on 1184 degrees of freedom
## Multiple R-squared:  0.03263,    Adjusted R-squared:  0.02691 
## F-statistic: 5.706 on 7 and 1184 DF,  p-value: 1.665e-06

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9842 -0.8566 -0.1930  0.8145  3.6783 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.567496   0.042475  83.991  < 2e-16 ***
## Risk_cond           -0.001154   0.080450  -0.014    0.989    
## Help_cond            0.022171   0.084074   0.264    0.792    
## Cond1                0.235742   0.040518   5.818 7.65e-09 ***
## Attitude             0.067333   0.045129   1.492    0.136    
## Risk_cond:Help_cond -0.168313   0.161666  -1.041    0.298    
## Risk_cond:Cond1     -0.021916   0.081312  -0.270    0.788    
## Help_cond:Cond1      0.041874   0.080708   0.519    0.604    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.305 
## Multiple R-squared:  0.03419,    Adjusted R-squared:  0.02848 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  47 weights are ~= 1. The remaining 1145 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4075  0.8654  0.9586  0.9103  0.9893  0.9990 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_G_mean 
## Model: model_1 
## Formula: SelfExploit_G_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5524 -0.6250  0.1040  0.7661  3.0161 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.25557    0.03478 122.357  < 2e-16 ***
## Cond1                0.03630    0.03487   1.041  0.29810    
## Risk_cond            0.38125    0.06958   5.480  5.2e-08 ***
## Help_cond            0.18727    0.06959   2.691  0.00722 ** 
## Risk_cond:Help_cond  0.19539    0.13939   1.402  0.16124    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.201 on 1187 degrees of freedom
## Multiple R-squared:  0.03274,    Adjusted R-squared:  0.02949 
## F-statistic: 10.05 on 4 and 1187 DF,  p-value: 5.358e-08

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.60057 -0.66249  0.03773  0.69151  2.94151 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.32409    0.03610 119.787  < 2e-16 ***
## Cond1                0.02489    0.03492   0.713   0.4761    
## Risk_cond            0.37741    0.06961   5.421 7.16e-08 ***
## Help_cond            0.16467    0.06964   2.365   0.0182 *  
## Risk_cond:Help_cond  0.12133    0.13913   0.872   0.3833    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.082 
## Multiple R-squared:  0.03214,    Adjusted R-squared:  0.02888 
## Convergence in 10 IRWLS iterations
## 
## Robustness weights: 
##  100 weights are ~= 1. The remaining 1092 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2456  0.8526  0.9477  0.8889  0.9876  0.9988 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_G_mean 
## Model: model_2 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6566 -0.6566  0.0881  0.8277  3.1086 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.258775   0.034707 122.705  < 2e-16 ***
## Risk_cond            0.368563   0.069515   5.302 1.37e-07 ***
## Help_cond            0.187593   0.069533   2.698  0.00708 ** 
## Cond1                0.035883   0.034772   1.032  0.30231    
## Risk_cond:Help_cond  0.204461   0.139099   1.470  0.14186    
## Risk_cond:Cond1     -0.004218   0.069549  -0.061  0.95165    
## Help_cond:Cond1     -0.204909   0.069547  -2.946  0.00328 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.197 on 1185 degrees of freedom
## Multiple R-squared:  0.03978,    Adjusted R-squared:  0.03492 
## F-statistic: 8.182 on 6 and 1185 DF,  p-value: 1.086e-08

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.72947 -0.72947  0.01123  0.75420  3.05642 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.32644    0.03605 120.021  < 2e-16 ***
## Risk_cond            0.36916    0.06963   5.302 1.37e-07 ***
## Help_cond            0.17034    0.06962   2.447   0.0146 *  
## Cond1                0.02440    0.03479   0.701   0.4832    
## Risk_cond:Help_cond  0.13795    0.13872   0.994   0.3202    
## Risk_cond:Cond1     -0.04554    0.06984  -0.652   0.5145    
## Help_cond:Cond1     -0.20086    0.06966  -2.884   0.0040 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.08 
## Multiple R-squared:  0.04052,    Adjusted R-squared:  0.03567 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  105 weights are ~= 1. The remaining 1087 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2089  0.8388  0.9553  0.8888  0.9830  0.9985 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_G_mean 
## Model: model_3 
## Formula: SelfExploit_G_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7990 -0.6218  0.1323  0.7547  3.1024 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.25525    0.03379 125.934  < 2e-16 ***
## Cond1                0.05042    0.03392   1.487    0.137    
## Risk_cond            0.33013    0.06786   4.865  1.3e-06 ***
## Help_cond            0.08319    0.06872   1.211    0.226    
## Attitude             0.29209    0.03452   8.462  < 2e-16 ***
## Risk_cond:Help_cond  0.17502    0.13544   1.292    0.197    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.166 on 1186 degrees of freedom
## Multiple R-squared:  0.08782,    Adjusted R-squared:  0.08397 
## F-statistic: 22.84 on 5 and 1186 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.99600 -0.69913  0.05688  0.64145  3.01359 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.35166    0.03578 121.614  < 2e-16 ***
## Cond1                0.02518    0.03316   0.759    0.448    
## Risk_cond            0.34687    0.06575   5.276 1.57e-07 ***
## Help_cond            0.03640    0.06698   0.543    0.587    
## Attitude             0.34227    0.03802   9.001  < 2e-16 ***
## Risk_cond:Help_cond  0.08294    0.13248   0.626    0.531    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.023 
## Multiple R-squared:  0.1171, Adjusted R-squared:  0.1134 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  99 weights are ~= 1. The remaining 1093 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.09262 0.85120 0.95050 0.88440 0.98780 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_G_mean 
## Model: model_4 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9037 -0.6292  0.1434  0.7287  2.9787 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.25763    0.03373 126.227  < 2e-16 ***
## Risk_cond            0.31882    0.06782   4.701 2.89e-06 ***
## Help_cond            0.08691    0.06863   1.266  0.20563    
## Cond1                0.04978    0.03383   1.471  0.14147    
## Attitude             0.29066    0.03457   8.408  < 2e-16 ***
## Risk_cond:Help_cond  0.18036    0.13521   1.334  0.18248    
## Risk_cond:Cond1      0.04297    0.06782   0.634  0.52648    
## Help_cond:Cond1     -0.18476    0.06763  -2.732  0.00639 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.164 on 1184 degrees of freedom
## Multiple R-squared:  0.09388,    Adjusted R-squared:  0.08852 
## F-statistic: 17.52 on 7 and 1184 DF,  p-value: < 2.2e-16

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -4.05701 -0.73769  0.04407  0.65814  2.92248 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.35247    0.03578 121.631  < 2e-16 ***
## Risk_cond            0.33692    0.06622   5.088 4.21e-07 ***
## Help_cond            0.04622    0.06752   0.685   0.4938    
## Cond1                0.02507    0.03311   0.757   0.4490    
## Attitude             0.33693    0.03774   8.928  < 2e-16 ***
## Risk_cond:Help_cond  0.09814    0.13240   0.741   0.4587    
## Risk_cond:Cond1     -0.00610    0.06665  -0.092   0.9271    
## Help_cond:Cond1     -0.16918    0.06672  -2.536   0.0114 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.024 
## Multiple R-squared:  0.1219, Adjusted R-squared:  0.1167 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  118 weights are ~= 1. The remaining 1074 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.08087 0.85080 0.94630 0.88320 0.98570 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_S_mean 
## Model: model_1 
## Formula: SelfExploit_S_mean ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6905 -1.0448 -0.3436  0.8416  4.7028 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         2.460987   0.037328  65.928  < 2e-16 ***
## Cond1               0.006823   0.037423   0.182 0.855368    
## Risk_cond           0.052076   0.074674   0.697 0.485705    
## Help_cond           0.246700   0.074692   3.303 0.000985 ***
## Risk_cond:Help_cond 0.293379   0.149601   1.961 0.050103 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.289 on 1187 degrees of freedom
## Multiple R-squared:  0.01272,    Adjusted R-squared:  0.009392 
## F-statistic: 3.823 on 4 and 1187 DF,  p-value: 0.00429

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.5609 -0.8942 -0.1893  0.9634  4.8198 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.32197    0.04721  49.186  < 2e-16 ***
## Cond1                0.01913    0.03878   0.493  0.62181    
## Risk_cond            0.05887    0.07746   0.760  0.44744    
## Help_cond            0.24860    0.07773   3.198  0.00142 ** 
## Risk_cond:Help_cond  0.26413    0.15539   1.700  0.08942 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.136 
## Multiple R-squared:  0.01336,    Adjusted R-squared:  0.01003 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  55 weights are ~= 1. The remaining 1137 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.03244 0.87190 0.93090 0.88790 0.98340 0.99860 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_S_mean 
## Model: model_2 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7586 -1.0919 -0.3045  0.8212  4.7230 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.463057   0.037346  65.952  < 2e-16 ***
## Risk_cond            0.048563   0.074800   0.649  0.51631    
## Help_cond            0.240380   0.074819   3.213  0.00135 ** 
## Cond1                0.007149   0.037416   0.191  0.84850    
## Risk_cond:Help_cond  0.302526   0.149674   2.021  0.04348 *  
## Risk_cond:Cond1     -0.104197   0.074836  -1.392  0.16408    
## Help_cond:Cond1     -0.060950   0.074834  -0.814  0.41554    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.288 on 1185 degrees of freedom
## Multiple R-squared:  0.01486,    Adjusted R-squared:  0.009871 
## F-statistic: 2.979 on 6 and 1185 DF,  p-value: 0.006835

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6352 -0.9641 -0.1487  0.9358  4.8513 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.32489    0.04719  49.266  < 2e-16 ***
## Risk_cond            0.05499    0.07739   0.711  0.47752    
## Help_cond            0.23986    0.07768   3.088  0.00206 ** 
## Cond1                0.01805    0.03880   0.465  0.64183    
## Risk_cond:Help_cond  0.27933    0.15538   1.798  0.07248 .  
## Risk_cond:Cond1     -0.14308    0.07753  -1.846  0.06521 .  
## Help_cond:Cond1     -0.07905    0.07762  -1.018  0.30871    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.135 
## Multiple R-squared:  0.01758,    Adjusted R-squared:  0.0126 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  90 weights are ~= 1. The remaining 1102 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02831 0.86670 0.92460 0.88460 0.98170 0.99840 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_S_mean 
## Model: model_3 
## Formula: SelfExploit_S_mean ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8385 -1.0530 -0.2675  0.8458  4.5059 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.46085    0.03717  66.199  < 2e-16 ***
## Cond1                0.01289    0.03731   0.345 0.729903    
## Risk_cond            0.03014    0.07466   0.404 0.686536    
## Help_cond            0.20204    0.07560   2.672 0.007635 ** 
## Attitude             0.12535    0.03797   3.301 0.000993 ***
## Risk_cond:Help_cond  0.28464    0.14900   1.910 0.056342 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.283 on 1186 degrees of freedom
## Multiple R-squared:  0.02171,    Adjusted R-squared:  0.01758 
## F-statistic: 5.263 on 5 and 1186 DF,  p-value: 8.687e-05

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6609 -0.9302 -0.1642  0.9604  4.6900 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.32690    0.04800  48.477  < 2e-16 ***
## Cond1                0.02327    0.03892   0.598  0.55001    
## Risk_cond            0.04751    0.07761   0.612  0.54055    
## Help_cond            0.22171    0.07876   2.815  0.00496 ** 
## Attitude             0.07876    0.03920   2.009  0.04474 *  
## Risk_cond:Help_cond  0.25822    0.15559   1.660  0.09727 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.134 
## Multiple R-squared:  0.0172, Adjusted R-squared:  0.01306 
## Convergence in 13 IRWLS iterations
## 
## Robustness weights: 
##  70 weights are ~= 1. The remaining 1122 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.04849 0.86410 0.92840 0.88660 0.98280 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: SelfExploit_S_mean 
## Model: model_4 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8757 -1.0945 -0.2831  0.8310  4.5278 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.46258    0.03720  66.190  < 2e-16 ***
## Risk_cond            0.02788    0.07480   0.373  0.70947    
## Help_cond            0.19851    0.07570   2.622  0.00884 ** 
## Cond1                0.01293    0.03732   0.346  0.72908    
## Attitude             0.12088    0.03813   3.170  0.00156 ** 
## Risk_cond:Help_cond  0.29250    0.14914   1.961  0.05008 .  
## Risk_cond:Cond1     -0.08457    0.07481  -1.131  0.25849    
## Help_cond:Cond1     -0.05257    0.07460  -0.705  0.48111    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.283 on 1184 degrees of freedom
## Multiple R-squared:  0.02315,    Adjusted R-squared:  0.01738 
## F-statistic: 4.009 on 7 and 1184 DF,  p-value: 0.0002399

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7100 -0.9490 -0.1462  0.9331  4.7284 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.32908    0.04794  48.585  < 2e-16 ***
## Risk_cond            0.04486    0.07754   0.579  0.56297    
## Help_cond            0.21619    0.07864   2.749  0.00607 ** 
## Cond1                0.02200    0.03896   0.565  0.57243    
## Attitude             0.07181    0.03974   1.807  0.07101 .  
## Risk_cond:Help_cond  0.27264    0.15566   1.752  0.08011 .  
## Risk_cond:Cond1     -0.12994    0.07814  -1.663  0.09658 .  
## Help_cond:Cond1     -0.07517    0.07774  -0.967  0.33378    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 1.133 
## Multiple R-squared:  0.02071,    Adjusted R-squared:  0.01492 
## Convergence in 13 IRWLS iterations
## 
## Robustness weights: 
##  84 weights are ~= 1. The remaining 1108 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.04252 0.86330 0.92470 0.88520 0.98280 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalSupportExpl 
## Model: model_1 
## Formula: GlobalSupportExpl ~ Cond + Risk_cond * Help_cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2493 -0.6761 -0.1213  0.5148  3.9355 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)  
## (Intercept)          0.0004483  0.0243377   0.018   0.9853  
## Cond1                0.0474236  0.0243995   1.944   0.0522 .
## Risk_cond           -0.1104554  0.0486869  -2.269   0.0235 *
## Help_cond            0.0585225  0.0486985   1.202   0.2297  
## Risk_cond:Help_cond  0.0453346  0.0975388   0.465   0.6422  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8402 on 1187 degrees of freedom
## Multiple R-squared:  0.008793,   Adjusted R-squared:  0.005453 
## F-statistic: 2.633 on 4 and 1187 DF,  p-value: 0.0329

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.15525 -0.61008 -0.07195  0.57951  4.03796 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)  
## (Intercept)         -0.05911    0.02658  -2.224   0.0263 *
## Cond1                0.03803    0.02457   1.548   0.1220  
## Risk_cond           -0.08774    0.04940  -1.776   0.0760 .
## Help_cond            0.03899    0.04942   0.789   0.4303  
## Risk_cond:Help_cond  0.09492    0.09907   0.958   0.3382  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.8295 
## Multiple R-squared:  0.006196,   Adjusted R-squared:  0.002847 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  observation 963 is an outlier with |weight| = 0 ( < 8.4e-05); 
##  77 weights are ~= 1. The remaining 1114 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0565  0.8775  0.9464  0.9094  0.9835  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalSupportExpl 
## Model: model_2 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2536 -0.6678 -0.1234  0.5094  3.9311 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)  
## (Intercept)          0.001251   0.024367   0.051   0.9591  
## Risk_cond           -0.112023   0.048805  -2.295   0.0219 *
## Help_cond            0.056360   0.048818   1.155   0.2485  
## Cond1                0.047524   0.024413   1.947   0.0518 .
## Risk_cond:Help_cond  0.048735   0.097658   0.499   0.6178  
## Risk_cond:Cond1     -0.035916   0.048829  -0.736   0.4621  
## Help_cond:Cond1     -0.026764   0.048827  -0.548   0.5837  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8406 on 1185 degrees of freedom
## Multiple R-squared:  0.009488,   Adjusted R-squared:  0.004473 
## F-statistic: 1.892 on 6 and 1185 DF,  p-value: 0.07908

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.20705 -0.60494 -0.06648  0.57922  4.04760 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)  
## (Intercept)         -0.05924    0.02668  -2.220   0.0266 *
## Risk_cond           -0.09095    0.04940  -1.841   0.0659 .
## Help_cond            0.03629    0.04948   0.733   0.4634  
## Cond1                0.03800    0.02464   1.542   0.1234  
## Risk_cond:Help_cond  0.09841    0.09891   0.995   0.3200  
## Risk_cond:Cond1     -0.03925    0.04937  -0.795   0.4268  
## Help_cond:Cond1     -0.05699    0.04936  -1.155   0.2485  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.8232 
## Multiple R-squared:  0.007919,   Adjusted R-squared:  0.002896 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  observation 963 is an outlier with |weight| = 0 ( < 8.4e-05); 
##  79 weights are ~= 1. The remaining 1112 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.04908 0.87470 0.94480 0.90800 0.98450 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         1.819e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalSupportExpl 
## Model: model_3 
## Formula: GlobalSupportExpl ~ Cond + Risk_cond * Help_cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6708 -0.6354 -0.1146  0.5112  3.2864 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.0006179  0.0239663   0.026   0.9794    
## Cond1                0.0401160  0.0240562   1.668   0.0957 .  
## Risk_cond           -0.0840130  0.0481349  -1.745   0.0812 .  
## Help_cond            0.1123559  0.0487422   2.305   0.0213 *  
## Attitude            -0.1510817  0.0244824  -6.171  9.3e-10 ***
## Risk_cond:Help_cond  0.0558732  0.0960653   0.582   0.5609    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8274 on 1186 degrees of freedom
## Multiple R-squared:  0.03963,    Adjusted R-squared:  0.03558 
## F-statistic: 9.788 on 5 and 1186 DF,  p-value: 3.521e-09

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.60917 -0.57798 -0.05723  0.57313  3.39559 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.06127    0.02593  -2.363   0.0183 *  
## Cond1                0.03846    0.02420   1.589   0.1123    
## Risk_cond           -0.05647    0.04918  -1.148   0.2511    
## Help_cond            0.09676    0.04997   1.936   0.0530 .  
## Attitude            -0.14895    0.02825  -5.273  1.6e-07 ***
## Risk_cond:Help_cond  0.11588    0.09775   1.186   0.2360    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.7961 
## Multiple R-squared:  0.03741,    Adjusted R-squared:  0.03335 
## Convergence in 12 IRWLS iterations
## 
## Robustness weights: 
##  93 weights are ~= 1. The remaining 1099 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02933 0.87650 0.94500 0.90250 0.98190 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0) 
## 
## ====================================================
## Outcome: GlobalSupportExpl 
## Model: model_4 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond + Cond:Risk_cond +      Cond:Help_cond + Cond + Attitude 
## ====================================================
## 
## --- lm summary ---
## 
## Call:
## lm(formula = formula_i, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7354 -0.6361 -0.1270  0.5032  3.2615 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.00186    0.02398   0.078   0.9382    
## Risk_cond           -0.08562    0.04822  -1.776   0.0760 .  
## Help_cond            0.10981    0.04879   2.250   0.0246 *  
## Cond1                0.04015    0.02405   1.669   0.0954 .  
## Attitude            -0.15429    0.02458  -6.277 4.83e-10 ***
## Risk_cond:Help_cond  0.06153    0.09613   0.640   0.5223    
## Risk_cond:Cond1     -0.06096    0.04822  -1.264   0.2064    
## Help_cond:Cond1     -0.03746    0.04809  -0.779   0.4361    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8273 on 1184 degrees of freedom
## Multiple R-squared:  0.04139,    Adjusted R-squared:  0.03572 
## F-statistic: 7.303 on 7 and 1184 DF,  p-value: 1.346e-08

## 
## --- lmrob summary ---
## 
## Call:
## robustbase::lmrob(formula = formula_i, data = data)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.69610 -0.57879 -0.06664  0.56769  3.37402 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.06161    0.02613  -2.358   0.0186 *  
## Risk_cond           -0.05875    0.04910  -1.196   0.2318    
## Help_cond            0.09425    0.04988   1.889   0.0591 .  
## Cond1                0.03921    0.02428   1.615   0.1065    
## Attitude            -0.15370    0.02856  -5.381  8.9e-08 ***
## Risk_cond:Help_cond  0.12166    0.09733   1.250   0.2115    
## Risk_cond:Cond1     -0.06935    0.04894  -1.417   0.1568    
## Help_cond:Cond1     -0.06446    0.04847  -1.330   0.1838    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.7876 
## Multiple R-squared:  0.04111,    Adjusted R-squared:  0.03545 
## Convergence in 13 IRWLS iterations
## 
## Robustness weights: 
##  76 weights are ~= 1. The remaining 1116 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02685 0.87530 0.94600 0.90230 0.98400 0.99900 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         8.389e-05         7.768e-12         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)

Below, we now turn to our main models. This is the crux of the study: we have previously demonstrated an effect of the manipulations on occupational heroism – we have previously observed correlates of occupational heroism. We now test how the manipulations can causally influence correlates of occupational heroism.

run_prereg_models <- function(
  data,
  outcomes = c(
    "GlobalGratitude",
    "criticism_items_G_mean", "criticism_items_S_mean",
    "DemandSupp_G_mean", "DemandSupp_S_mean",
    "GlobalVictim",
    "Villain_G_mean", "Villain_S_mean",
    "Endure_G_mean", "Endure_S_mean",
    "SelfExploit_G_mean", "SelfExploit_S_mean",
    "GlobalSupportExpl"
  ),
  models_to_run = c(1, 2, 3, 4),
  occupation_var = "Cond",
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE,
  alpha = 0.05
) {

  # ---- basic checks ----
  required_vars <- unique(c(outcomes, occupation_var, risk_var, help_var, attitude_var))
  missing_vars <- setdiff(required_vars, names(data))
  if (length(missing_vars) > 0) {
    stop("Missing columns in `data`: ", paste(missing_vars, collapse = ", "))
  }

  if (!is.factor(data[[occupation_var]])) {
    data[[occupation_var]] <- as.factor(data[[occupation_var]])
  }

  # ---- hypothesis mapping ----
  outcome_family <- function(y) {
    # strip _G_mean / _S_mean
    gsub("(_G_mean|_S_mean)$", "", y)
  }

  outcome_level <- function(y) {
    if (grepl("_G_mean$", y)) return("general (_G)")
    if (grepl("_S_mean$", y)) return("specific (_S)")
    return("unknown level")
  }

  # Which hypothesis letter corresponds to which outcome family?
  # (based on your prereg list)
  hyp_letter_by_family <- list(
    Gratitude       = "a",
    DemandSupp      = "b",
    Victim          = "c",
    criticism_items = "d",
    Villain         = "e",
    Endure          = "f",
    SelfExploit     = "g",
    SupportExploit  = "h"
  )

  # Expected direction for EACH hypothesis letter (Risk and Help share same direction)
  # +1 means "increase", -1 means "decrease"
  expected_sign_by_letter <- c(
    a = +1,  # gratitude higher
    b = +1,  # support demands higher
    c = +1,  # suffering/protection higher
    d = -1,  # criticism/hate speech acceptability lower
    e = +1,  # impunity/reg-violation acceptability higher
    f = +1,  # belief they'd choose suffering higher
    g = +1,  # belief they'd accept exploitation higher
    h = -1   # support exploiting workers lower
  )

  hypothesis_text <- list(
    H3 = c(
      a = "H3a: Risk → gratitude ↑",
      b = "H3b: Risk → support for workers' demands ↑",
      c = "H3c: Risk → perceived suffering/protection need ↑",
      d = "H3d: Risk → criticism/hate speech acceptability ↓",
      e = "H3e: Risk → support for workers' impunity ↑",
      f = "H3f: Risk → belief they'd choose suffering for duty ↑",
      g = "H3g: Risk → belief they'd accept exploitation if required ↑",
      h = "H3h: Risk → support for exploiting workers if required ↓"
    ),
    H4 = c(
      a = "H4a: Helpfulness → gratitude ↑",
      b = "H4b: Helpfulness → support for workers' demands ↑",
      c = "H4c: Helpfulness → perceived suffering/protection need ↑",
      d = "H4d: Helpfulness → criticism/hate speech acceptability ↓",
      e = "H4e: Helpfulness → support for workers' impunity ↑",
      f = "H4f: Helpfulness → belief they'd choose suffering for duty ↑",
      g = "H4g: Helpfulness → belief they'd accept exploitation if required ↑",
      h = "H4h: Helpfulness → support for exploiting workers if required ↓"
    )
  )

  get_hyp_letter <- function(y) {
    fam <- outcome_family(y)
    if (!fam %in% names(hyp_letter_by_family)) return(NA_character_)
    hyp_letter_by_family[[fam]]
  }

  # ---- coefficient extractor + "supported" line ----
  get_term_stats <- function(fit, term) {
    coefs <- summary(fit)$coefficients
    if (!term %in% rownames(coefs)) return(NULL)
    list(
      beta = unname(coefs[term, 1]),
      se   = unname(coefs[term, 2]),
      t    = unname(coefs[term, 3]),
      p    = unname(coefs[term, 4])
    )
  }

  fmt_num <- function(x, digits = 3) sprintf(paste0("%.", digits, "f"), x)
  fmt_p <- function(p) {
    if (is.na(p)) return("NA")
    if (p < .001) return("<.001")
    sub("^0", "", sprintf("%.3f", p))
  }

  print_support_line_if_sig <- function(stats, hyp_code, expected_sign, alpha) {
    if (is.null(stats)) return(invisible(NULL))
    if (is.na(stats$p) || stats$p >= alpha) return(invisible(NULL))

    direction_ok <- sign(stats$beta) == sign(expected_sign)

    if (direction_ok) {
      cat("✅ ", hyp_code, " supported: ",
          "β=", fmt_num(stats$beta),
          ", SE=", fmt_num(stats$se),
          ", t=", fmt_num(stats$t),
          ", p=", fmt_p(stats$p),
          "\n", sep = "")
    } else {
      cat("⚠️  ", hyp_code, " significant but opposite direction: ",
          "β=", fmt_num(stats$beta),
          ", SE=", fmt_num(stats$se),
          ", t=", fmt_num(stats$t),
          ", p=", fmt_p(stats$p),
          "\n", sep = "")
    }
  }

  # ---- Define formulas (as prereg) ----
  f_model_1 <- function(y) {
    as.formula(paste0(y, " ~ ", occupation_var, " + ", risk_var, " * ", help_var))
  }
  f_model_2 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var
    ))
  }
  f_model_3 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var,
      " + ", risk_var, " * ", help_var,
      " + ", attitude_var
    ))
  }
  f_model_4 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var,
      " + ", attitude_var
    ))
  }

  formula_fns <- list(`1` = f_model_1, `2` = f_model_2, `3` = f_model_3, `4` = f_model_4)

  model_titles <- list(
    `1` = "Heroism + occupation as a covariate",
    `2` = "Heroism + occupation as a moderator",
    `3` = "Heroism + occupation and attitude as covariates)",
    `4` = "Heroism + occupation as a moderator + attitude as a covariate"
  )

  results <- list()

  for (y in outcomes) {

    level_label <- outcome_level(y)
    letter <- get_hyp_letter(y)

    cat("\n\n============================================================\n")
    cat("Outcome:", y, "  |  Level:", level_label, "\n")
    cat("============================================================\n")

    for (m in models_to_run) {

      if (!as.character(m) %in% names(formula_fns)) {
        warning("Unknown model number: ", m, " (skipping)")
        next
      }

      form <- formula_fns[[as.character(m)]](y)
      fit <- lm(form, data = data)

      results[[y]][[paste0("Model_", m)]] <- fit

      cat("\n------------------------------------------------------------\n")
      cat(model_titles[[as.character(m)]], "\n")
      cat("Formula: ", deparse(form), "\n", sep = "")
      cat("N used: ", nobs(fit), "\n", sep = "")

      # Hypothesis header (Risk=H3*, Help=H4*)
      if (!is.na(letter)) {
        cat("Hypotheses (this outcome):\n")
        cat(" - ", hypothesis_text$H3[[letter]], " [", level_label, "]\n", sep = "")
        cat(" - ", hypothesis_text$H4[[letter]], " [", level_label, "]\n", sep = "")
      } else {
        cat("Hypotheses: (no mapping found for this outcome name)\n")
      }

      cat("------------------------------------------------------------\n")

      # Print "validated" lines ONLY if p < alpha, using main effects Risk and Help
      # (These are the prereg H3* / H4* tests in the simplest reading.)
      if (!is.na(letter)) {
        expected_sign <- expected_sign_by_letter[[letter]]

        risk_stats <- get_term_stats(fit, risk_var)
        help_stats <- get_term_stats(fit, help_var)

        print_support_line_if_sig(
          stats = risk_stats,
          hyp_code = paste0("H3", letter),
          expected_sign = expected_sign,
          alpha = alpha
        )
        print_support_line_if_sig(
          stats = help_stats,
          hyp_code = paste0("H4", letter),
          expected_sign = expected_sign,
          alpha = alpha
        )
      }

      if (print_summaries) {
        print(summary(fit))
      }
    }
  }

  invisible(results)
}

# run it
make_prereg_effect_table <- function(
  data,
  outcomes,
  occupation_var = "Cond",
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude"
) {

  results_list <- list()
  row_index <- 1

  for (outcome_name in outcomes) {

    formula_without_attitude <- as.formula(
      paste0(outcome_name, " ~ ", risk_var, " * ", help_var, " + ", occupation_var)
    )

    formula_with_attitude <- as.formula(
      paste0(outcome_name, " ~ ", risk_var, " * ", help_var, " + ", occupation_var, " + ", attitude_var)
    )

    model_list <- list(
      "Without attitude" = lm(formula_without_attitude, data = data),
      "With attitude" = lm(formula_with_attitude, data = data)
    )

    for (model_label in names(model_list)) {

      fit <- model_list[[model_label]]
      coef_table <- summary(fit)$coefficients
      df_residual <- df.residual(fit)

      eta_table <- effectsize::eta_squared(fit, partial = TRUE)
      eta_table <- as.data.frame(eta_table)

      for (predictor_name in c(risk_var, help_var)) {

        if (predictor_name %in% rownames(coef_table)) {

          t_value <- coef_table[predictor_name, "t value"]
          p_value <- coef_table[predictor_name, "Pr(>|t|)"]
          partial_eta_sq_t <- t_value^2 / (t_value^2 + df_residual)

          partial_eta_sq_effectsize <- NA_real_

          if ("Parameter" %in% names(eta_table)) {
            matched_row <- eta_table[eta_table$Parameter == predictor_name, , drop = FALSE]
            if (nrow(matched_row) == 1) {
              partial_eta_sq_effectsize <- matched_row$Eta2_partial
            }
          }

          results_list[[row_index]] <- data.frame(
            Outcome = outcome_name,
            Predictor = if (predictor_name == risk_var) "Risk" else "Help",
            Model = model_label,
            t_value = t_value,
            p_value = p_value,
            partial_eta_sq_effectsize = partial_eta_sq_effectsize,
            stringsAsFactors = FALSE
          )

          row_index <- row_index + 1
        }
      }
    }
  }

  results_table <- do.call(rbind, results_list)

  results_table$t_value <- round(results_table$t_value, 3)
  results_table$p_value <- round(results_table$p_value, 3)
  results_table$partial_eta_sq_effectsize <- round(results_table$partial_eta_sq_effectsize, 3)

  rownames(results_table) <- NULL
  results_table
}

effect_table <- make_prereg_effect_table(
  data = scale_scores,
  outcomes = c(
    "GlobalGratitude",
    "criticism_items_G_mean", "criticism_items_S_mean",
    "DemandSupp_G_mean", "DemandSupp_S_mean",
    "GlobalVictim",
    "Villain_G_mean", "Villain_S_mean",
    "Endure_G_mean", "Endure_S_mean",
    "SelfExploit_G_mean", "SelfExploit_S_mean",
    "GlobalSupportExpl"
  )
)
effect_table_pretty <- effect_table |>
  mutate(
    p_value = ifelse(p_value < .001, "< .001", sprintf("%.3f", p_value)),
    t_value = sprintf("%.3f", t_value),
    partial_eta_sq_effectsize = sprintf("%.3f", partial_eta_sq_effectsize)
  )
library(dplyr)
library(tidyr)
library(gt)
library(knitr)
library(kableExtra)
kable(
  effect_table_pretty,
  format = "html",
  caption = "Effects of Risk and Help across outcomes",
  align = c("l", "l", "l", "r", "r", "r")
) |>
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "left"
  ) |>
  collapse_rows(columns = 1, valign = "top")
effect_table_wide <- effect_table |>
  mutate(
    p_value = ifelse(p_value < .001, "< .001", sprintf("%.3f", p_value)),
    t_value = sprintf("%.3f", t_value),
    partial_eta_sq_effectsize = sprintf("%.3f", partial_eta_sq_effectsize)
  ) |>
  pivot_wider(
    names_from = Model,
    values_from = c(t_value, p_value, partial_eta_sq_effectsize),
    names_vary = "slowest"
  ) |>
  rename(
    `t1` = `t_value_Without attitude`,
    `p1` = `p_value_Without attitude`,
    `η²p1` = `partial_eta_sq_effectsize_Without attitude`,
    `t2` = `t_value_With attitude`,
    `p2` = `p_value_With attitude`,
    `η²p2` = `partial_eta_sq_effectsize_With attitude`
  )

kable(
  effect_table_wide,
  format = "html",
  caption = "Summary main p-values",
  align = c("l", "l", "r", "r", "r", "r", "r", "r"),
  escape = TRUE
) |>
  add_header_above(c(" " = 2, "Without attitude" = 3, "With attitude" = 3)) |>
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE
  ) |>
  column_spec(5, border_right = TRUE) |>
  collapse_rows(columns = 1, valign = "top")
Summary main p-values
Without attitude
With attitude
Outcome Predictor t1 p1 η²p1 t2 p2 η²p2
GlobalGratitude Risk 2.696 0.007 0.006 0.954 0.340 0.010
Help 4.669 < .001 0.018 0.876 0.381 0.030
criticism_items_G_mean Risk -3.677 < .001 0.011 -2.425 0.015 0.015
Help -1.899 0.058 0.003 1.540 0.124 0.004
criticism_items_S_mean Risk 0.414 0.679 0.000 1.199 0.231 0.000
Help 0.017 0.987 0.000 1.575 0.116 0.000
DemandSupp_G_mean Risk 0.064 0.949 0.000 0.125 0.900 0.000
Help 0.014 0.989 0.000 0.137 0.891 0.000
DemandSupp_S_mean Risk 1.748 0.081 0.002 0.809 0.419 0.002
Help 0.127 0.899 0.000 -1.932 0.054 0.000
GlobalVictim Risk 6.701 < .001 0.035 5.965 < .001 0.040
Help -1.089 0.276 0.001 -3.555 < .001 0.002
Villain_G_mean Risk -0.006 0.995 0.000 -0.564 0.573 0.000
Help -0.523 0.601 0.000 -1.644 0.100 0.000
Villain_S_mean Risk 3.632 < .001 0.009 3.078 0.002 0.010
Help -0.075 0.940 0.000 -1.298 0.194 0.000
Endure_G_mean Risk 4.220 < .001 0.015 3.505 < .001 0.016
Help 1.096 0.273 0.001 -0.606 0.544 0.001
Endure_S_mean Risk 0.357 0.721 0.000 0.172 0.864 0.000
Help 0.660 0.510 0.001 0.279 0.780 0.001
SelfExploit_G_mean Risk 5.480 < .001 0.025 4.865 < .001 0.026
Help 2.691 0.007 0.006 1.211 0.226 0.007
SelfExploit_S_mean Risk 0.697 0.486 0.000 0.404 0.687 0.000
Help 3.303 0.001 0.009 2.672 0.008 0.009
GlobalSupportExpl Risk -2.269 0.023 0.004 -1.745 0.081 0.004
Help 1.202 0.230 0.001 2.305 0.021 0.001
Toggle details of each model (Warning: long output)
fits<-run_prereg_models(scale_scores)
## 
## 
## ============================================================
## Outcome: GlobalGratitude   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalGratitude ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.30112 -0.59313  0.03678  0.62718  2.10343 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.0002094  0.0241467   0.009  0.99308    
## Cond1               -0.0023042  0.0242079  -0.095  0.92419    
## Risk_cond            0.1302404  0.0483046   2.696  0.00711 ** 
## Help_cond            0.2255853  0.0483161   4.669 3.37e-06 ***
## Risk_cond:Help_cond -0.0774810  0.0967730  -0.801  0.42350    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8336 on 1187 degrees of freedom
## Multiple R-squared:  0.02417,    Adjusted R-squared:  0.02088 
## F-statistic:  7.35 on 4 and 1187 DF,  p-value: 7.582e-06
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.36223 -0.59019  0.01833  0.62010  2.03441 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.001740   0.024148   0.072   0.9426    
## Risk_cond            0.127882   0.048366   2.644   0.0083 ** 
## Help_cond            0.220581   0.048378   4.560 5.66e-06 ***
## Cond1               -0.002033   0.024193  -0.084   0.9331    
## Risk_cond:Help_cond -0.070552   0.096779  -0.729   0.4661    
## Risk_cond:Cond1     -0.082185   0.048389  -1.698   0.0897 .  
## Help_cond:Cond1     -0.041420   0.048388  -0.856   0.3922    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.833 on 1185 degrees of freedom
## Multiple R-squared:  0.02711,    Adjusted R-squared:  0.02218 
## F-statistic: 5.503 on 6 and 1185 DF,  p-value: 1.239e-05
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalGratitude ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.19080 -0.44096  0.05308  0.46112  2.35567 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.0003964  0.0186570  -0.021    0.983    
## Cond1                0.0238073  0.0187270   1.271    0.204    
## Risk_cond            0.0357576  0.0374714   0.954    0.340    
## Help_cond            0.0332298  0.0379442   0.876    0.381    
## Attitude             0.5398395  0.0190588  28.325   <2e-16 ***
## Risk_cond:Help_cond -0.1151371  0.0747837  -1.540    0.124    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6441 on 1186 degrees of freedom
## Multiple R-squared:  0.4179, Adjusted R-squared:  0.4155 
## F-statistic: 170.3 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond + Attitude
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.19613 -0.44109  0.05417  0.46448  2.35079 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.0003946  0.0186861  -0.021    0.983    
## Risk_cond            0.0354680  0.0375689   0.944    0.345    
## Help_cond            0.0335259  0.0380187   0.882    0.378    
## Cond1                0.0237827  0.0187431   1.269    0.205    
## Attitude             0.5399996  0.0191515  28.196   <2e-16 ***
## Risk_cond:Help_cond -0.1153202  0.0749054  -1.540    0.124    
## Risk_cond:Cond1      0.0054836  0.0375729   0.146    0.884    
## Help_cond:Cond1     -0.0039961  0.0374665  -0.107    0.915    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6446 on 1184 degrees of freedom
## Multiple R-squared:  0.4179, Adjusted R-squared:  0.4145 
## F-statistic: 121.5 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: criticism_items_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## ✅ H3d supported: β=-0.234, SE=0.064, t=-3.677, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9425 -0.7832 -0.0032  0.7463  4.2168 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.66934    0.03186  83.772  < 2e-16 ***
## Cond1                0.07631    0.03195   2.389 0.017058 *  
## Risk_cond           -0.23439    0.06374  -3.677 0.000247 ***
## Help_cond           -0.12105    0.06376  -1.899 0.057857 .  
## Risk_cond:Help_cond  0.07643    0.12770   0.599 0.549613    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.1 on 1187 degrees of freedom
## Multiple R-squared:  0.0184, Adjusted R-squared:  0.01509 
## F-statistic: 5.563 on 4 and 1187 DF,  p-value: 0.0001946
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## ✅ H3d supported: β=-0.232, SE=0.064, t=-3.625, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9105 -0.7983  0.0121  0.7202  4.2017 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.66851    0.03191  83.634  < 2e-16 ***
## Risk_cond           -0.23163    0.06391  -3.625 0.000302 ***
## Help_cond           -0.12040    0.06392  -1.884 0.059876 .  
## Cond1                0.07635    0.03197   2.388 0.017074 *  
## Risk_cond:Help_cond  0.07371    0.12788   0.576 0.564436    
## Risk_cond:Cond1      0.01256    0.06394   0.196 0.844261    
## Help_cond:Cond1      0.04501    0.06394   0.704 0.481610    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.101 on 1185 degrees of freedom
## Multiple R-squared:  0.01884,    Adjusted R-squared:  0.01387 
## F-statistic: 3.792 on 6 and 1185 DF,  p-value: 0.0009513
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: criticism_items_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## ✅ H3d supported: β=-0.133, SE=0.055, t=-2.425, p=.015
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5290 -0.6423 -0.0491  0.5721  5.1462 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.66999    0.02729  97.841   <2e-16 ***
## Cond1                0.04827    0.02739   1.762   0.0783 .  
## Risk_cond           -0.13293    0.05481  -2.425   0.0154 *  
## Help_cond            0.08550    0.05550   1.540   0.1237    
## Attitude            -0.57968    0.02788 -20.794   <2e-16 ***
## Risk_cond:Help_cond  0.11687    0.10938   1.068   0.2856    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9421 on 1186 degrees of freedom
## Multiple R-squared:  0.2807, Adjusted R-squared:  0.2776 
## F-statistic: 92.55 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## ✅ H3d supported: β=-0.132, SE=0.055, t=-2.402, p=.016
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4985 -0.6709 -0.0375  0.5734  5.1864 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.67081    0.02731  97.810   <2e-16 ***
## Risk_cond           -0.13185    0.05490  -2.402   0.0165 *  
## Help_cond            0.08156    0.05556   1.468   0.1423    
## Cond1                0.04848    0.02739   1.770   0.0770 .  
## Attitude            -0.58303    0.02799 -20.833   <2e-16 ***
## Risk_cond:Help_cond  0.12205    0.10946   1.115   0.2651    
## Risk_cond:Cond1     -0.08209    0.05491  -1.495   0.1351    
## Help_cond:Cond1      0.00460    0.05475   0.084   0.9331    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.942 on 1184 degrees of freedom
## Multiple R-squared:  0.282,  Adjusted R-squared:  0.2778 
## F-statistic: 66.44 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: criticism_items_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1191
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [specific (_S)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3565 -0.7485 -0.2263  0.6694  2.7628 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.2918609  0.0257267  89.085   <2e-16 ***
## Cond1                0.0494503  0.0257894   1.917   0.0554 .  
## Risk_cond            0.0213135  0.0514644   0.414   0.6788    
## Help_cond            0.0008514  0.0514764   0.017   0.9868    
## Risk_cond:Help_cond -0.0199516  0.1031002  -0.194   0.8466    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8877 on 1186 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.00335,    Adjusted R-squared:  -1.129e-05 
## F-statistic: 0.9966 on 4 and 1186 DF,  p-value: 0.4083
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond
## N used: 1191
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [specific (_S)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3858 -0.7508 -0.2246  0.6930  2.7291 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.292056   0.025758  88.985   <2e-16 ***
## Risk_cond            0.019178   0.051589   0.372   0.7101    
## Help_cond            0.002764   0.051602   0.054   0.9573    
## Cond1                0.049254   0.025804   1.909   0.0565 .  
## Risk_cond:Help_cond -0.020350   0.103226  -0.197   0.8438    
## Risk_cond:Cond1      0.029110   0.051613   0.564   0.5729    
## Help_cond:Cond1     -0.033314   0.051611  -0.645   0.5187    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8882 on 1184 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.003977,   Adjusted R-squared:  -0.001071 
## F-statistic: 0.7878 on 6 and 1184 DF,  p-value: 0.5795
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: criticism_items_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1191
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [specific (_S)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.20829 -0.65575 -0.08522  0.60028  3.05005 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.292163   0.024950  91.871   <2e-16 ***
## Cond1                0.038660   0.025041   1.544    0.123    
## Risk_cond            0.060084   0.050108   1.199    0.231    
## Help_cond            0.079892   0.050738   1.575    0.116    
## Attitude            -0.222115   0.025477  -8.718   <2e-16 ***
## Risk_cond:Help_cond -0.004258   0.100003  -0.043    0.966    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8609 on 1185 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.06342,    Adjusted R-squared:  0.05947 
## F-statistic: 16.05 on 5 and 1185 DF,  p-value: 2.486e-15
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond + Attitude
## N used: 1191
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [specific (_S)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2437 -0.6601 -0.1057  0.5981  3.0291 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.292971   0.024978  91.800   <2e-16 ***
## Risk_cond            0.057323   0.050217   1.142    0.254    
## Help_cond            0.080037   0.050817   1.575    0.116    
## Cond1                0.038551   0.025053   1.539    0.124    
## Attitude            -0.223256   0.025590  -8.724   <2e-16 ***
## Risk_cond:Help_cond -0.001720   0.100123  -0.017    0.986    
## Risk_cond:Cond1     -0.007075   0.050221  -0.141    0.888    
## Help_cond:Cond1     -0.048727   0.050079  -0.973    0.331    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8613 on 1183 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.06419,    Adjusted R-squared:  0.05865 
## F-statistic: 11.59 on 7 and 1183 DF,  p-value: 2.605e-14
## 
## 
## 
## ============================================================
## Outcome: DemandSupp_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [general (_G)]
##  - H4b: Helpfulness → support for workers' demands ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1920 -0.9312  0.0688  0.9635  3.2243 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.984409   0.040951  97.297  < 2e-16 ***
## Cond1                0.130382   0.041055   3.176  0.00153 ** 
## Risk_cond            0.005219   0.081921   0.064  0.94922    
## Help_cond            0.001122   0.081941   0.014  0.98908    
## Risk_cond:Help_cond -0.300512   0.164121  -1.831  0.06734 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.414 on 1187 degrees of freedom
## Multiple R-squared:  0.01186,    Adjusted R-squared:  0.00853 
## F-statistic: 3.562 on 4 and 1187 DF,  p-value: 0.006761
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [general (_G)]
##  - H4b: Helpfulness → support for workers' demands ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1967 -0.9412  0.0588  0.9731  3.2265 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.9841392  0.0410145  97.140  < 2e-16 ***
## Risk_cond            0.0063438  0.0821470   0.077  0.93846    
## Help_cond            0.0010175  0.0821684   0.012  0.99012    
## Cond1                0.1304235  0.0410907   3.174  0.00154 ** 
## Risk_cond:Help_cond -0.3012370  0.1643759  -1.833  0.06711 .  
## Risk_cond:Cond1     -0.0008511  0.0821874  -0.010  0.99174    
## Help_cond:Cond1      0.0181194  0.0821850   0.220  0.82554    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.415 on 1185 degrees of freedom
## Multiple R-squared:  0.0119, Adjusted R-squared:  0.006898 
## F-statistic: 2.379 on 6 and 1185 DF,  p-value: 0.02737
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: DemandSupp_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [general (_G)]
##  - H4b: Helpfulness → support for workers' demands ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2300 -0.9511  0.0291  0.9693  3.2711 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.98444    0.04096  97.276  < 2e-16 ***
## Cond1                0.12898    0.04111   3.137  0.00175 ** 
## Risk_cond            0.01029    0.08227   0.125  0.90046    
## Help_cond            0.01145    0.08330   0.137  0.89070    
## Attitude            -0.02899    0.04184  -0.693  0.48861    
## Risk_cond:Help_cond -0.29849    0.16418  -1.818  0.06931 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.414 on 1186 degrees of freedom
## Multiple R-squared:  0.01226,    Adjusted R-squared:  0.008095 
## F-statistic: 2.944 on 5 and 1186 DF,  p-value: 0.01198
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [general (_G)]
##  - H4b: Helpfulness → support for workers' demands ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2400 -0.9561  0.0293  0.9695  3.2664 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.984254   0.041024  97.120  < 2e-16 ***
## Risk_cond            0.011296   0.082480   0.137  0.89109    
## Help_cond            0.011041   0.083467   0.132  0.89478    
## Cond1                0.129040   0.041149   3.136  0.00176 ** 
## Attitude            -0.028937   0.042046  -0.688  0.49144    
## Risk_cond:Help_cond -0.298838   0.164449  -1.817  0.06944 .  
## Risk_cond:Cond1     -0.005549   0.082489  -0.067  0.94638    
## Help_cond:Cond1      0.016114   0.082255   0.196  0.84472    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.415 on 1184 degrees of freedom
## Multiple R-squared:  0.0123, Adjusted R-squared:  0.006456 
## F-statistic: 2.106 on 7 and 1184 DF,  p-value: 0.04034
## 
## 
## 
## ============================================================
## Outcome: DemandSupp_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [specific (_S)]
##  - H4b: Helpfulness → support for workers' demands ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2271 -0.7463  0.1360  0.8047  2.3047 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.982093   0.036292 137.278  < 2e-16 ***
## Cond1               -0.197811   0.036384  -5.437 6.58e-08 ***
## Risk_cond            0.126926   0.072601   1.748   0.0807 .  
## Help_cond            0.009214   0.072618   0.127   0.8991    
## Risk_cond:Help_cond -0.083586   0.145448  -0.575   0.5656    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.253 on 1187 degrees of freedom
## Multiple R-squared:  0.02648,    Adjusted R-squared:  0.02319 
## F-statistic:  8.07 on 4 and 1187 DF,  p-value: 2.027e-06
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [specific (_S)]
##  - H4b: Helpfulness → support for workers' demands ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3130 -0.7200  0.1005  0.7886  2.2886 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.984535   0.036298 137.323  < 2e-16 ***
## Risk_cond            0.119358   0.072700   1.642   0.1009    
## Help_cond            0.006526   0.072719   0.090   0.9285    
## Cond1               -0.197859   0.036365  -5.441 6.44e-08 ***
## Risk_cond:Help_cond -0.075194   0.145473  -0.517   0.6053    
## Risk_cond:Cond1     -0.048826   0.072736  -0.671   0.5022    
## Help_cond:Cond1     -0.124121   0.072734  -1.707   0.0882 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.252 on 1185 degrees of freedom
## Multiple R-squared:  0.02921,    Adjusted R-squared:  0.02429 
## F-statistic: 5.942 on 6 and 1185 DF,  p-value: 3.969e-06
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: DemandSupp_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [specific (_S)]
##  - H4b: Helpfulness → support for workers' demands ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6665 -0.5927  0.0743  0.8335  2.6518 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.98164    0.03443 144.695  < 2e-16 ***
## Cond1               -0.17819    0.03456  -5.156 2.95e-07 ***
## Risk_cond            0.05595    0.06915   0.809   0.4186    
## Help_cond           -0.13529    0.07002  -1.932   0.0536 .  
## Attitude             0.40555    0.03517  11.531  < 2e-16 ***
## Risk_cond:Help_cond -0.11188    0.13800  -0.811   0.4177    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.189 on 1186 degrees of freedom
## Multiple R-squared:  0.1246, Adjusted R-squared:  0.1209 
## F-statistic: 33.77 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [specific (_S)]
##  - H4b: Helpfulness → support for workers' demands ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7261 -0.5758  0.0920  0.7907  2.5975 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.98294    0.03445 144.627  < 2e-16 ***
## Risk_cond            0.05012    0.06927   0.724   0.4695    
## Help_cond           -0.13362    0.07010  -1.906   0.0569 .  
## Cond1               -0.17852    0.03456  -5.166 2.81e-07 ***
## Attitude             0.40458    0.03531  11.457  < 2e-16 ***
## Risk_cond:Help_cond -0.10874    0.13811  -0.787   0.4313    
## Risk_cond:Cond1      0.01686    0.06928   0.243   0.8078    
## Help_cond:Cond1     -0.09608    0.06908  -1.391   0.1645    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.189 on 1184 degrees of freedom
## Multiple R-squared:  0.1261, Adjusted R-squared:  0.1209 
## F-statistic: 24.41 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: GlobalVictim   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalVictim ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.44446 -0.53092 -0.00233  0.52292  2.56463 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.0007449  0.0230606  -0.032    0.974    
## Cond1               -0.1447419  0.0231191  -6.261 5.35e-10 ***
## Risk_cond            0.3091352  0.0461321   6.701 3.19e-11 ***
## Help_cond           -0.0502585  0.0461431  -1.089    0.276    
## Risk_cond:Help_cond -0.0966867  0.0924206  -1.046    0.296    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7961 on 1187 degrees of freedom
## Multiple R-squared:  0.06658,    Adjusted R-squared:  0.06343 
## F-statistic: 21.17 on 4 and 1187 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: GlobalVictim ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.41368 -0.52475 -0.01441  0.49911  2.59350 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.001706   0.023072  -0.074    0.941    
## Risk_cond            0.309636   0.046211   6.701 3.20e-11 ***
## Help_cond           -0.045752   0.046223  -0.990    0.322    
## Cond1               -0.145036   0.023115  -6.275 4.91e-10 ***
## Risk_cond:Help_cond -0.101724   0.092468  -1.100    0.272    
## Risk_cond:Cond1      0.072807   0.046233   1.575    0.116    
## Help_cond:Cond1      0.011061   0.046232   0.239    0.811    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7959 on 1185 degrees of freedom
## Multiple R-squared:  0.06856,    Adjusted R-squared:  0.06385 
## F-statistic: 14.54 on 6 and 1185 DF,  p-value: 4.592e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalVictim ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.31638 -0.47580  0.01706  0.48309  2.40265 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.001076   0.021492  -0.050 0.960077    
## Cond1               -0.130469   0.021572  -6.048 1.96e-09 ***
## Risk_cond            0.257491   0.043165   5.965 3.22e-09 ***
## Help_cond           -0.155400   0.043709  -3.555 0.000392 ***
## Attitude             0.295075   0.021954  13.440  < 2e-16 ***
## Risk_cond:Help_cond -0.117269   0.086146  -1.361 0.173682    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7419 on 1186 degrees of freedom
## Multiple R-squared:   0.19,  Adjusted R-squared:  0.1865 
## F-statistic: 55.62 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: GlobalVictim ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond + Attitude
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.36183 -0.49221  0.00904  0.46609  2.32559 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.002895   0.021449  -0.135 0.892675    
## Risk_cond            0.258170   0.043124   5.987 2.84e-09 ***
## Help_cond           -0.149925   0.043640  -3.435 0.000612 ***
## Cond1               -0.130660   0.021515  -6.073 1.69e-09 ***
## Attitude             0.300729   0.021983  13.680  < 2e-16 ***
## Risk_cond:Help_cond -0.126656   0.085982  -1.473 0.141002    
## Risk_cond:Cond1      0.121630   0.043129   2.820 0.004880 ** 
## Help_cond:Cond1      0.031903   0.043007   0.742 0.458353    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7399 on 1184 degrees of freedom
## Multiple R-squared:  0.1957, Adjusted R-squared:  0.1909 
## F-statistic: 41.15 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: Villain_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [general (_G)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0202 -0.8080  0.0188  0.9043  3.3129 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.8534028  0.0367392 104.885  < 2e-16 ***
## Cond1                0.1288977  0.0368324   3.500 0.000483 ***
## Risk_cond           -0.0004371  0.0734957  -0.006 0.995256    
## Help_cond           -0.0384674  0.0735132  -0.523 0.600883    
## Risk_cond:Help_cond  0.0736009  0.1472405   0.500 0.617261    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.268 on 1187 degrees of freedom
## Multiple R-squared:  0.01042,    Adjusted R-squared:  0.00709 
## F-statistic: 3.126 on 4 and 1187 DF,  p-value: 0.01431
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [general (_G)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0550 -0.7905  0.0511  0.9067  3.2655 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.854543   0.036765 104.844  < 2e-16 ***
## Risk_cond           -0.006678   0.073635  -0.091 0.927757    
## Help_cond           -0.035955   0.073654  -0.488 0.625531    
## Cond1                0.128532   0.036833   3.490 0.000502 ***
## Risk_cond:Help_cond  0.075624   0.147344   0.513 0.607875    
## Risk_cond:Cond1      0.035769   0.073672   0.486 0.627396    
## Help_cond:Cond1     -0.099248   0.073669  -1.347 0.178172    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.268 on 1185 degrees of freedom
## Multiple R-squared:  0.01215,    Adjusted R-squared:  0.007146 
## F-statistic: 2.429 on 6 and 1185 DF,  p-value: 0.02445
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Villain_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [general (_G)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3465 -0.8157  0.0812  0.8552  3.4522 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.85314    0.03616 106.554  < 2e-16 ***
## Cond1                0.14009    0.03630   3.860  0.00012 ***
## Risk_cond           -0.04093    0.07263  -0.564  0.57312    
## Help_cond           -0.12092    0.07354  -1.644  0.10042    
## Attitude             0.23139    0.03694   6.264 5.24e-10 ***
## Risk_cond:Help_cond  0.05746    0.14495   0.396  0.69186    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.248 on 1186 degrees of freedom
## Multiple R-squared:  0.04211,    Adjusted R-squared:  0.03807 
## F-statistic: 10.43 on 5 and 1186 DF,  p-value: 8.278e-10
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [general (_G)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4226 -0.8523  0.0803  0.8610  3.3686 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.85362    0.03618 106.506  < 2e-16 ***
## Risk_cond           -0.04656    0.07275  -0.640 0.522303    
## Help_cond           -0.11667    0.07362  -1.585 0.113260    
## Cond1                0.13967    0.03629   3.849 0.000125 ***
## Attitude             0.23302    0.03708   6.284 4.64e-10 ***
## Risk_cond:Help_cond  0.05631    0.14504   0.388 0.697936    
## Risk_cond:Cond1      0.07360    0.07275   1.012 0.311917    
## Help_cond:Cond1     -0.08310    0.07255  -1.145 0.252257    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.248 on 1184 degrees of freedom
## Multiple R-squared:  0.04403,    Adjusted R-squared:  0.03838 
## F-statistic:  7.79 on 7 and 1184 DF,  p-value: 3.056e-09
## 
## 
## 
## ============================================================
## Outcome: Villain_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H3e supported: β=0.323, SE=0.089, t=3.632, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7178 -0.9619  0.2822  1.2240  2.6880 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.040677   0.044492 113.293  < 2e-16 ***
## Cond1               -0.544592   0.044605 -12.209  < 2e-16 ***
## Risk_cond            0.323259   0.089005   3.632 0.000293 ***
## Help_cond           -0.006686   0.089027  -0.075 0.940145    
## Risk_cond:Help_cond -0.103190   0.178312  -0.579 0.562900    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.536 on 1187 degrees of freedom
## Multiple R-squared:  0.1192, Adjusted R-squared:  0.1162 
## F-statistic: 40.17 on 4 and 1187 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H3e supported: β=0.322, SE=0.089, t=3.618, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6457 -0.9097  0.3028  1.2984  2.7702 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.039115   0.044507 113.221  < 2e-16 ***
## Risk_cond            0.322486   0.089142   3.618  0.00031 ***
## Help_cond            0.002850   0.089165   0.032  0.97451    
## Cond1               -0.545272   0.044590 -12.229  < 2e-16 ***
## Risk_cond:Help_cond -0.112491   0.178372  -0.631  0.52839    
## Risk_cond:Cond1      0.152714   0.089185   1.712  0.08710 .  
## Help_cond:Cond1     -0.006226   0.089183  -0.070  0.94436    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.535 on 1185 degrees of freedom
## Multiple R-squared:  0.1214, Adjusted R-squared:  0.1169 
## F-statistic: 27.29 on 6 and 1185 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Villain_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H3e supported: β=0.270, SE=0.088, t=3.078, p=.002
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.0480 -0.9158  0.2409  1.0786  3.6107 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.04034    0.04366 115.446  < 2e-16 ***
## Cond1               -0.52985    0.04382 -12.091  < 2e-16 ***
## Risk_cond            0.26991    0.08769   3.078  0.00213 ** 
## Help_cond           -0.11530    0.08879  -1.298  0.19438    
## Attitude             0.30481    0.04460   6.834 1.31e-11 ***
## Risk_cond:Help_cond -0.12445    0.17500  -0.711  0.47714    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.507 on 1186 degrees of freedom
## Multiple R-squared:  0.1526, Adjusted R-squared:  0.149 
## F-statistic: 42.71 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H3e supported: β=0.269, SE=0.088, t=3.065, p=.002
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.9496 -0.9578  0.2554  1.0504  3.7601 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.03788    0.04363 115.471  < 2e-16 ***
## Risk_cond            0.26881    0.08772   3.065  0.00223 ** 
## Help_cond           -0.10579    0.08877  -1.192  0.23361    
## Cond1               -0.53028    0.04376 -12.117  < 2e-16 ***
## Attitude             0.31362    0.04472   7.014  3.9e-12 ***
## Risk_cond:Help_cond -0.13849    0.17489  -0.792  0.42860    
## Risk_cond:Cond1      0.20363    0.08773   2.321  0.02045 *  
## Help_cond:Cond1      0.01551    0.08748   0.177  0.85931    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.505 on 1184 degrees of freedom
## Multiple R-squared:  0.1564, Adjusted R-squared:  0.1515 
## F-statistic: 31.37 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: Endure_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [general (_G)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3f supported: β=0.295, SE=0.070, t=4.220, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2523 -0.6994  0.0846  0.8346  3.1190 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.01030    0.03492 114.843  < 2e-16 ***
## Cond1               -0.04345    0.03501  -1.241    0.215    
## Risk_cond            0.29481    0.06986   4.220 2.63e-05 ***
## Help_cond            0.07657    0.06987   1.096    0.273    
## Risk_cond:Help_cond  0.05160    0.13995   0.369    0.712    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.205 on 1187 degrees of freedom
## Multiple R-squared:  0.01684,    Adjusted R-squared:  0.01353 
## F-statistic: 5.083 on 4 and 1187 DF,  p-value: 0.0004612
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [general (_G)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3f supported: β=0.285, SE=0.070, t=4.079, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3236 -0.7665  0.1078  0.8578  3.1821 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.01255    0.03490 114.969  < 2e-16 ***
## Risk_cond            0.28514    0.06990   4.079 4.82e-05 ***
## Help_cond            0.07781    0.06992   1.113   0.2660    
## Cond1               -0.04384    0.03497  -1.254   0.2102    
## Risk_cond:Help_cond  0.05748    0.13987   0.411   0.6812    
## Risk_cond:Cond1      0.01282    0.06994   0.183   0.8546    
## Help_cond:Cond1     -0.15552    0.06993  -2.224   0.0263 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.204 on 1185 degrees of freedom
## Multiple R-squared:  0.02096,    Adjusted R-squared:  0.016 
## F-statistic: 4.229 on 6 and 1185 DF,  p-value: 0.0003208
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Endure_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [general (_G)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3f supported: β=0.237, SE=0.068, t=3.505, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6385 -0.6714  0.0829  0.7586  2.8980 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.00993    0.03364 119.196  < 2e-16 ***
## Cond1               -0.02743    0.03377  -0.812 0.416774    
## Risk_cond            0.23683    0.06757   3.505 0.000473 ***
## Help_cond           -0.04148    0.06842  -0.606 0.544455    
## Attitude             0.33129    0.03437   9.640  < 2e-16 ***
## Risk_cond:Help_cond  0.02850    0.13485   0.211 0.832675    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.161 on 1186 degrees of freedom
## Multiple R-squared:  0.08828,    Adjusted R-squared:  0.08444 
## F-statistic: 22.97 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [general (_G)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3f supported: β=0.228, SE=0.068, t=3.378, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6451 -0.6540  0.1012  0.7816  2.9265 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.01124    0.03362 119.294  < 2e-16 ***
## Risk_cond            0.22836    0.06760   3.378 0.000754 ***
## Help_cond           -0.03712    0.06841  -0.543 0.587541    
## Cond1               -0.02798    0.03373  -0.830 0.406984    
## Attitude             0.33177    0.03446   9.627  < 2e-16 ***
## Risk_cond:Help_cond  0.02998    0.13479   0.222 0.824037    
## Risk_cond:Cond1      0.06668    0.06761   0.986 0.324217    
## Help_cond:Cond1     -0.13253    0.06742  -1.966 0.049560 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.16 on 1184 degrees of freedom
## Multiple R-squared:  0.09204,    Adjusted R-squared:  0.08667 
## F-statistic: 17.15 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: Endure_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [specific (_S)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8793 -0.9046 -0.2966  0.7341  3.5954 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.61686    0.03804  95.089  < 2e-16 ***
## Cond1                0.21933    0.03813   5.752 1.12e-08 ***
## Risk_cond            0.02717    0.07609   0.357    0.721    
## Help_cond            0.05020    0.07611   0.660    0.510    
## Risk_cond:Help_cond -0.12643    0.15244  -0.829    0.407    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.313 on 1187 degrees of freedom
## Multiple R-squared:  0.02897,    Adjusted R-squared:  0.0257 
## F-statistic: 8.854 on 4 and 1187 DF,  p-value: 4.806e-07
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [specific (_S)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9032 -0.9130 -0.2986  0.7138  3.5777 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.617220   0.038091  94.963  < 2e-16 ***
## Risk_cond            0.027748   0.076291   0.364    0.716    
## Help_cond            0.047460   0.076311   0.622    0.534    
## Cond1                0.219532   0.038162   5.753 1.12e-08 ***
## Risk_cond:Help_cond -0.124018   0.152658  -0.812    0.417    
## Risk_cond:Cond1     -0.043617   0.076329  -0.571    0.568    
## Help_cond:Cond1      0.007498   0.076326   0.098    0.922    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.314 on 1185 degrees of freedom
## Multiple R-squared:  0.02925,    Adjusted R-squared:  0.02433 
## F-statistic: 5.951 on 6 and 1185 DF,  p-value: 3.877e-06
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Endure_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [specific (_S)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9911 -0.9150 -0.2285  0.7905  3.5845 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.61677    0.03798  95.218  < 2e-16 ***
## Cond1                0.22322    0.03813   5.855 6.18e-09 ***
## Risk_cond            0.01310    0.07629   0.172   0.8637    
## Help_cond            0.02155    0.07725   0.279   0.7803    
## Attitude             0.08041    0.03880   2.072   0.0385 *  
## Risk_cond:Help_cond -0.13204    0.15225  -0.867   0.3860    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.311 on 1186 degrees of freedom
## Multiple R-squared:  0.03248,    Adjusted R-squared:  0.0284 
## F-statistic: 7.962 on 5 and 1186 DF,  p-value: 2.159e-07
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond +     Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3f: Risk → belief they'd choose suffering for duty ↑ [specific (_S)]
##  - H4f: Helpfulness → belief they'd choose suffering for duty ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0100 -0.9240 -0.2217  0.7975  3.5760 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.61691    0.03804  95.080  < 2e-16 ***
## Risk_cond            0.01417    0.07648   0.185   0.8531    
## Help_cond            0.01997    0.07740   0.258   0.7964    
## Cond1                0.22333    0.03816   5.853 6.25e-09 ***
## Attitude             0.07935    0.03899   2.035   0.0421 *  
## Risk_cond:Help_cond -0.13060    0.15249  -0.856   0.3919    
## Risk_cond:Cond1     -0.03074    0.07649  -0.402   0.6879    
## Help_cond:Cond1      0.01300    0.07627   0.170   0.8647    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.312 on 1184 degrees of freedom
## Multiple R-squared:  0.03263,    Adjusted R-squared:  0.02691 
## F-statistic: 5.706 on 7 and 1184 DF,  p-value: 1.665e-06
## 
## 
## 
## ============================================================
## Outcome: SelfExploit_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [general (_G)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3g supported: β=0.381, SE=0.070, t=5.480, p=<.001
## ✅ H4g supported: β=0.187, SE=0.070, t=2.691, p=.007
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5524 -0.6250  0.1040  0.7661  3.0161 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.25557    0.03478 122.357  < 2e-16 ***
## Cond1                0.03630    0.03487   1.041  0.29810    
## Risk_cond            0.38125    0.06958   5.480  5.2e-08 ***
## Help_cond            0.18727    0.06959   2.691  0.00722 ** 
## Risk_cond:Help_cond  0.19539    0.13939   1.402  0.16124    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.201 on 1187 degrees of freedom
## Multiple R-squared:  0.03274,    Adjusted R-squared:  0.02949 
## F-statistic: 10.05 on 4 and 1187 DF,  p-value: 5.358e-08
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [general (_G)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3g supported: β=0.369, SE=0.070, t=5.302, p=<.001
## ✅ H4g supported: β=0.188, SE=0.070, t=2.698, p=.007
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6566 -0.6566  0.0881  0.8277  3.1086 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.258775   0.034707 122.705  < 2e-16 ***
## Risk_cond            0.368563   0.069515   5.302 1.37e-07 ***
## Help_cond            0.187593   0.069533   2.698  0.00708 ** 
## Cond1                0.035883   0.034772   1.032  0.30231    
## Risk_cond:Help_cond  0.204461   0.139099   1.470  0.14186    
## Risk_cond:Cond1     -0.004218   0.069549  -0.061  0.95165    
## Help_cond:Cond1     -0.204909   0.069547  -2.946  0.00328 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.197 on 1185 degrees of freedom
## Multiple R-squared:  0.03978,    Adjusted R-squared:  0.03492 
## F-statistic: 8.182 on 6 and 1185 DF,  p-value: 1.086e-08
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SelfExploit_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [general (_G)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3g supported: β=0.330, SE=0.068, t=4.865, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7990 -0.6218  0.1323  0.7547  3.1024 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.25525    0.03379 125.934  < 2e-16 ***
## Cond1                0.05042    0.03392   1.487    0.137    
## Risk_cond            0.33013    0.06786   4.865  1.3e-06 ***
## Help_cond            0.08319    0.06872   1.211    0.226    
## Attitude             0.29209    0.03452   8.462  < 2e-16 ***
## Risk_cond:Help_cond  0.17502    0.13544   1.292    0.197    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.166 on 1186 degrees of freedom
## Multiple R-squared:  0.08782,    Adjusted R-squared:  0.08397 
## F-statistic: 22.84 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [general (_G)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [general (_G)]
## ------------------------------------------------------------
## ✅ H3g supported: β=0.319, SE=0.068, t=4.701, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9037 -0.6292  0.1434  0.7287  2.9787 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.25763    0.03373 126.227  < 2e-16 ***
## Risk_cond            0.31882    0.06782   4.701 2.89e-06 ***
## Help_cond            0.08691    0.06863   1.266  0.20563    
## Cond1                0.04978    0.03383   1.471  0.14147    
## Attitude             0.29066    0.03457   8.408  < 2e-16 ***
## Risk_cond:Help_cond  0.18036    0.13521   1.334  0.18248    
## Risk_cond:Cond1      0.04297    0.06782   0.634  0.52648    
## Help_cond:Cond1     -0.18476    0.06763  -2.732  0.00639 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.164 on 1184 degrees of freedom
## Multiple R-squared:  0.09388,    Adjusted R-squared:  0.08852 
## F-statistic: 17.52 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: SelfExploit_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [specific (_S)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H4g supported: β=0.247, SE=0.075, t=3.303, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6905 -1.0448 -0.3436  0.8416  4.7028 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         2.460987   0.037328  65.928  < 2e-16 ***
## Cond1               0.006823   0.037423   0.182 0.855368    
## Risk_cond           0.052076   0.074674   0.697 0.485705    
## Help_cond           0.246700   0.074692   3.303 0.000985 ***
## Risk_cond:Help_cond 0.293379   0.149601   1.961 0.050103 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.289 on 1187 degrees of freedom
## Multiple R-squared:  0.01272,    Adjusted R-squared:  0.009392 
## F-statistic: 3.823 on 4 and 1187 DF,  p-value: 0.00429
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [specific (_S)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H4g supported: β=0.240, SE=0.075, t=3.213, p=.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7586 -1.0919 -0.3045  0.8212  4.7230 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.463057   0.037346  65.952  < 2e-16 ***
## Risk_cond            0.048563   0.074800   0.649  0.51631    
## Help_cond            0.240380   0.074819   3.213  0.00135 ** 
## Cond1                0.007149   0.037416   0.191  0.84850    
## Risk_cond:Help_cond  0.302526   0.149674   2.021  0.04348 *  
## Risk_cond:Cond1     -0.104197   0.074836  -1.392  0.16408    
## Help_cond:Cond1     -0.060950   0.074834  -0.814  0.41554    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.288 on 1185 degrees of freedom
## Multiple R-squared:  0.01486,    Adjusted R-squared:  0.009871 
## F-statistic: 2.979 on 6 and 1185 DF,  p-value: 0.006835
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SelfExploit_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [specific (_S)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H4g supported: β=0.202, SE=0.076, t=2.672, p=.008
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8385 -1.0530 -0.2675  0.8458  4.5059 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.46085    0.03717  66.199  < 2e-16 ***
## Cond1                0.01289    0.03731   0.345 0.729903    
## Risk_cond            0.03014    0.07466   0.404 0.686536    
## Help_cond            0.20204    0.07560   2.672 0.007635 ** 
## Attitude             0.12535    0.03797   3.301 0.000993 ***
## Risk_cond:Help_cond  0.28464    0.14900   1.910 0.056342 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.283 on 1186 degrees of freedom
## Multiple R-squared:  0.02171,    Adjusted R-squared:  0.01758 
## F-statistic: 5.263 on 5 and 1186 DF,  p-value: 8.687e-05
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond + Attitude
## N used: 1192
## Hypotheses (this outcome):
##  - H3g: Risk → belief they'd accept exploitation if required ↑ [specific (_S)]
##  - H4g: Helpfulness → belief they'd accept exploitation if required ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H4g supported: β=0.199, SE=0.076, t=2.622, p=.009
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8757 -1.0945 -0.2831  0.8310  4.5278 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.46258    0.03720  66.190  < 2e-16 ***
## Risk_cond            0.02788    0.07480   0.373  0.70947    
## Help_cond            0.19851    0.07570   2.622  0.00884 ** 
## Cond1                0.01293    0.03732   0.346  0.72908    
## Attitude             0.12088    0.03813   3.170  0.00156 ** 
## Risk_cond:Help_cond  0.29250    0.14914   1.961  0.05008 .  
## Risk_cond:Cond1     -0.08457    0.07481  -1.131  0.25849    
## Help_cond:Cond1     -0.05257    0.07460  -0.705  0.48111    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.283 on 1184 degrees of freedom
## Multiple R-squared:  0.02315,    Adjusted R-squared:  0.01738 
## F-statistic: 4.009 on 7 and 1184 DF,  p-value: 0.0002399
## 
## 
## 
## ============================================================
## Outcome: GlobalSupportExpl   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalSupportExpl ~ Cond + Risk_cond * Help_cond
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2493 -0.6761 -0.1213  0.5148  3.9355 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)  
## (Intercept)          0.0004483  0.0243377   0.018   0.9853  
## Cond1                0.0474236  0.0243995   1.944   0.0522 .
## Risk_cond           -0.1104554  0.0486869  -2.269   0.0235 *
## Help_cond            0.0585225  0.0486985   1.202   0.2297  
## Risk_cond:Help_cond  0.0453346  0.0975388   0.465   0.6422  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8402 on 1187 degrees of freedom
## Multiple R-squared:  0.008793,   Adjusted R-squared:  0.005453 
## F-statistic: 2.633 on 4 and 1187 DF,  p-value: 0.0329
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2536 -0.6678 -0.1234  0.5094  3.9311 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)  
## (Intercept)          0.001251   0.024367   0.051   0.9591  
## Risk_cond           -0.112023   0.048805  -2.295   0.0219 *
## Help_cond            0.056360   0.048818   1.155   0.2485  
## Cond1                0.047524   0.024413   1.947   0.0518 .
## Risk_cond:Help_cond  0.048735   0.097658   0.499   0.6178  
## Risk_cond:Cond1     -0.035916   0.048829  -0.736   0.4621  
## Help_cond:Cond1     -0.026764   0.048827  -0.548   0.5837  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8406 on 1185 degrees of freedom
## Multiple R-squared:  0.009488,   Adjusted R-squared:  0.004473 
## F-statistic: 1.892 on 6 and 1185 DF,  p-value: 0.07908
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalSupportExpl ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6708 -0.6354 -0.1146  0.5112  3.2864 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.0006179  0.0239663   0.026   0.9794    
## Cond1                0.0401160  0.0240562   1.668   0.0957 .  
## Risk_cond           -0.0840130  0.0481349  -1.745   0.0812 .  
## Help_cond            0.1123559  0.0487422   2.305   0.0213 *  
## Attitude            -0.1510817  0.0244824  -6.171  9.3e-10 ***
## Risk_cond:Help_cond  0.0558732  0.0960653   0.582   0.5609    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8274 on 1186 degrees of freedom
## Multiple R-squared:  0.03963,    Adjusted R-squared:  0.03558 
## F-statistic: 9.788 on 5 and 1186 DF,  p-value: 3.521e-09
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond + Attitude
## N used: 1192
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7354 -0.6361 -0.1270  0.5032  3.2615 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.00186    0.02398   0.078   0.9382    
## Risk_cond           -0.08562    0.04822  -1.776   0.0760 .  
## Help_cond            0.10981    0.04879   2.250   0.0246 *  
## Cond1                0.04015    0.02405   1.669   0.0954 .  
## Attitude            -0.15429    0.02458  -6.277 4.83e-10 ***
## Risk_cond:Help_cond  0.06153    0.09613   0.640   0.5223    
## Risk_cond:Cond1     -0.06096    0.04822  -1.264   0.2064    
## Help_cond:Cond1     -0.03746    0.04809  -0.779   0.4361    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8273 on 1184 degrees of freedom
## Multiple R-squared:  0.04139,    Adjusted R-squared:  0.03572 
## F-statistic: 7.303 on 7 and 1184 DF,  p-value: 1.346e-08

We can also compare models including attitudes to models not including attitudes – following our registration. This will help us quantify the extent to which attitude contributes to our outcome above and beyond the manipulations:

cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: GRATITUDE GLOBAL")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: GRATITUDE GLOBAL
anova(fits$GlobalGratitude$Model_1, fits$GlobalGratitude$Model_3)
## Analysis of Variance Table
## 
## Model 1: GlobalGratitude ~ Cond + Risk_cond * Help_cond
## Model 2: GlobalGratitude ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 824.80                                  
## 2   1186 491.98  1    332.82 802.31 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$GlobalGratitude$Model_2, fits$GlobalGratitude$Model_4)
## Analysis of Variance Table
## 
## Model 1: GlobalGratitude ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond
## Model 2: GlobalGratitude ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 822.31                                  
## 2   1184 491.97  1    330.35 795.03 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: criticism_items_G_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: criticism_items_G_mean
anova(fits$criticism_items_G_mean$Model_1, fits$criticism_items_G_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: criticism_items_G_mean ~ Cond + Risk_cond * Help_cond
## Model 2: criticism_items_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq     F    Pr(>F)    
## 1   1187 1436.3                                 
## 2   1186 1052.5  1    383.75 432.4 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$criticism_items_G_mean$Model_2, fits$criticism_items_G_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: criticism_items_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond
## Model 2: criticism_items_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 1435.7                                  
## 2   1184 1050.5  1     385.1 434.02 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: criticism_items_S_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: criticism_items_S_mean
anova(fits$criticism_items_S_mean$Model_1, fits$criticism_items_S_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: criticism_items_S_mean ~ Cond + Risk_cond * Help_cond
## Model 2: criticism_items_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1186 934.68                                  
## 2   1185 878.34  1    56.338 76.008 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$criticism_items_S_mean$Model_2, fits$criticism_items_S_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: criticism_items_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond
## Model 2: criticism_items_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1184 934.09                                  
## 2   1183 877.62  1    56.465 76.112 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: DemandSupp_G_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: DemandSupp_G_mean
anova(fits$DemandSupp_G_mean$Model_1, fits$DemandSupp_G_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: DemandSupp_G_mean ~ Cond + Risk_cond * Help_cond
## Model 2: DemandSupp_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1   1187 2372.3                           
## 2   1186 2371.3  1   0.95951 0.4799 0.4886
anova(fits$DemandSupp_G_mean$Model_2, fits$DemandSupp_G_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: DemandSupp_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond
## Model 2: DemandSupp_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1   1185 2372.2                           
## 2   1184 2371.2  1   0.94863 0.4737 0.4914
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: DemandSupp_S_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: DemandSupp_S_mean
anova(fits$DemandSupp_S_mean$Model_1, fits$DemandSupp_S_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: DemandSupp_S_mean ~ Cond + Risk_cond * Help_cond
## Model 2: DemandSupp_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 1863.2                                  
## 2   1186 1675.4  1    187.83 132.97 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$DemandSupp_S_mean$Model_2, fits$DemandSupp_S_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: DemandSupp_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond
## Model 2: DemandSupp_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 1858.0                                  
## 2   1184 1672.5  1    185.44 131.27 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: GlobalVictim")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: GlobalVictim
anova(fits$GlobalVictim$Model_1, fits$GlobalVictim$Model_3)
## Analysis of Variance Table
## 
## Model 1: GlobalVictim ~ Cond + Risk_cond * Help_cond
## Model 2: GlobalVictim ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 752.28                                  
## 2   1186 652.84  1    99.435 180.64 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$GlobalVictim$Model_2, fits$GlobalVictim$Model_4)
## Analysis of Variance Table
## 
## Model 1: GlobalVictim ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond
## Model 2: GlobalVictim ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 750.67                                  
## 2   1184 648.22  1    102.45 187.14 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Villain_G_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Villain_G_mean
anova(fits$Villain_G_mean$Model_1, fits$Villain_G_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: Villain_G_mean ~ Cond + Risk_cond * Help_cond
## Model 2: Villain_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 1909.4                                  
## 2   1186 1848.2  1    61.144 39.235 5.244e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$Villain_G_mean$Model_2, fits$Villain_G_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: Villain_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond
## Model 2: Villain_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 1906.1                                  
## 2   1184 1844.5  1    61.514 39.485 4.636e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Villain_S_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Villain_S_mean
anova(fits$Villain_S_mean$Model_1, fits$Villain_S_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: Villain_S_mean ~ Cond + Risk_cond * Help_cond
## Model 2: Villain_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 2800.3                                  
## 2   1186 2694.2  1     106.1 46.708 1.314e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$Villain_S_mean$Model_2, fits$Villain_S_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: Villain_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond
## Model 2: Villain_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond + Attitude
##   Res.Df    RSS Df Sum of Sq     F    Pr(>F)    
## 1   1185 2793.4                                 
## 2   1184 2681.9  1    111.42 49.19 3.897e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Endure_G_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Endure_G_mean
anova(fits$Endure_G_mean$Model_1, fits$Endure_G_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: Endure_G_mean ~ Cond + Risk_cond * Help_cond
## Model 2: Endure_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 1725.0                                  
## 2   1186 1599.6  1    125.34 92.932 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$Endure_G_mean$Model_2, fits$Endure_G_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: Endure_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond
## Model 2: Endure_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 1717.7                                  
## 2   1184 1593.0  1     124.7 92.682 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Endure_S_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: Endure_S_mean
anova(fits$Endure_S_mean$Model_1, fits$Endure_S_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: Endure_S_mean ~ Cond + Risk_cond * Help_cond
## Model 2: Endure_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
## 1   1187 2046.6                              
## 2   1186 2039.2  1    7.3836 4.2942 0.03846 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$Endure_S_mean$Model_2, fits$Endure_S_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: Endure_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond
## Model 2: Endure_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + Cond:Help_cond + 
##     Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
## 1   1185 2046.0                              
## 2   1184 2038.9  1    7.1324 4.1418 0.04206 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: SelfExploit_G_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: SelfExploit_G_mean
anova(fits$SelfExploit_G_mean$Model_1, fits$SelfExploit_G_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: SelfExploit_G_mean ~ Cond + Risk_cond * Help_cond
## Model 2: SelfExploit_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 1711.2                                  
## 2   1186 1613.7  1    97.433 71.608 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$SelfExploit_G_mean$Model_2, fits$SelfExploit_G_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: SelfExploit_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond
## Model 2: SelfExploit_G_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 1698.7                                  
## 2   1184 1603.0  1    95.712 70.694 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: SelfExploit_S_mean")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: SelfExploit_S_mean
anova(fits$SelfExploit_S_mean$Model_1, fits$SelfExploit_S_mean$Model_3)
## Analysis of Variance Table
## 
## Model 1: SelfExploit_S_mean ~ Cond + Risk_cond * Help_cond
## Model 2: SelfExploit_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 1971.1                                  
## 2   1186 1953.2  1    17.943 10.895 0.0009927 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$SelfExploit_S_mean$Model_2, fits$SelfExploit_S_mean$Model_4)
## Analysis of Variance Table
## 
## Model 1: SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond
## Model 2: SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond + Attitude
##   Res.Df    RSS Df Sum of Sq     F   Pr(>F)   
## 1   1185 1966.8                               
## 2   1184 1950.3  1    16.555 10.05 0.001562 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("## COMPARING MODELS WITH AND WITHOUT ATTITUDE: GlobalSupportExpl")
## ## COMPARING MODELS WITH AND WITHOUT ATTITUDE: GlobalSupportExpl
anova(fits$GlobalSupportExpl$Model_1, fits$GlobalSupportExpl$Model_3)
## Analysis of Variance Table
## 
## Model 1: GlobalSupportExpl ~ Cond + Risk_cond * Help_cond
## Model 2: GlobalSupportExpl ~ Cond + Risk_cond * Help_cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1187 837.91                                  
## 2   1186 811.84  1    26.067 38.082 9.296e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fits$GlobalSupportExpl$Model_2, fits$GlobalSupportExpl$Model_4)
## Analysis of Variance Table
## 
## Model 1: GlobalSupportExpl ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond
## Model 2: GlobalSupportExpl ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond + Attitude
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   1185 837.32                                  
## 2   1184 810.35  1    26.969 39.404 4.827e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Aside from the General measures of support for workers (which is a very bad measure as indicated in our measurement model) and - somewhat - the specific enduring pain items (which are also bad according to our measurement model): All models indicate a significantly better fit when accounting for attitude.

TO SUM UP:

H1. Gratitude Participants expressed greater gratitude toward occupations framed as exposed to risk or helpful. The effects were accounted by attitude.


H2. Shielding from criticism Participants were more likely to shield occupations framed as exposed to risk or helpful from criticism, although this effect emerged only for the general-level measure. The effect of helpfulness was accounted by attitude - but not the effect of risk.


H3. Support for workers’ demands Participants were more likely to support demands from occupations framed as exposed to risk, but not those framed as helpful, and this effect emerged only for the specific-level measure. The effect was accounted by attitude.


H4. Perceived suffering Participants were more likely to perceive workers from occupations framed as exposed to risk as suffering (but not those framed as helpful). This effect was not fully accounted by attitude. (Interestingly, accounting for attitude resulted in a negative effect of helpfulness: occupations framed as helpful were perceived as less victimised after accounting for attitude)


H5. Protection of rule-breaking workers Participants were more likely to support protecting rule-breaking workers from occupations framed as exposed to risk, but not those framed as helpful, and this effect emerged only for the general-level measure. This effect was not fully accounted by attitude.


H6. Perceived acceptance of exploitative policies Participants were more likely to perceive workers from occupations framed as exposed to risk or helpful as willing to accept exploitative policies using the general level measure; the effect of helpfulness was accounted by attitude, but not the effect of risk.

Participants were more likely to perceive workers from occupations framed as helpful as willing to accept exploitative policies using the specific level measure; this effect of helpfulness was not fully accounted by attitude.


H7. Support for exploitative policies Participants were less likely to support exploitative policies for workers from occupations framed as exposed to risk, but not those framed as helpful. This effect was accounted by attitude (Interestingly, accounting for attitude resulted in a negative effect of helpfulness: occupations framed as helpful were more exploited after accounting for attitude)


H8. Perceived willingness to endure pain Participants were more likely to perceive workers from occupations framed as exposed to risk as willing to endure greater pain, but not those framed as helpful, and this effect emerged only for the general-level measure. This effect was not fully accounted by attitude.


Exploratory analyses

1. Correlation matrix

selected_data <- scale_scores[, c(30, 31, 32, 16:19, 22:27, 38:41)]
cor_matrix <- cor(selected_data, use = "pairwise.complete.obs")

corrplot(
  cor_matrix,
  method = "color",
  type = "upper",
  diag = FALSE,
  tl.col = "black",
  tl.srt = 45,
  addCoef.col = "black",
  number.cex = 0.6
)

2. Mediation models

We took each significant effect of one IV on the outcome, and assessed if the data was consistent with mediations. NOTE, however, that mediation should not be inferred from the models - as we are unable to control for potential covariates (see Pirlott & MacKinnon).

HELP mediation

Toggle details of each mediation model (Warning: long output)
scale_scores$Heroism_c <- as.numeric(scale(scale_scores$Heroism))

outcomes <- c(
  "GlobalGratitude",
  "criticism_items_G_mean",
  "SelfExploit_G_mean", "SelfExploit_S_mean"
)

fit_list <- list()
summary_list <- list()
estimates_list <- list()

for (outcome_name in outcomes) {

  model_med <- paste0(
    "
    Heroism_c ~ a*Help_cond
    ", outcome_name, " ~ cprime*Help_cond + b*Heroism_c
    indirect := a*b
    total := cprime + indirect
    "
  )

  fit <- lavaan::sem(
    model_med,
    data = scale_scores,
    se = "bootstrap",
    bootstrap = 5000
  )

  fit_list[[outcome_name]] <- fit
  summary_list[[outcome_name]] <- summary(
    fit,
    standardized = TRUE,
    fit.measures = TRUE,
    ci = TRUE
  )
  estimates_list[[outcome_name]] <- lavaan::parameterEstimates(
    fit,
    ci = TRUE,
    standardized = TRUE
  )

  cat("\n\n========================================\n")
  cat("Outcome:", outcome_name, "\n")
  cat("========================================\n")
  print(summary_list[[outcome_name]])
  print(estimates_list[[outcome_name]])
}
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    37 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: GlobalGratitude 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               487.295
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2933.708
##   Loglikelihood unrestricted model (H1)      -2933.708
##                                                       
##   Akaike (AIC)                                5877.416
##   Bayesian (BIC)                              5902.833
##   Sample-size adjusted Bayesian (SABIC)       5886.951
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4963
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                            
##     Hlp_cnd    (a)     0.125    0.058    2.165    0.030    0.017    0.241
##   GlobalGratitude ~                                                      
##     Hlp_cnd (cprm)     0.165    0.040    4.080    0.000    0.086    0.244
##     Hersm_c    (b)     0.474    0.021   23.041    0.000    0.435    0.515
##    Std.lv  Std.all
##                   
##     0.125    0.062
##                   
##     0.165    0.098
##     0.474    0.563
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.995    0.042   23.667    0.000    0.911    1.079
##    .GlobalGratitud    0.473    0.019   25.211    0.000    0.434    0.508
##    Std.lv  Std.all
##     0.995    0.996
##     0.473    0.667
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.059    0.027    2.154    0.031    0.008    0.115
##     total             0.224    0.048    4.640    0.000    0.130    0.320
##    Std.lv  Std.all
##     0.059    0.035
##     0.224    0.133
## 
##               lhs op             rhs    label   est    se      z pvalue
## 1       Heroism_c  ~       Help_cond        a 0.125 0.058  2.165  0.030
## 2 GlobalGratitude  ~       Help_cond   cprime 0.165 0.040  4.080  0.000
## 3 GlobalGratitude  ~       Heroism_c        b 0.474 0.021 23.041  0.000
## 4       Heroism_c ~~       Heroism_c          0.995 0.042 23.667  0.000
## 5 GlobalGratitude ~~ GlobalGratitude          0.473 0.019 25.211  0.000
## 6       Help_cond ~~       Help_cond          0.250 0.000     NA     NA
## 7        indirect :=             a*b indirect 0.059 0.027  2.154  0.031
## 8           total := cprime+indirect    total 0.224 0.048  4.640  0.000
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.017    0.241  0.125   0.062   0.125
## 2    0.086    0.244  0.165   0.098   0.195
## 3    0.435    0.515  0.474   0.563   0.563
## 4    0.911    1.079  0.995   0.996   0.996
## 5    0.434    0.508  0.473   0.667   0.667
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.008    0.115  0.059   0.035   0.070
## 8    0.130    0.320  0.224   0.133   0.266
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    75 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: criticism_items_G_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               299.944
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3354.459
##   Loglikelihood unrestricted model (H1)      -3354.459
##                                                       
##   Akaike (AIC)                                6718.918
##   Bayesian (BIC)                              6744.335
##   Sample-size adjusted Bayesian (SABIC)       6728.453
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4925
## 
## Regressions:
##                            Estimate  Std.Err  z-value  P(>|z|) ci.lower
##   Heroism_c ~                                                          
##     Hlp_cnd    (a)            0.125    0.058    2.168    0.030    0.018
##   criticism_items_G_mean ~                                             
##     Hlp_cnd (cprm)           -0.049    0.057   -0.857    0.391   -0.159
##     Hersm_c    (b)           -0.517    0.031  -16.950    0.000   -0.577
##  ci.upper   Std.lv  Std.all
##                            
##     0.241    0.125    0.062
##                            
##     0.063   -0.049   -0.022
##    -0.459   -0.517   -0.467
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.995    0.042   23.686    0.000    0.911    1.078
##    .crtcsm_tms_G_m    0.958    0.044   21.881    0.000    0.871    1.042
##    Std.lv  Std.all
##     0.995    0.996
##     0.958    0.781
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect         -0.064    0.030   -2.129    0.033   -0.127   -0.009
##     total            -0.114    0.064   -1.776    0.076   -0.237    0.011
##    Std.lv  Std.all
##    -0.064   -0.029
##    -0.114   -0.051
## 
##                      lhs op                    rhs    label    est    se
## 1              Heroism_c  ~              Help_cond        a  0.125 0.058
## 2 criticism_items_G_mean  ~              Help_cond   cprime -0.049 0.057
## 3 criticism_items_G_mean  ~              Heroism_c        b -0.517 0.031
## 4              Heroism_c ~~              Heroism_c           0.995 0.042
## 5 criticism_items_G_mean ~~ criticism_items_G_mean           0.958 0.044
## 6              Help_cond ~~              Help_cond           0.250 0.000
## 7               indirect :=                    a*b indirect -0.064 0.030
## 8                  total :=        cprime+indirect    total -0.114 0.064
##         z pvalue ci.lower ci.upper std.lv std.all std.nox
## 1   2.168  0.030    0.018    0.241  0.125   0.062   0.125
## 2  -0.857  0.391   -0.159    0.063 -0.049  -0.022  -0.044
## 3 -16.950  0.000   -0.577   -0.459 -0.517  -0.467  -0.467
## 4  23.686  0.000    0.911    1.078  0.995   0.996   0.996
## 5  21.881  0.000    0.871    1.042  0.958   0.781   0.781
## 6      NA     NA    0.250    0.250  0.250   1.000   0.250
## 7  -2.129  0.033   -0.127   -0.009 -0.064  -0.029  -0.058
## 8  -1.776  0.076   -0.237    0.011 -0.114  -0.051  -0.102
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    73 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: SelfExploit_G_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                                48.110
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3593.514
##   Loglikelihood unrestricted model (H1)      -3593.514
##                                                       
##   Akaike (AIC)                                7197.029
##   Bayesian (BIC)                              7222.446
##   Sample-size adjusted Bayesian (SABIC)       7206.564
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4927
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Hlp_cnd    (a)        0.125    0.058    2.166    0.030    0.017    0.241
##   SelfExploit_G_mean ~                                                      
##     Hlp_cnd (cprm)        0.159    0.070    2.286    0.022    0.020    0.294
##     Hersm_c    (b)        0.212    0.039    5.442    0.000    0.135    0.290
##    Std.lv  Std.all
##                   
##     0.125    0.062
##                   
##     0.159    0.065
##     0.212    0.174
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.995    0.042   23.688    0.000    0.912    1.078
##    .SelfExplt_G_mn    1.431    0.063   22.846    0.000    1.309    1.553
##    Std.lv  Std.all
##     0.995    0.996
##     1.431    0.964
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.026    0.013    1.994    0.046    0.004    0.055
##     total             0.185    0.071    2.620    0.009    0.044    0.324
##    Std.lv  Std.all
##     0.026    0.011
##     0.185    0.076
## 
##                  lhs op                rhs    label   est    se      z pvalue
## 1          Heroism_c  ~          Help_cond        a 0.125 0.058  2.166  0.030
## 2 SelfExploit_G_mean  ~          Help_cond   cprime 0.159 0.070  2.286  0.022
## 3 SelfExploit_G_mean  ~          Heroism_c        b 0.212 0.039  5.442  0.000
## 4          Heroism_c ~~          Heroism_c          0.995 0.042 23.688  0.000
## 5 SelfExploit_G_mean ~~ SelfExploit_G_mean          1.431 0.063 22.846  0.000
## 6          Help_cond ~~          Help_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.026 0.013  1.994  0.046
## 8              total :=    cprime+indirect    total 0.185 0.071  2.620  0.009
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.017    0.241  0.125   0.062   0.125
## 2    0.020    0.294  0.159   0.065   0.131
## 3    0.135    0.290  0.212   0.174   0.174
## 4    0.912    1.078  0.995   0.996   0.996
## 5    1.309    1.553  1.431   0.964   0.964
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.004    0.055  0.026   0.011   0.022
## 8    0.044    0.324  0.185   0.076   0.152
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    106 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: SelfExploit_S_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                                31.271
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3674.004
##   Loglikelihood unrestricted model (H1)      -3674.004
##                                                       
##   Akaike (AIC)                                7358.008
##   Bayesian (BIC)                              7383.425
##   Sample-size adjusted Bayesian (SABIC)       7367.543
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4894
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Hlp_cnd    (a)        0.125    0.058    2.168    0.030    0.018    0.241
##   SelfExploit_S_mean ~                                                      
##     Hlp_cnd (cprm)        0.229    0.075    3.058    0.002    0.082    0.376
##     Hersm_c    (b)        0.148    0.038    3.891    0.000    0.074    0.222
##    Std.lv  Std.all
##                   
##     0.125    0.062
##                   
##     0.229    0.088
##     0.148    0.114
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.995    0.042   23.652    0.000    0.912    1.079
##    .SelfExplt_S_mn    1.638    0.065   25.340    0.000    1.510    1.761
##    Std.lv  Std.all
##     0.995    0.996
##     1.638    0.978
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.018    0.010    1.862    0.063    0.002    0.040
##     total             0.247    0.075    3.292    0.001    0.100    0.395
##    Std.lv  Std.all
##     0.018    0.007
##     0.247    0.096
## 
##                  lhs op                rhs    label   est    se      z pvalue
## 1          Heroism_c  ~          Help_cond        a 0.125 0.058  2.168  0.030
## 2 SelfExploit_S_mean  ~          Help_cond   cprime 0.229 0.075  3.058  0.002
## 3 SelfExploit_S_mean  ~          Heroism_c        b 0.148 0.038  3.891  0.000
## 4          Heroism_c ~~          Heroism_c          0.995 0.042 23.652  0.000
## 5 SelfExploit_S_mean ~~ SelfExploit_S_mean          1.638 0.065 25.340  0.000
## 6          Help_cond ~~          Help_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.018 0.010  1.862  0.063
## 8              total :=    cprime+indirect    total 0.247 0.075  3.292  0.001
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.018    0.241  0.125   0.062   0.125
## 2    0.082    0.376  0.229   0.088   0.177
## 3    0.074    0.222  0.148   0.114   0.114
## 4    0.912    1.079  0.995   0.996   0.996
## 5    1.510    1.761  1.638   0.978   0.978
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.002    0.040  0.018   0.007   0.014
## 8    0.100    0.395  0.247   0.096   0.191

Summary of the findings:

RISK mediation

Toggle details of each mediation model (Warning: long output)
scale_scores$Heroism_c <- as.numeric(scale(scale_scores$Heroism))

outcomes <- c(
  "GlobalGratitude",
  "criticism_items_G_mean",
  "DemandSupp_S_mean",
  "GlobalVictim",
  "Villain_S_mean",
  "Endure_G_mean",
  "SelfExploit_G_mean", "SelfExploit_S_mean",
  "GlobalSupportExpl"
)

fit_list <- list()
summary_list <- list()
estimates_list <- list()

for (outcome_name in outcomes) {

  model_med <- paste0(
    "
    Heroism_c ~ a*Risk_cond
    ", outcome_name, " ~ cprime*Risk_cond + b*Heroism_c
    indirect := a*b
    total := cprime + indirect
    "
  )

  fit <- lavaan::sem(
    model_med,
    data = scale_scores,
    se = "bootstrap",
    bootstrap = 5000
  )

  fit_list[[outcome_name]] <- fit
  summary_list[[outcome_name]] <- summary(
    fit,
    standardized = TRUE,
    fit.measures = TRUE,
    ci = TRUE
  )
  estimates_list[[outcome_name]] <- lavaan::parameterEstimates(
    fit,
    ci = TRUE,
    standardized = TRUE
  )

  cat("\n\n========================================\n")
  cat("Outcome:", outcome_name, "\n")
  cat("========================================\n")
  print(summary_list[[outcome_name]])
  print(estimates_list[[outcome_name]])
}
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    41 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: GlobalGratitude 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               476.835
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2938.938
##   Loglikelihood unrestricted model (H1)      -2938.938
##                                                       
##   Akaike (AIC)                                5887.876
##   Bayesian (BIC)                              5913.293
##   Sample-size adjusted Bayesian (SABIC)       5897.411
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4959
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                            
##     Rsk_cnd    (a)     0.183    0.057    3.214    0.001    0.070    0.295
##   GlobalGratitude ~                                                      
##     Rsk_cnd (cprm)     0.040    0.040    1.014    0.310   -0.039    0.118
##     Hersm_c    (b)     0.477    0.021   23.204    0.000    0.438    0.518
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##     0.040    0.024
##     0.477    0.567
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.816    0.000    0.908    1.073
##    .GlobalGratitud    0.479    0.019   25.295    0.000    0.440    0.515
##    Std.lv  Std.all
##     0.991    0.992
##     0.479    0.676
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.088    0.027    3.216    0.001    0.033    0.141
##     total             0.128    0.048    2.636    0.008    0.032    0.223
##    Std.lv  Std.all
##     0.088    0.052
##     0.128    0.076
## 
##               lhs op             rhs    label   est    se      z pvalue
## 1       Heroism_c  ~       Risk_cond        a 0.183 0.057  3.214  0.001
## 2 GlobalGratitude  ~       Risk_cond   cprime 0.040 0.040  1.014  0.310
## 3 GlobalGratitude  ~       Heroism_c        b 0.477 0.021 23.204  0.000
## 4       Heroism_c ~~       Heroism_c          0.991 0.042 23.816  0.000
## 5 GlobalGratitude ~~ GlobalGratitude          0.479 0.019 25.295  0.000
## 6       Risk_cond ~~       Risk_cond          0.250 0.000     NA     NA
## 7        indirect :=             a*b indirect 0.088 0.027  3.216  0.001
## 8           total := cprime+indirect    total 0.128 0.048  2.636  0.008
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.295  0.183   0.092   0.184
## 2   -0.039    0.118  0.040   0.024   0.048
## 3    0.438    0.518  0.477   0.567   0.567
## 4    0.908    1.073  0.991   0.992   0.992
## 5    0.440    0.515  0.479   0.676   0.676
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.033    0.141  0.088   0.052   0.104
## 8    0.032    0.223  0.128   0.076   0.152
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    122 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: criticism_items_G_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               310.335
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3349.263
##   Loglikelihood unrestricted model (H1)      -3349.263
##                                                       
##   Akaike (AIC)                                6708.527
##   Bayesian (BIC)                              6733.944
##   Sample-size adjusted Bayesian (SABIC)       6718.062
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4878
## 
## Regressions:
##                            Estimate  Std.Err  z-value  P(>|z|) ci.lower
##   Heroism_c ~                                                          
##     Rsk_cnd    (a)            0.183    0.057    3.217    0.001    0.070
##   criticism_items_G_mean ~                                             
##     Rsk_cnd (cprm)           -0.136    0.057   -2.374    0.018   -0.249
##     Hersm_c    (b)           -0.512    0.030  -16.849    0.000   -0.571
##  ci.upper   Std.lv  Std.all
##                            
##     0.296    0.183    0.092
##                            
##    -0.022   -0.136   -0.061
##    -0.454   -0.512   -0.462
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.817    0.000    0.908    1.073
##    .crtcsm_tms_G_m    0.954    0.044   21.783    0.000    0.867    1.040
##    Std.lv  Std.all
##     0.991    0.992
##     0.954    0.777
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect         -0.094    0.029   -3.190    0.001   -0.152   -0.035
##     total            -0.230    0.065   -3.538    0.000   -0.354   -0.102
##    Std.lv  Std.all
##    -0.094   -0.042
##    -0.230   -0.104
## 
##                      lhs op                    rhs    label    est    se
## 1              Heroism_c  ~              Risk_cond        a  0.183 0.057
## 2 criticism_items_G_mean  ~              Risk_cond   cprime -0.136 0.057
## 3 criticism_items_G_mean  ~              Heroism_c        b -0.512 0.030
## 4              Heroism_c ~~              Heroism_c           0.991 0.042
## 5 criticism_items_G_mean ~~ criticism_items_G_mean           0.954 0.044
## 6              Risk_cond ~~              Risk_cond           0.250 0.000
## 7               indirect :=                    a*b indirect -0.094 0.029
## 8                  total :=        cprime+indirect    total -0.230 0.065
##         z pvalue ci.lower ci.upper std.lv std.all std.nox
## 1   3.217  0.001    0.070    0.296  0.183   0.092   0.184
## 2  -2.374  0.018   -0.249   -0.022 -0.136  -0.061  -0.123
## 3 -16.849  0.000   -0.571   -0.454 -0.512  -0.462  -0.462
## 4  23.817  0.000    0.908    1.073  0.991   0.992   0.992
## 5  21.783  0.000    0.867    1.040  0.954   0.777   0.777
## 6      NA     NA    0.250    0.250  0.250   1.000   0.250
## 7  -3.190  0.001   -0.152   -0.035 -0.094  -0.042  -0.085
## 8  -3.538  0.000   -0.354   -0.102 -0.230  -0.104  -0.207
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    74 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: DemandSupp_S_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               121.559
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3603.670
##   Loglikelihood unrestricted model (H1)      -3603.670
##                                                       
##   Akaike (AIC)                                7217.340
##   Bayesian (BIC)                              7242.757
##   Sample-size adjusted Bayesian (SABIC)       7226.875
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4926
## 
## Regressions:
##                       Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                              
##     Rsk_cnd    (a)       0.183    0.057    3.216    0.001    0.070    0.296
##   DemandSupp_S_mean ~                                                      
##     Rsk_cnd (cprm)       0.050    0.071    0.697    0.486   -0.091    0.185
##     Hersm_c    (b)       0.376    0.042    8.976    0.000    0.294    0.458
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##     0.050    0.020
##     0.376    0.296
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.790    0.000    0.908    1.073
##    .DemandSpp_S_mn    1.462    0.072   20.189    0.000    1.322    1.606
##    Std.lv  Std.all
##     0.991    0.992
##     1.462    0.911
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.069    0.023    3.041    0.002    0.025    0.115
##     total             0.118    0.074    1.602    0.109   -0.029    0.261
##    Std.lv  Std.all
##     0.069    0.027
##     0.118    0.047
## 
##                 lhs op               rhs    label   est    se      z pvalue
## 1         Heroism_c  ~         Risk_cond        a 0.183 0.057  3.216  0.001
## 2 DemandSupp_S_mean  ~         Risk_cond   cprime 0.050 0.071  0.697  0.486
## 3 DemandSupp_S_mean  ~         Heroism_c        b 0.376 0.042  8.976  0.000
## 4         Heroism_c ~~         Heroism_c          0.991 0.042 23.790  0.000
## 5 DemandSupp_S_mean ~~ DemandSupp_S_mean          1.462 0.072 20.189  0.000
## 6         Risk_cond ~~         Risk_cond          0.250 0.000     NA     NA
## 7          indirect :=               a*b indirect 0.069 0.023  3.041  0.002
## 8             total :=   cprime+indirect    total 0.118 0.074  1.602  0.109
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.296  0.183   0.092   0.184
## 2   -0.091    0.185  0.050   0.020   0.039
## 3    0.294    0.458  0.376   0.296   0.296
## 4    0.908    1.073  0.991   0.992   0.992
## 5    1.322    1.606  1.462   0.911   0.911
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.025    0.115  0.069   0.027   0.054
## 8   -0.029    0.261  0.118   0.047   0.093
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    44 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: GlobalVictim 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               236.166
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3030.899
##   Loglikelihood unrestricted model (H1)      -3030.899
##                                                       
##   Akaike (AIC)                                6071.797
##   Bayesian (BIC)                              6097.214
##   Sample-size adjusted Bayesian (SABIC)       6081.332
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4956
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                           
##     Rsk_cnd    (a)    0.183    0.057    3.212    0.001    0.070    0.296
##   GlobalVictim ~                                                        
##     Rsk_cnd (cprm)    0.247    0.045    5.546    0.000    0.160    0.337
##     Hersm_c    (b)    0.308    0.024   12.626    0.000    0.260    0.356
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##     0.247    0.150
##     0.308    0.374
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.797    0.000    0.908    1.073
##    .GlobalVictim      0.559    0.024   23.223    0.000    0.512    0.606
##    Std.lv  Std.all
##     0.991    0.992
##     0.559    0.827
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.056    0.018    3.131    0.002    0.021    0.092
##     total             0.304    0.048    6.346    0.000    0.209    0.397
##    Std.lv  Std.all
##     0.056    0.034
##     0.304    0.185
## 
##            lhs op             rhs    label   est    se      z pvalue ci.lower
## 1    Heroism_c  ~       Risk_cond        a 0.183 0.057  3.212  0.001    0.070
## 2 GlobalVictim  ~       Risk_cond   cprime 0.247 0.045  5.546  0.000    0.160
## 3 GlobalVictim  ~       Heroism_c        b 0.308 0.024 12.626  0.000    0.260
## 4    Heroism_c ~~       Heroism_c          0.991 0.042 23.797  0.000    0.908
## 5 GlobalVictim ~~    GlobalVictim          0.559 0.024 23.223  0.000    0.512
## 6    Risk_cond ~~       Risk_cond          0.250 0.000     NA     NA    0.250
## 7     indirect :=             a*b indirect 0.056 0.018  3.131  0.002    0.021
## 8        total := cprime+indirect    total 0.304 0.048  6.346  0.000    0.209
##   ci.upper std.lv std.all std.nox
## 1    0.296  0.183   0.092   0.184
## 2    0.337  0.247   0.150   0.301
## 3    0.356  0.308   0.374   0.374
## 4    1.073  0.991   0.992   0.992
## 5    0.606  0.559   0.827   0.827
## 6    0.250  0.250   1.000   0.250
## 7    0.092  0.056   0.034   0.069
## 8    0.397  0.304   0.185   0.369
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    230 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: Villain_S_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               101.495
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3916.198
##   Loglikelihood unrestricted model (H1)      -3916.198
##                                                       
##   Akaike (AIC)                                7842.396
##   Bayesian (BIC)                              7867.813
##   Sample-size adjusted Bayesian (SABIC)       7851.931
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4770
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                           
##     Rsk_cnd    (a)    0.183    0.057    3.240    0.001    0.071    0.295
##   Villain_S_mean ~                                                      
##     Rsk_cnd (cprm)    0.223    0.092    2.418    0.016    0.043    0.407
##     Hersm_c    (b)    0.420    0.048    8.681    0.000    0.328    0.515
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##     0.223    0.068
##     0.420    0.257
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.742    0.000    0.907    1.073
##    .Villain_S_mean    2.470    0.094   26.285    0.000    2.284    2.650
##    Std.lv  Std.all
##     0.991    0.992
##     2.470    0.926
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.077    0.026    3.008    0.003    0.029    0.130
##     total             0.300    0.095    3.155    0.002    0.116    0.488
##    Std.lv  Std.all
##     0.077    0.024
##     0.300    0.092
## 
##              lhs op             rhs    label   est    se      z pvalue ci.lower
## 1      Heroism_c  ~       Risk_cond        a 0.183 0.057  3.240  0.001    0.071
## 2 Villain_S_mean  ~       Risk_cond   cprime 0.223 0.092  2.418  0.016    0.043
## 3 Villain_S_mean  ~       Heroism_c        b 0.420 0.048  8.681  0.000    0.328
## 4      Heroism_c ~~       Heroism_c          0.991 0.042 23.742  0.000    0.907
## 5 Villain_S_mean ~~  Villain_S_mean          2.470 0.094 26.285  0.000    2.284
## 6      Risk_cond ~~       Risk_cond          0.250 0.000     NA     NA    0.250
## 7       indirect :=             a*b indirect 0.077 0.026  3.008  0.003    0.029
## 8          total := cprime+indirect    total 0.300 0.095  3.155  0.002    0.116
##   ci.upper std.lv std.all std.nox
## 1    0.295  0.183   0.092   0.184
## 2    0.407  0.223   0.068   0.137
## 3    0.515  0.420   0.257   0.257
## 4    1.073  0.991   0.992   0.992
## 5    2.650  2.470   0.926   0.926
## 6    0.250  0.250   1.000   0.250
## 7    0.130  0.077   0.024   0.047
## 8    0.488  0.300   0.092   0.184
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    84 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: Endure_G_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               118.313
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3553.475
##   Loglikelihood unrestricted model (H1)      -3553.475
##                                                       
##   Akaike (AIC)                                7116.951
##   Bayesian (BIC)                              7142.368
##   Sample-size adjusted Bayesian (SABIC)       7126.486
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4916
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                           
##     Rsk_cnd    (a)    0.183    0.057    3.214    0.001    0.070    0.296
##   Endure_G_mean ~                                                       
##     Rsk_cnd (cprm)    0.232    0.067    3.436    0.001    0.101    0.361
##     Hersm_c    (b)    0.328    0.036    9.218    0.000    0.259    0.397
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##     0.232    0.095
##     0.328    0.270
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.773    0.000    0.907    1.073
##    .Endure_G_mean     1.344    0.055   24.505    0.000    1.237    1.451
##    Std.lv  Std.all
##     0.991    0.992
##     1.344    0.913
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.060    0.020    2.964    0.003    0.022    0.102
##     total             0.292    0.070    4.171    0.000    0.154    0.427
##    Std.lv  Std.all
##     0.060    0.025
##     0.292    0.120
## 
##             lhs op             rhs    label   est    se      z pvalue ci.lower
## 1     Heroism_c  ~       Risk_cond        a 0.183 0.057  3.214  0.001    0.070
## 2 Endure_G_mean  ~       Risk_cond   cprime 0.232 0.067  3.436  0.001    0.101
## 3 Endure_G_mean  ~       Heroism_c        b 0.328 0.036  9.218  0.000    0.259
## 4     Heroism_c ~~       Heroism_c          0.991 0.042 23.773  0.000    0.907
## 5 Endure_G_mean ~~   Endure_G_mean          1.344 0.055 24.505  0.000    1.237
## 6     Risk_cond ~~       Risk_cond          0.250 0.000     NA     NA    0.250
## 7      indirect :=             a*b indirect 0.060 0.020  2.964  0.003    0.022
## 8         total := cprime+indirect    total 0.292 0.070  4.171  0.000    0.154
##   ci.upper std.lv std.all std.nox
## 1    0.296  0.183   0.092   0.184
## 2    0.361  0.232   0.095   0.191
## 3    0.397  0.328   0.270   0.270
## 4    1.073  0.991   0.992   0.992
## 5    1.451  1.344   0.913   0.913
## 6    0.250  0.250   1.000   0.250
## 7    0.102  0.060   0.025   0.050
## 8    0.427  0.292   0.120   0.241
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    93 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: SelfExploit_G_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                                72.759
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3581.190
##   Loglikelihood unrestricted model (H1)      -3581.190
##                                                       
##   Akaike (AIC)                                7172.380
##   Bayesian (BIC)                              7197.797
##   Sample-size adjusted Bayesian (SABIC)       7181.915
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4907
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Rsk_cnd    (a)        0.183    0.057    3.216    0.001    0.070    0.296
##   SelfExploit_G_mean ~                                                      
##     Rsk_cnd (cprm)        0.343    0.069    4.988    0.000    0.212    0.480
##     Hersm_c    (b)        0.201    0.038    5.218    0.000    0.127    0.278
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##     0.343    0.141
##     0.201    0.165
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.790    0.000    0.907    1.073
##    .SelfExplt_G_mn    1.408    0.063   22.501    0.000    1.285    1.529
##    Std.lv  Std.all
##     0.991    0.992
##     1.408    0.949
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.037    0.014    2.718    0.007    0.013    0.066
##     total             0.380    0.070    5.427    0.000    0.243    0.520
##    Std.lv  Std.all
##     0.037    0.015
##     0.380    0.156
## 
##                  lhs op                rhs    label   est    se      z pvalue
## 1          Heroism_c  ~          Risk_cond        a 0.183 0.057  3.216  0.001
## 2 SelfExploit_G_mean  ~          Risk_cond   cprime 0.343 0.069  4.988  0.000
## 3 SelfExploit_G_mean  ~          Heroism_c        b 0.201 0.038  5.218  0.000
## 4          Heroism_c ~~          Heroism_c          0.991 0.042 23.790  0.000
## 5 SelfExploit_G_mean ~~ SelfExploit_G_mean          1.408 0.063 22.501  0.000
## 6          Risk_cond ~~          Risk_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.037 0.014  2.718  0.007
## 8              total :=    cprime+indirect    total 0.380 0.070  5.427  0.000
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.296  0.183   0.092   0.184
## 2    0.212    0.480  0.343   0.141   0.282
## 3    0.127    0.278  0.201   0.165   0.165
## 4    0.907    1.073  0.991   0.992   0.992
## 5    1.285    1.529  1.408   0.949   0.949
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.013    0.066  0.037   0.015   0.030
## 8    0.243    0.520  0.380   0.156   0.312
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    99 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: SelfExploit_S_mean 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                                27.323
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3675.978
##   Loglikelihood unrestricted model (H1)      -3675.978
##                                                       
##   Akaike (AIC)                                7361.955
##   Bayesian (BIC)                              7387.372
##   Sample-size adjusted Bayesian (SABIC)       7371.490
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4901
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Rsk_cnd    (a)        0.183    0.057    3.213    0.001    0.070    0.296
##   SelfExploit_S_mean ~                                                      
##     Rsk_cnd (cprm)        0.020    0.073    0.277    0.782   -0.122    0.166
##     Hersm_c    (b)        0.154    0.038    4.053    0.000    0.081    0.228
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##     0.020    0.008
##     0.154    0.119
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.766    0.000    0.908    1.073
##    .SelfExplt_S_mn    1.651    0.065   25.458    0.000    1.523    1.773
##    Std.lv  Std.all
##     0.991    0.992
##     1.651    0.986
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect          0.028    0.012    2.438    0.015    0.009    0.054
##     total             0.049    0.074    0.660    0.509   -0.095    0.196
##    Std.lv  Std.all
##     0.028    0.011
##     0.049    0.019
## 
##                  lhs op                rhs    label   est    se      z pvalue
## 1          Heroism_c  ~          Risk_cond        a 0.183 0.057  3.213  0.001
## 2 SelfExploit_S_mean  ~          Risk_cond   cprime 0.020 0.073  0.277  0.782
## 3 SelfExploit_S_mean  ~          Heroism_c        b 0.154 0.038  4.053  0.000
## 4          Heroism_c ~~          Heroism_c          0.991 0.042 23.766  0.000
## 5 SelfExploit_S_mean ~~ SelfExploit_S_mean          1.651 0.065 25.458  0.000
## 6          Risk_cond ~~          Risk_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.028 0.012  2.438  0.015
## 8              total :=    cprime+indirect    total 0.049 0.074  0.660  0.509
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.296  0.183   0.092   0.184
## 2   -0.122    0.166  0.020   0.008   0.016
## 3    0.081    0.228  0.154   0.119   0.119
## 4    0.908    1.073  0.991   0.992   0.992
## 5    1.523    1.773  1.651   0.986   0.986
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.009    0.054  0.028   0.011   0.022
## 8   -0.095    0.196  0.049   0.019   0.037
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    78 bootstrap runs failed or did not converge.
## 
## 
## ========================================
## Outcome: GlobalSupportExpl 
## ========================================
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         5
## 
##   Number of observations                          1192
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
## 
## Model Test Baseline Model:
## 
##   Test statistic                                28.515
##   Degrees of freedom                                 3
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.000
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3163.176
##   Loglikelihood unrestricted model (H1)      -3163.176
##                                                       
##   Akaike (AIC)                                6336.352
##   Bayesian (BIC)                              6361.769
##   Sample-size adjusted Bayesian (SABIC)       6345.887
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.000
##   P-value H_0: RMSEA <= 0.050                       NA
##   P-value H_0: RMSEA >= 0.080                       NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            4922
## 
## Regressions:
##                       Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                              
##     Rsk_cnd    (a)       0.183    0.057    3.212    0.001    0.070    0.296
##   GlobalSupportExpl ~                                                      
##     Rsk_cnd (cprm)      -0.093    0.048   -1.950    0.051   -0.185    0.002
##     Hersm_c    (b)      -0.089    0.027   -3.267    0.001   -0.145   -0.037
##    Std.lv  Std.all
##                   
##     0.183    0.092
##                   
##    -0.093   -0.055
##    -0.089   -0.106
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.041   23.894    0.000    0.909    1.073
##    .GloblSpprtExpl    0.698    0.031   22.507    0.000    0.637    0.759
##    Std.lv  Std.all
##     0.991    0.992
##     0.698    0.985
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     indirect         -0.016    0.007   -2.240    0.025   -0.032   -0.004
##     total            -0.109    0.048   -2.277    0.023   -0.201   -0.013
##    Std.lv  Std.all
##    -0.016   -0.010
##    -0.109   -0.065
## 
##                 lhs op               rhs    label    est    se      z pvalue
## 1         Heroism_c  ~         Risk_cond        a  0.183 0.057  3.212  0.001
## 2 GlobalSupportExpl  ~         Risk_cond   cprime -0.093 0.048 -1.950  0.051
## 3 GlobalSupportExpl  ~         Heroism_c        b -0.089 0.027 -3.267  0.001
## 4         Heroism_c ~~         Heroism_c           0.991 0.041 23.894  0.000
## 5 GlobalSupportExpl ~~ GlobalSupportExpl           0.698 0.031 22.507  0.000
## 6         Risk_cond ~~         Risk_cond           0.250 0.000     NA     NA
## 7          indirect :=               a*b indirect -0.016 0.007 -2.240  0.025
## 8             total :=   cprime+indirect    total -0.109 0.048 -2.277  0.023
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.296  0.183   0.092   0.184
## 2   -0.185    0.002 -0.093  -0.055  -0.110
## 3   -0.145   -0.037 -0.089  -0.106  -0.106
## 4    0.909    1.073  0.991   0.992   0.992
## 5    0.637    0.759  0.698   0.985   0.985
## 6    0.250    0.250  0.250   1.000   0.250
## 7   -0.032   -0.004 -0.016  -0.010  -0.019
## 8   -0.201   -0.013 -0.109  -0.065  -0.130

Summary of the findings:

# If needed:
# install.packages("semPlot")

library(lavaan)
library(semPlot)

# 1) Fit the total-effect model to get c (Y ~ X without M)
fit_total <- sem(
  'SupportExploit_S_mean ~ c*Help_cond',
  data = scale_scores
)

# 2) Extract path estimates from both models
pe_med   <- parameterEstimates(fit, standardized = TRUE)
pe_total <- parameterEstimates(fit_total, standardized = TRUE)

get_est <- function(pe, lab) {
  row_index <- which(pe$label == lab & pe$op == "~")
  if (length(row_index) != 1) return(NA_real_)
  pe$est[row_index]
}

a_hat      <- get_est(pe_med, "a")
b_hat      <- get_est(pe_med, "b")
cprime_hat <- get_est(pe_med, "cprime")
c_hat      <- get_est(pe_total, "c")

ind_hat    <- a_hat * b_hat
total_hat  <- cprime_hat + ind_hat

# 3) Plot the mediation model (labels show a, b, cprime on arrows)
semPaths(
  object         = fit,
  what           = "path",
  whatLabels     = "par",      # shows parameter labels: a, b, cprime
  style          = "ram",
  layout         = "tree",
  rotation       = 2,
  residuals      = TRUE,
  intercepts     = FALSE,
  nCharNodes     = 0,
  sizeMan        = 9,
  edge.label.cex = 1.2,
  mar            = c(6, 6, 6, 6)
)

# 4) Add a neat legend with numeric values (including c from the separate model)
legend(
  "topleft",
  bty = "n",
  cex = 0.95,
  legend = c(
    paste0("a = ", signif(a_hat, 3)),
    paste0("b = ", signif(b_hat, 3)),
    paste0("c' = ", signif(cprime_hat, 3)),
    paste0("c  = ", signif(c_hat, 3), "   (total effect: Y ~ X)"),
    paste0("ab = ", signif(ind_hat, 3)),
    paste0("total = ", signif(total_hat, 3))
  )
)

3. Details on each general and specific facet

in the following analyses, we do not merge factors that had loadings > .5 on their higher level factor (gratitude, victim, self exploit, and support for exploit).

run_prereg_models <- function(
  data,
  outcomes = c(
    "Gratitude_G_mean", "Gratitude_S_mean",
    "criticism_items_G_mean", "criticism_items_S_mean",
    "DemandSupp_G_mean", "DemandSupp_S_mean",
    "Victim_G_mean", "Victim_S_mean",
    "Villain_G_mean", "Villain_S_mean",
    "Endure_G_mean", "Endure_S_mean",
    "SelfExploit_G_mean", "SelfExploit_S_mean",
    "SupportExploit_G_mean", "SupportExploit_S_mean"
  ),
  models_to_run = c(1, 2, 3, 4),
  occupation_var = "Cond",
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE
) {

  # ---- basic checks ----
  required_vars <- unique(c(outcomes, occupation_var, risk_var, help_var, attitude_var))
  missing_vars <- setdiff(required_vars, names(data))
  if (length(missing_vars) > 0) {
    stop("Missing columns in `data`: ", paste(missing_vars, collapse = ", "))
  }

  # Make sure occupation is treated as categorical
  if (!is.factor(data[[occupation_var]])) {
    data[[occupation_var]] <- as.factor(data[[occupation_var]])
  }

  # Define formulas (exactly your prereg)
  f_model_1 <- function(y) {
    as.formula(paste0(y, " ~ ", occupation_var, " + ", risk_var, " * ", help_var))
  }
  f_model_2 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var
    ))
  }
  f_model_3 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var,
      " + ", risk_var, " * ", help_var,
      " + ", attitude_var
    ))
  }
  f_model_4 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var,
      " + ", attitude_var
    ))
  }

  formula_fns <- list(
    `1` = f_model_1,
    `2` = f_model_2,
    `3` = f_model_3,
    `4` = f_model_4
  )

  model_titles <- list(
    `1` = "Heroism + occupation as a covariate",
    `2` = "Heroism + occupation as a moderator",
    `3` = "Heroism + occupation and attitude as covariates)",
    `4` = "Heroism + occupation as a moderator + attitude as a covariate"
  )

  results <- list()

  for (y in outcomes) {

    cat("\n\n============================================================\n")
    cat("Outcome:", y, "\n")
    cat("============================================================\n")

    for (m in models_to_run) {

      if (!as.character(m) %in% names(formula_fns)) {
        warning("Unknown model number: ", m, " (skipping)")
        next
      }

      form <- formula_fns[[as.character(m)]](y)

      # Fit model (lm will drop rows with missing vars automatically)
      fit <- lm(form, data = data)

      # Store
      results[[y]][[paste0("Model_", m)]] <- fit

      # Print
      cat("\n------------------------------------------------------------\n")
      cat(model_titles[[as.character(m)]], "\n")
      cat("Formula: ", deparse(form), "\n", sep = "")
      cat("N used: ", nobs(fit), "\n", sep = "")
      cat("------------------------------------------------------------\n")

      if (print_summaries) {
        print(summary(fit))
      }
    }
  }

  invisible(results)
}

fits <- run_prereg_models( scale_scores, print_summaries = T )
run_prereg_models <- function(
  data,
  outcomes = c(
    "Gratitude_G_mean", "Gratitude_S_mean",
    "criticism_items_G_mean", "criticism_items_S_mean",
    "DemandSupp_G_mean", "DemandSupp_S_mean",
    "Victim_G_mean", "Victim_S_mean",
    "Villain_G_mean", "Villain_S_mean",
    "Endure_G_mean", "Endure_S_mean",
    "SelfExploit_G_mean", "SelfExploit_S_mean",
    "SupportExploit_G_mean", "SupportExploit_S_mean"
  ),
  models_to_run = c(1, 2, 3, 4),
  occupation_var = "Cond",
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE,
  alpha = 0.05
) {

  # ---- basic checks ----
  required_vars <- unique(c(outcomes, occupation_var, risk_var, help_var, attitude_var))
  missing_vars <- setdiff(required_vars, names(data))
  if (length(missing_vars) > 0) {
    stop("Missing columns in `data`: ", paste(missing_vars, collapse = ", "))
  }

  if (!is.factor(data[[occupation_var]])) {
    data[[occupation_var]] <- as.factor(data[[occupation_var]])
  }

  # ---- hypothesis mapping ----
  outcome_family <- function(y) {
    # strip _G_mean / _S_mean
    gsub("(_G_mean|_S_mean)$", "", y)
  }

  outcome_level <- function(y) {
    if (grepl("_G_mean$", y)) return("general (_G)")
    if (grepl("_S_mean$", y)) return("specific (_S)")
    return("unknown level")
  }

  # Which hypothesis letter corresponds to which outcome family?
  # (based on your prereg list)
  hyp_letter_by_family <- list(
    Gratitude       = "a",
    DemandSupp      = "b",
    Victim          = "c",
    criticism_items = "d",
    Villain         = "e",
    Endure          = "f",
    SelfExploit     = "g",
    SupportExploit  = "h"
  )

  # Expected direction for EACH hypothesis letter (Risk and Help share same direction)
  # +1 means "increase", -1 means "decrease"
  expected_sign_by_letter <- c(
    a = +1,  # gratitude higher
    b = +1,  # support demands higher
    c = +1,  # suffering/protection higher
    d = -1,  # criticism/hate speech acceptability lower
    e = +1,  # impunity/reg-violation acceptability higher
    f = +1,  # belief they'd choose suffering higher
    g = +1,  # belief they'd accept exploitation higher
    h = -1   # support exploiting workers lower
  )

  hypothesis_text <- list(
    H3 = c(
      a = "H3a: Risk → gratitude ↑",
      b = "H3b: Risk → support for workers' demands ↑",
      c = "H3c: Risk → perceived suffering/protection need ↑",
      d = "H3d: Risk → criticism/hate speech acceptability ↓",
      e = "H3e: Risk → support for workers' impunity ↑",
      f = "H3f: Risk → belief they'd choose suffering for duty ↑",
      g = "H3g: Risk → belief they'd accept exploitation if required ↑",
      h = "H3h: Risk → support for exploiting workers if required ↓"
    ),
    H4 = c(
      a = "H4a: Helpfulness → gratitude ↑",
      b = "H4b: Helpfulness → support for workers' demands ↑",
      c = "H4c: Helpfulness → perceived suffering/protection need ↑",
      d = "H4d: Helpfulness → criticism/hate speech acceptability ↓",
      e = "H4e: Helpfulness → support for workers' impunity ↑",
      f = "H4f: Helpfulness → belief they'd choose suffering for duty ↑",
      g = "H4g: Helpfulness → belief they'd accept exploitation if required ↑",
      h = "H4h: Helpfulness → support for exploiting workers if required ↓"
    )
  )

  get_hyp_letter <- function(y) {
    fam <- outcome_family(y)
    if (!fam %in% names(hyp_letter_by_family)) return(NA_character_)
    hyp_letter_by_family[[fam]]
  }

  # ---- coefficient extractor + "supported" line ----
  get_term_stats <- function(fit, term) {
    coefs <- summary(fit)$coefficients
    if (!term %in% rownames(coefs)) return(NULL)
    list(
      beta = unname(coefs[term, 1]),
      se   = unname(coefs[term, 2]),
      t    = unname(coefs[term, 3]),
      p    = unname(coefs[term, 4])
    )
  }

  fmt_num <- function(x, digits = 3) sprintf(paste0("%.", digits, "f"), x)
  fmt_p <- function(p) {
    if (is.na(p)) return("NA")
    if (p < .001) return("<.001")
    sub("^0", "", sprintf("%.3f", p))
  }

  print_support_line_if_sig <- function(stats, hyp_code, expected_sign, alpha) {
    if (is.null(stats)) return(invisible(NULL))
    if (is.na(stats$p) || stats$p >= alpha) return(invisible(NULL))

    direction_ok <- sign(stats$beta) == sign(expected_sign)

    if (direction_ok) {
      cat("✅ ", hyp_code, " supported: ",
          "β=", fmt_num(stats$beta),
          ", SE=", fmt_num(stats$se),
          ", t=", fmt_num(stats$t),
          ", p=", fmt_p(stats$p),
          "\n", sep = "")
    } else {
      cat("⚠️  ", hyp_code, " significant but opposite direction: ",
          "β=", fmt_num(stats$beta),
          ", SE=", fmt_num(stats$se),
          ", t=", fmt_num(stats$t),
          ", p=", fmt_p(stats$p),
          "\n", sep = "")
    }
  }

  # ---- Define formulas (as prereg) ----
  f_model_1 <- function(y) {
    as.formula(paste0(y, " ~ ", occupation_var, " + ", risk_var, " * ", help_var))
  }
  f_model_2 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var
    ))
  }
  f_model_3 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var,
      " + ", risk_var, " * ", help_var,
      " + ", attitude_var
    ))
  }
  f_model_4 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", occupation_var, ":", risk_var,
      " + ", occupation_var, ":", help_var,
      " + ", occupation_var,
      " + ", attitude_var
    ))
  }

  formula_fns <- list(`1` = f_model_1, `2` = f_model_2, `3` = f_model_3, `4` = f_model_4)

  model_titles <- list(
    `1` = "Heroism + occupation as a covariate",
    `2` = "Heroism + occupation as a moderator",
    `3` = "Heroism + occupation and attitude as covariates)",
    `4` = "Heroism + occupation as a moderator + attitude as a covariate"
  )

  results <- list()

  for (y in outcomes) {

    level_label <- outcome_level(y)
    letter <- get_hyp_letter(y)

    cat("\n\n============================================================\n")
    cat("Outcome:", y, "  |  Level:", level_label, "\n")
    cat("============================================================\n")

    for (m in models_to_run) {

      if (!as.character(m) %in% names(formula_fns)) {
        warning("Unknown model number: ", m, " (skipping)")
        next
      }

      form <- formula_fns[[as.character(m)]](y)
      fit <- lm(form, data = data)

      results[[y]][[paste0("Model_", m)]] <- fit

      cat("\n------------------------------------------------------------\n")
      cat(model_titles[[as.character(m)]], "\n")
      cat("Formula: ", deparse(form), "\n", sep = "")
      cat("N used: ", nobs(fit), "\n", sep = "")

      # Hypothesis header (Risk=H3*, Help=H4*)
      if (!is.na(letter)) {
        cat("Hypotheses (this outcome):\n")
        cat(" - ", hypothesis_text$H3[[letter]], " [", level_label, "]\n", sep = "")
        cat(" - ", hypothesis_text$H4[[letter]], " [", level_label, "]\n", sep = "")
      } else {
        cat("Hypotheses: (no mapping found for this outcome name)\n")
      }

      cat("------------------------------------------------------------\n")

      # Print "validated" lines ONLY if p < alpha, using main effects Risk and Help
      # (These are the prereg H3* / H4* tests in the simplest reading.)
      if (!is.na(letter)) {
        expected_sign <- expected_sign_by_letter[[letter]]

        risk_stats <- get_term_stats(fit, risk_var)
        help_stats <- get_term_stats(fit, help_var)

        print_support_line_if_sig(
          stats = risk_stats,
          hyp_code = paste0("H3", letter),
          expected_sign = expected_sign,
          alpha = alpha
        )
        print_support_line_if_sig(
          stats = help_stats,
          hyp_code = paste0("H4", letter),
          expected_sign = expected_sign,
          alpha = alpha
        )
      }

      if (print_summaries) {
        print(summary(fit))
      }
    }
  }

  invisible(results)
}

# run it
Toggle details of each model (Warning: long output)
run_prereg_models(scale_scores)

4. Replication of Correlational findings

In a previous study, we observed strong correlations between perceived heroism and our outcomes.

How does heroism perception correlates with each outcomes?

run_prereg_models <- function(
  data,
  outcomes = c(
    "GlobalGratitude",
    "criticism_items_G_mean", "criticism_items_S_mean",
    "DemandSupp_G_mean", "DemandSupp_S_mean",
    "GlobalVictim",
    "Villain_G_mean", "Villain_S_mean",
    "Endure_G_mean", "Endure_S_mean",
    "SelfExploit_G_mean", "SelfExploit_S_mean",
    "GlobalSupportExpl"
  ),
  models_to_run = c(1, 2, 3, 4),
  occupation_var = "Cond",
  risk_var = "Heroism_c",
  attitude_var = "Attitude",
  print_summaries = TRUE,
  alpha = 0.05
) {

  # ---- basic checks ----
  required_vars <- unique(c(outcomes, occupation_var, risk_var, attitude_var))
  missing_vars <- setdiff(required_vars, names(data))
  if (length(missing_vars) > 0) {
    stop("Missing columns in `data`: ", paste(missing_vars, collapse = ", "))
  }

  if (!is.factor(data[[occupation_var]])) {
    data[[occupation_var]] <- as.factor(data[[occupation_var]])
  }

  # ---- hypothesis mapping ----
  outcome_family <- function(y) {
    # strip _G_mean / _S_mean
    gsub("(_G_mean|_S_mean)$", "", y)
  }

  outcome_level <- function(y) {
    if (grepl("_G_mean$", y)) return("general (_G)")
    if (grepl("_S_mean$", y)) return("specific (_S)")
    return("unknown level")
  }

  # Which hypothesis letter corresponds to which outcome family?
  # (based on your prereg list)
  hyp_letter_by_family <- list(
    Gratitude       = "a",
    DemandSupp      = "b",
    Victim          = "c",
    criticism_items = "d",
    Villain         = "e",
    Endure          = "f",
    SelfExploit     = "g",
    SupportExploit  = "h"
  )

  # Expected direction for EACH hypothesis letter (Risk and Help share same direction)
  # +1 means "increase", -1 means "decrease"
  expected_sign_by_letter <- c(
    a = +1,  # gratitude higher
    b = +1,  # support demands higher
    c = +1,  # suffering/protection higher
    d = -1,  # criticism/hate speech acceptability lower
    e = +1,  # impunity/reg-violation acceptability higher
    f = +1,  # belief they'd choose suffering higher
    g = +1,  # belief they'd accept exploitation higher
    h = -1   # support exploiting workers lower
  )

  hypothesis_text <- list(
    H3 = c(
      a = "H3a: Risk → gratitude ↑",
      b = "H3b: Risk → support for workers' demands ↑",
      c = "H3c: Risk → perceived suffering/protection need ↑",
      d = "H3d: Risk → criticism/hate speech acceptability ↓",
      e = "H3e: Risk → support for workers' impunity ↑",
      f = "H3f: Risk → belief they'd choose suffering for duty ↑",
      g = "H3g: Risk → belief they'd accept exploitation if required ↑",
      h = "H3h: Risk → support for exploiting workers if required ↓"
    ),
    H4 = c(
      a = "H4a: Helpfulness → gratitude ↑",
      b = "H4b: Helpfulness → support for workers' demands ↑",
      c = "H4c: Helpfulness → perceived suffering/protection need ↑",
      d = "H4d: Helpfulness → criticism/hate speech acceptability ↓",
      e = "H4e: Helpfulness → support for workers' impunity ↑",
      f = "H4f: Helpfulness → belief they'd choose suffering for duty ↑",
      g = "H4g: Helpfulness → belief they'd accept exploitation if required ↑",
      h = "H4h: Helpfulness → support for exploiting workers if required ↓"
    )
  )

  get_hyp_letter <- function(y) {
    fam <- outcome_family(y)
    if (!fam %in% names(hyp_letter_by_family)) return(NA_character_)
    hyp_letter_by_family[[fam]]
  }

  # ---- coefficient extractor + "supported" line ----
  get_term_stats <- function(fit, term) {
    coefs <- summary(fit)$coefficients
    if (!term %in% rownames(coefs)) return(NULL)
    list(
      beta = unname(coefs[term, 1]),
      se   = unname(coefs[term, 2]),
      t    = unname(coefs[term, 3]),
      p    = unname(coefs[term, 4])
    )
  }

  fmt_num <- function(x, digits = 3) sprintf(paste0("%.", digits, "f"), x)
  fmt_p <- function(p) {
    if (is.na(p)) return("NA")
    if (p < .001) return("<.001")
    sub("^0", "", sprintf("%.3f", p))
  }

  print_support_line_if_sig <- function(stats, hyp_code, expected_sign, alpha) {
    if (is.null(stats)) return(invisible(NULL))
    if (is.na(stats$p) || stats$p >= alpha) return(invisible(NULL))

    direction_ok <- sign(stats$beta) == sign(expected_sign)

    if (direction_ok) {
      cat("✅ ", hyp_code, " supported: ",
          "β=", fmt_num(stats$beta),
          ", SE=", fmt_num(stats$se),
          ", t=", fmt_num(stats$t),
          ", p=", fmt_p(stats$p),
          "\n", sep = "")
    } else {
      cat("⚠️  ", hyp_code, " significant but opposite direction: ",
          "β=", fmt_num(stats$beta),
          ", SE=", fmt_num(stats$se),
          ", t=", fmt_num(stats$t),
          ", p=", fmt_p(stats$p),
          "\n", sep = "")
    }
  }

  # ---- Define formulas (as prereg) ----
  f_model_1 <- function(y) {
    as.formula(paste0(y, " ~ ", occupation_var, " + ", risk_var))
  }
  f_model_2 <- function(y) {
    as.formula(paste0(
      y, " ~ ", occupation_var,
      " + ", risk_var,
      " + ", attitude_var
    ))
  }
  

  formula_fns <- list(`1` = f_model_1, `2` = f_model_2)

  model_titles <- list(
    `1` = "Heroism + occupation as a covariate",
    `2` = "Heroism + occupation and attitude as covariates)"
  )

  results <- list()

  for (y in outcomes) {

    level_label <- outcome_level(y)
    letter <- get_hyp_letter(y)

    cat("\n\n============================================================\n")
    cat("Outcome:", y, "  |  Level:", level_label, "\n")
    cat("============================================================\n")

    for (m in models_to_run) {

      if (!as.character(m) %in% names(formula_fns)) {
        warning("Unknown model number: ", m, " (skipping)")
        next
      }

      form <- formula_fns[[as.character(m)]](y)
      fit <- lm(form, data = data)

      results[[y]][[paste0("Model_", m)]] <- fit

      cat("\n------------------------------------------------------------\n")
      cat(model_titles[[as.character(m)]], "\n")
      cat("Formula: ", deparse(form), "\n", sep = "")
      cat("N used: ", nobs(fit), "\n", sep = "")

      # Hypothesis header (Risk=H3*, Help=H4*)
      if (!is.na(letter)) {
        cat("Hypotheses (this outcome):\n")
        cat(" - ", hypothesis_text$H3[[letter]], " [", level_label, "]\n", sep = "")
        cat(" - ", hypothesis_text$H4[[letter]], " [", level_label, "]\n", sep = "")
      } else {
        cat("Hypotheses: (no mapping found for this outcome name)\n")
      }

      cat("------------------------------------------------------------\n")

      # Print "validated" lines ONLY if p < alpha, using main effects Risk and Help
      # (These are the prereg H3* / H4* tests in the simplest reading.)
      if (!is.na(letter)) {
        expected_sign <- expected_sign_by_letter[[letter]]

        risk_stats <- get_term_stats(fit, risk_var)

        print_support_line_if_sig(
          stats = risk_stats,
          hyp_code = paste0("H3", letter),
          expected_sign = expected_sign,
          alpha = alpha
        )
      }

      if (print_summaries) {
        print(summary(fit))
      }
    }
  }

  invisible(results)
}
Toggle details of each model (Warning: long output)
run_prereg_models(scale_scores)
make_prereg_effect_table <- function(
  data,
  outcomes,
  occupation_var = "Cond",
  risk_var = "Heroism_c",
  attitude_var = "Attitude"
) {

  results_list <- list()
  row_index <- 1

  for (outcome_name in outcomes) {

    formula_without_attitude <- as.formula(
      paste0(outcome_name, " ~ ", risk_var, " + ", occupation_var)
    )

    formula_with_attitude <- as.formula(
      paste0(outcome_name, " ~ ", risk_var, " + ", occupation_var, " + ", attitude_var)
    )

    model_list <- list(
      "Without attitude" = lm(formula_without_attitude, data = data),
      "With attitude" = lm(formula_with_attitude, data = data)
    )

    for (model_label in names(model_list)) {

      fit <- model_list[[model_label]]
      coef_table <- summary(fit)$coefficients
      df_residual <- df.residual(fit)

      eta_table <- effectsize::eta_squared(fit, partial = TRUE)
      eta_table <- as.data.frame(eta_table)

      for (predictor_name in risk_var) {

        if (predictor_name %in% rownames(coef_table)) {

          t_value <- coef_table[predictor_name, "t value"]
          p_value <- coef_table[predictor_name, "Pr(>|t|)"]
          partial_eta_sq_t <- t_value^2 / (t_value^2 + df_residual)

          partial_eta_sq_effectsize <- NA_real_

          if ("Parameter" %in% names(eta_table)) {
            matched_row <- eta_table[eta_table$Parameter == predictor_name, , drop = FALSE]
            if (nrow(matched_row) == 1) {
              partial_eta_sq_effectsize <- matched_row$Eta2_partial
            }
          }

          results_list[[row_index]] <- data.frame(
            Outcome = outcome_name,
            Predictor = "Heroism",
            Model = model_label,
            t_value = t_value,
            p_value = p_value,
            partial_eta_sq_effectsize = partial_eta_sq_effectsize,
            stringsAsFactors = FALSE
          )

          row_index <- row_index + 1
        }
      }
    }
  }

  results_table <- do.call(rbind, results_list)

  results_table$t_value <- round(results_table$t_value, 3)
  results_table$p_value <- round(results_table$p_value, 3)
  results_table$partial_eta_sq_effectsize <- round(results_table$partial_eta_sq_effectsize, 3)

  rownames(results_table) <- NULL
  results_table
}
scale_scores$Heroism_c <- scale(scale_scores$Heroism)
effect_table <- make_prereg_effect_table(
  data = scale_scores,
  outcomes = c(
    "GlobalGratitude",
    "criticism_items_G_mean", "criticism_items_S_mean",
    "DemandSupp_G_mean", "DemandSupp_S_mean",
    "GlobalVictim",
    "Villain_G_mean", "Villain_S_mean",
    "Endure_G_mean", "Endure_S_mean",
    "SelfExploit_G_mean", "SelfExploit_S_mean",
    "GlobalSupportExpl"
  )
)

#effect_table
effect_table_wide <- effect_table |>
  mutate(
    p_value = ifelse(p_value < .001, "< .001", sprintf("%.3f", p_value)),
    t_value = sprintf("%.3f", t_value),
    partial_eta_sq_effectsize = sprintf("%.3f", partial_eta_sq_effectsize)
  ) |>
  pivot_wider(
    names_from = Model,
    values_from = c(t_value, p_value, partial_eta_sq_effectsize),
    names_vary = "slowest"
  ) |>
  rename(
    `t1` = `t_value_Without attitude`,
    `p1` = `p_value_Without attitude`,
    `η²p1` = `partial_eta_sq_effectsize_Without attitude`,
    `t2` = `t_value_With attitude`,
    `p2` = `p_value_With attitude`,
    `η²p2` = `partial_eta_sq_effectsize_With attitude`
  )

kable(
  effect_table_wide,
  format = "html",
  caption = "Summary main p-values",
  align = c("l", "l", "r", "r", "r", "r", "r", "r"),
  escape = TRUE
) |>
  add_header_above(c(" " = 2, "Without attitude" = 3, "With attitude" = 3)) |>
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE
  ) |>
  column_spec(5, border_right = TRUE) |>
  collapse_rows(columns = 1, valign = "top")
Summary main p-values
Without attitude
With attitude
Outcome Predictor t1 p1 η²p1 t2 p2 η²p2
GlobalGratitude Heroism 24.043 < .001 0.325 11.001 < .001 0.379
criticism_items_G_mean Heroism -18.102 < .001 0.219 -7.911 < .001 0.241
criticism_items_S_mean Heroism -8.899 < .001 0.065 -4.769 < .001 0.065
DemandSupp_G_mean Heroism -2.676 0.008 0.007 -2.813 0.005 0.007
DemandSupp_S_mean Heroism 10.362 < .001 0.090 4.532 < .001 0.093
GlobalVictim Heroism 14.089 < .001 0.153 7.705 < .001 0.157
Villain_G_mean Heroism 8.017 < .001 0.047 5.439 < .001 0.047
Villain_S_mean Heroism 8.726 < .001 0.076 5.644 < .001 0.077
Endure_G_mean Heroism 9.945 < .001 0.078 5.008 < .001 0.079
Endure_S_mean Heroism 0.798 0.425 0.000 -0.619 0.536 0.000
SelfExploit_G_mean Heroism 6.379 < .001 0.032 1.233 0.218 0.033
SelfExploit_S_mean Heroism 4.192 < .001 0.014 2.315 0.021 0.014
GlobalSupportExpl Heroism -3.687 < .001 0.012 -0.161 0.872 0.013
effect_table_pretty <- effect_table |>
  mutate(
    p_value = ifelse(p_value < .001, "< .001", sprintf("%.3f", p_value)),
    t_value = sprintf("%.3f", t_value),
    partial_eta_sq_effectsize = sprintf("%.3f", partial_eta_sq_effectsize)
  )

kable(
  effect_table_pretty,
  format = "html",
  caption = "Effects of Risk and Help across outcomes",
  align = c("l", "l", "l", "r", "r", "r")
) |>
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "left"
  ) |>
  collapse_rows(columns = 1, valign = "top")

5. Credibility ratings interactions

In exploratory analyses: Credibility ratings were also included as a moderator to assess whether the effectiveness of our manipulations depends on the perceived credibility of the manipulation. It can be expected that the more credible the manipulation is, the more effective the manipulation.

cat("Global score of gratitude")
## Global score of gratitude
summary(mod <- lm(GlobalGratitude ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = GlobalGratitude ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.30147 -0.58448  0.03834  0.62492  2.12234 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)  
## (Intercept)                          0.006456   0.087144   0.074   0.9410  
## Credibility_num                     -0.001163   0.016930  -0.069   0.9452  
## Risk_cond                            0.090986   0.174287   0.522   0.6017  
## Help_cond                            0.308012   0.174287   1.767   0.0774 .
## Credibility_num:Risk_cond            0.007715   0.033861   0.228   0.8198  
## Credibility_num:Help_cond           -0.016628   0.033861  -0.491   0.6235  
## Risk_cond:Help_cond                 -0.237726   0.348575  -0.682   0.4954  
## Credibility_num:Risk_cond:Help_cond  0.032403   0.067722   0.478   0.6324  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8345 on 1184 degrees of freedom
## Multiple R-squared:  0.02458,    Adjusted R-squared:  0.01882 
## F-statistic: 4.263 on 7 and 1184 DF,  p-value: 0.0001156
cat("####")
## ####
cat("General Criticism acceptability")
## General Criticism acceptability
summary(mod <- lm(criticism_items_G_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = criticism_items_G_mean ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8818 -0.8374 -0.0456  0.8087  4.2877 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          2.84379    0.11486  24.759   <2e-16 ***
## Credibility_num                     -0.03536    0.02232  -1.585   0.1133    
## Risk_cond                            0.30344    0.22972   1.321   0.1868    
## Help_cond                           -0.18353    0.22972  -0.799   0.4245    
## Credibility_num:Risk_cond           -0.10788    0.04463  -2.417   0.0158 *  
## Credibility_num:Help_cond            0.01318    0.04463   0.295   0.7677    
## Risk_cond:Help_cond                  0.28978    0.45944   0.631   0.5283    
## Credibility_num:Risk_cond:Help_cond -0.04685    0.08926  -0.525   0.5998    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.1 on 1184 degrees of freedom
## Multiple R-squared:  0.02114,    Adjusted R-squared:  0.01535 
## F-statistic: 3.653 on 7 and 1184 DF,  p-value: 0.0006576
cat("####")
## ####
cat("Specific criticism acceptability")
## Specific criticism acceptability
summary(mod <- lm(criticism_items_S_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = criticism_items_S_mean ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.4503 -0.7725 -0.2483  0.6985  2.7099 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          2.305648   0.092862  24.829   <2e-16 ***
## Credibility_num                     -0.002717   0.018041  -0.151    0.880    
## Risk_cond                            0.291661   0.185724   1.570    0.117    
## Help_cond                           -0.068135   0.185724  -0.367    0.714    
## Credibility_num:Risk_cond           -0.054260   0.036082  -1.504    0.133    
## Credibility_num:Help_cond            0.014194   0.036082   0.393    0.694    
## Risk_cond:Help_cond                 -0.239338   0.371449  -0.644    0.519    
## Credibility_num:Risk_cond:Help_cond  0.042405   0.072165   0.588    0.557    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8892 on 1183 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.002599,   Adjusted R-squared:  -0.003302 
## F-statistic: 0.4405 on 7 and 1183 DF,  p-value: 0.877
cat("####")
## ####
cat("General support for workers' demands")
## General support for workers' demands
summary(mod <- lm(DemandSupp_G_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = DemandSupp_G_mean ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1740 -0.9467  0.0575  1.0448  3.1386 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          3.958181   0.148381  26.676   <2e-16 ***
## Credibility_num                      0.005129   0.028828   0.178    0.859    
## Risk_cond                            0.094212   0.296762   0.317    0.751    
## Help_cond                           -0.208723   0.296762  -0.703    0.482    
## Credibility_num:Risk_cond           -0.016344   0.057655  -0.283    0.777    
## Credibility_num:Help_cond            0.043884   0.057655   0.761    0.447    
## Risk_cond:Help_cond                  0.032784   0.593525   0.055    0.956    
## Credibility_num:Risk_cond:Help_cond -0.073617   0.115311  -0.638    0.523    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.421 on 1184 degrees of freedom
## Multiple R-squared:  0.004364,   Adjusted R-squared:  -0.001522 
## F-statistic: 0.7414 on 7 and 1184 DF,  p-value: 0.6369
cat("####")
## ####
cat("Specific support for workers' demands")
## Specific support for workers' demands
summary(mod <- lm(DemandSupp_S_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = DemandSupp_S_mean ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.1049 -0.7632  0.0502  0.9507  2.1591 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          5.07024    0.13245  38.279   <2e-16 ***
## Credibility_num                     -0.01798    0.02573  -0.699    0.485    
## Risk_cond                           -0.05596    0.26491  -0.211    0.833    
## Help_cond                            0.25892    0.26491   0.977    0.329    
## Credibility_num:Risk_cond            0.03514    0.05147   0.683    0.495    
## Credibility_num:Help_cond           -0.05252    0.05147  -1.021    0.308    
## Risk_cond:Help_cond                  0.47247    0.52982   0.892    0.373    
## Credibility_num:Risk_cond:Help_cond -0.10340    0.10293  -1.005    0.315    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.268 on 1184 degrees of freedom
## Multiple R-squared:  0.004796,   Adjusted R-squared:  -0.001088 
## F-statistic: 0.8151 on 7 and 1184 DF,  p-value: 0.5747
cat("####")
## ####
cat("Global score of victim perception")
## Global score of victim perception
summary(mod <- lm(GlobalVictim ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = GlobalVictim ~ Credibility_num * Risk_cond * Help_cond, 
##     data = scale_scores)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.61210 -0.51578 -0.01119  0.50568  2.43074 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)
## (Intercept)                         -0.06764    0.08449  -0.801    0.424
## Credibility_num                      0.01343    0.01642   0.818    0.414
## Risk_cond                            0.18612    0.16898   1.101    0.271
## Help_cond                            0.10905    0.16898   0.645    0.519
## Credibility_num:Risk_cond            0.02353    0.03283   0.717    0.474
## Credibility_num:Help_cond           -0.03399    0.03283  -1.035    0.301
## Risk_cond:Help_cond                  0.24633    0.33797   0.729    0.466
## Credibility_num:Risk_cond:Help_cond -0.06197    0.06566  -0.944    0.345
## 
## Residual standard error: 0.8091 on 1184 degrees of freedom
## Multiple R-squared:  0.03834,    Adjusted R-squared:  0.03265 
## F-statistic: 6.743 on 7 and 1184 DF,  p-value: 7.376e-08
cat("####")
## ####
cat("General impunity")
## General impunity
summary(mod <- lm(Villain_G_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = Villain_G_mean ~ Credibility_num * Risk_cond * Help_cond, 
##     data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9538 -0.8512  0.1192  0.8275  3.2380 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          3.95782    0.13320  29.713   <2e-16 ***
## Credibility_num                     -0.02080    0.02588  -0.804    0.422    
## Risk_cond                           -0.04389    0.26640  -0.165    0.869    
## Help_cond                            0.13874    0.26640   0.521    0.603    
## Credibility_num:Risk_cond            0.00945    0.05176   0.183    0.855    
## Credibility_num:Help_cond           -0.03394    0.05176  -0.656    0.512    
## Risk_cond:Help_cond                 -0.38616    0.53280  -0.725    0.469    
## Credibility_num:Risk_cond:Help_cond  0.08580    0.10351   0.829    0.407    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.275 on 1184 degrees of freedom
## Multiple R-squared:  0.001703,   Adjusted R-squared:  -0.0042 
## F-statistic: 0.2885 on 7 and 1184 DF,  p-value: 0.9586
cat("####")
## ####
cat("Specific impunity")
## Specific impunity
summary(mod <- lm(Villain_S_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = Villain_S_mean ~ Credibility_num * Risk_cond * Help_cond, 
##     data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.4391 -0.9733  0.1483  1.2659  2.3249 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          4.68710    0.16988  27.590   <2e-16 ***
## Credibility_num                      0.07142    0.03301   2.164   0.0307 *  
## Risk_cond                           -0.11434    0.33977  -0.337   0.7365    
## Help_cond                            0.05159    0.33977   0.152   0.8793    
## Credibility_num:Risk_cond            0.08334    0.06601   1.262   0.2070    
## Credibility_num:Help_cond           -0.01871    0.06601  -0.283   0.7768    
## Risk_cond:Help_cond                 -0.42301    0.67953  -0.623   0.5337    
## Credibility_num:Risk_cond:Help_cond  0.09317    0.13202   0.706   0.4805    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.627 on 1184 degrees of freedom
## Multiple R-squared:  0.01449,    Adjusted R-squared:  0.008666 
## F-statistic: 2.487 on 7 and 1184 DF,  p-value: 0.01544
cat("####")
## ####
cat("General enduring measure")
## General enduring measure
summary(mod <- lm(Endure_G_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = Endure_G_mean ~ Credibility_num * Risk_cond * Help_cond, 
##     data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2281 -0.7281  0.0925  0.7929  3.1579 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          4.022808   0.126039  31.917   <2e-16 ***
## Credibility_num                     -0.002479   0.024487  -0.101    0.919    
## Risk_cond                            0.123229   0.252077   0.489    0.625    
## Help_cond                            0.331684   0.252077   1.316    0.188    
## Credibility_num:Risk_cond            0.034036   0.048974   0.695    0.487    
## Credibility_num:Help_cond           -0.051864   0.048974  -1.059    0.290    
## Risk_cond:Help_cond                  0.233871   0.504154   0.464    0.643    
## Credibility_num:Risk_cond:Help_cond -0.035112   0.097948  -0.358    0.720    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.207 on 1184 degrees of freedom
## Multiple R-squared:  0.01702,    Adjusted R-squared:  0.01121 
## F-statistic: 2.928 on 7 and 1184 DF,  p-value: 0.004834
cat("####")
## ####
cat("Specific enduring measure")
## Specific enduring measure
summary(mod <- lm(Endure_S_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = Endure_S_mean ~ Credibility_num * Risk_cond * Help_cond, 
##     data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8703 -1.0687 -0.1195  0.8805  3.4731 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          3.75564    0.13899  27.021   <2e-16 ***
## Credibility_num                     -0.02770    0.02700  -1.026    0.305    
## Risk_cond                            0.35414    0.27798   1.274    0.203    
## Help_cond                            0.17343    0.27798   0.624    0.533    
## Credibility_num:Risk_cond           -0.06463    0.05401  -1.197    0.232    
## Credibility_num:Help_cond           -0.02235    0.05401  -0.414    0.679    
## Risk_cond:Help_cond                 -0.69606    0.55596  -1.252    0.211    
## Credibility_num:Risk_cond:Help_cond  0.10406    0.10801   0.963    0.336    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.331 on 1184 degrees of freedom
## Multiple R-squared:  0.004947,   Adjusted R-squared:  -0.0009361 
## F-statistic: 0.8409 on 7 and 1184 DF,  p-value: 0.5534
cat("####")
## ####
cat("General measure of belief that workers would accept exploitative policies")
## General measure of belief that workers would accept exploitative policies
summary(mod <- lm(SelfExploit_G_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = SelfExploit_G_mean ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6077 -0.6077  0.1242  0.7822  2.9890 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          4.534749   0.125028  36.270   <2e-16 ***
## Credibility_num                     -0.056084   0.024291  -2.309   0.0211 *  
## Risk_cond                           -0.004353   0.250056  -0.017   0.9861    
## Help_cond                            0.270983   0.250056   1.084   0.2787    
## Credibility_num:Risk_cond            0.077725   0.048581   1.600   0.1099    
## Credibility_num:Help_cond           -0.015329   0.048581  -0.316   0.7524    
## Risk_cond:Help_cond                 -0.675584   0.500112  -1.351   0.1770    
## Credibility_num:Risk_cond:Help_cond  0.171893   0.097163   1.769   0.0771 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.197 on 1184 degrees of freedom
## Multiple R-squared:  0.0407, Adjusted R-squared:  0.03503 
## F-statistic: 7.176 on 7 and 1184 DF,  p-value: 1.984e-08
cat("####")
## ####
cat("Specific measure of belief that workers would accept exploitative policies")
## Specific measure of belief that workers would accept exploitative policies
summary(mod <- lm(SelfExploit_S_mean ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = SelfExploit_S_mean ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8504 -1.0530 -0.3467  0.8344  4.5587 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          2.586312   0.134539  19.224   <2e-16 ***
## Credibility_num                     -0.025316   0.026138  -0.969    0.333    
## Risk_cond                            0.463814   0.269077   1.724    0.085 .  
## Help_cond                            0.209138   0.269077   0.777    0.437    
## Credibility_num:Risk_cond           -0.083220   0.052277  -1.592    0.112    
## Credibility_num:Help_cond            0.007354   0.052277   0.141    0.888    
## Risk_cond:Help_cond                  0.164770   0.538154   0.306    0.760    
## Credibility_num:Risk_cond:Help_cond  0.025814   0.104554   0.247    0.805    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.288 on 1184 degrees of freedom
## Multiple R-squared:  0.01572,    Adjusted R-squared:  0.0099 
## F-statistic: 2.701 on 7 and 1184 DF,  p-value: 0.008842
cat("####")
## ####
cat("Global measure of support for exploitative policied")
## Global measure of support for exploitative policied
summary(mod <- lm(GlobalSupportExpl ~ Credibility_num*Risk_cond*Help_cond, data = scale_scores))
## 
## Call:
## lm(formula = GlobalSupportExpl ~ Credibility_num * Risk_cond * 
##     Help_cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3052 -0.6842 -0.1309  0.5302  4.0162 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)  
## (Intercept)                          0.115912   0.087797   1.320   0.1870  
## Credibility_num                     -0.023151   0.017057  -1.357   0.1750  
## Risk_cond                           -0.026566   0.175594  -0.151   0.8798  
## Help_cond                           -0.009079   0.175594  -0.052   0.9588  
## Credibility_num:Risk_cond           -0.016757   0.034115  -0.491   0.6234  
## Credibility_num:Help_cond            0.014389   0.034115   0.422   0.6733  
## Risk_cond:Help_cond                 -0.551888   0.351188  -1.571   0.1163  
## Credibility_num:Risk_cond:Help_cond  0.117906   0.068229   1.728   0.0842 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8407 on 1184 degrees of freedom
## Multiple R-squared:  0.01004,    Adjusted R-squared:  0.004185 
## F-statistic: 1.715 on 7 and 1184 DF,  p-value: 0.1016
cat("####")
## ####

6. Interactions

Any significant interaction between key variables will be explored to assess the shape of the detected interaction using contrast analyses using the package emmeans.

The following interactions with occupations were found:

  • Helpfulness x Occupation –> Specific perception that workers will accept Exploitative policies
summary(mod <- lm(SelfExploit_G_mean ~ Risk_cond*Help_cond + Risk_cond:Cond + Help_cond:Cond, data = scale_scores))
## 
## Call:
## lm(formula = SelfExploit_G_mean ~ Risk_cond * Help_cond + Risk_cond:Cond + 
##     Help_cond:Cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6921 -0.6781  0.0766  0.8007  3.0766 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.258871   0.034708 122.705  < 2e-16 ***
## Risk_cond            0.370103   0.069501   5.325 1.21e-07 ***
## Help_cond            0.189842   0.069501   2.732  0.00640 ** 
## Risk_cond:Help_cond  0.195528   0.138833   1.408  0.15928    
## Risk_cond:Cond1     -0.003595   0.069548  -0.052  0.95878    
## Help_cond:Cond1     -0.205204   0.069548  -2.951  0.00323 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.197 on 1186 degrees of freedom
## Multiple R-squared:  0.03892,    Adjusted R-squared:  0.03486 
## F-statistic: 9.605 on 5 and 1186 DF,  p-value: 5.329e-09
emmeans(mod, specs = ~ Help_cond | Cond) |> 
  pairs()
## Cond = Psych:
##  contrast                       estimate     SE   df t.ratio p.value
##  (Help_cond-0.5) - Help_cond0.5   0.0154 0.0982 1186   0.156  0.8758
## 
## Cond = Weld:
##  contrast                       estimate     SE   df t.ratio p.value
##  (Help_cond-0.5) - Help_cond0.5  -0.3950 0.0984 1186  -4.014  0.0001
## 
## Results are averaged over the levels of: Risk_cond

This effect actually only works in the Welders condition.

  • Helpfulness x Occupation –> General measure that workers will endure pain
summary(mod <- lm(Endure_G_mean ~ Risk_cond*Help_cond + Risk_cond:Cond + Help_cond:Cond, data = scale_scores))
## 
## Call:
## lm(formula = Endure_G_mean ~ Risk_cond * Help_cond + Risk_cond:Cond + 
##     Help_cond:Cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2803 -0.7351  0.0670  0.8170  3.2212 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.01244    0.03491 114.939  < 2e-16 ***
## Risk_cond            0.28326    0.06990   4.052 5.41e-05 ***
## Help_cond            0.07506    0.06990   1.074   0.2831    
## Risk_cond:Help_cond  0.06840    0.13964   0.490   0.6244    
## Risk_cond:Cond1      0.01206    0.06995   0.172   0.8632    
## Help_cond:Cond1     -0.15516    0.06995  -2.218   0.0267 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.204 on 1186 degrees of freedom
## Multiple R-squared:  0.01966,    Adjusted R-squared:  0.01553 
## F-statistic: 4.758 on 5 and 1186 DF,  p-value: 0.0002611
emmeans(mod, specs = ~ Help_cond | Cond) |> 
  pairs()
## Cond = Psych:
##  contrast                       estimate     SE   df t.ratio p.value
##  (Help_cond-0.5) - Help_cond0.5   0.0801 0.0988 1186   0.811  0.4177
## 
## Cond = Weld:
##  contrast                       estimate     SE   df t.ratio p.value
##  (Help_cond-0.5) - Help_cond0.5  -0.2302 0.0990 1186  -2.326  0.0202
## 
## Results are averaged over the levels of: Risk_cond

This effect also only exist in the welder condition.

More niche interactions:

  • Risk x Cond + Attitude –> Global victim perception
summary(mod <- lm(GlobalVictim ~ Risk_cond*Help_cond + Risk_cond:Cond + Help_cond:Cond + Attitude, data = scale_scores))
## 
## Call:
## lm(formula = GlobalVictim ~ Risk_cond * Help_cond + Risk_cond:Cond + 
##     Help_cond:Cond + Attitude, data = scale_scores)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.48769 -0.48376  0.00001  0.48179  2.44653 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.003267   0.021771  -0.150 0.880734    
## Risk_cond            0.251458   0.043758   5.747 1.16e-08 ***
## Help_cond           -0.160353   0.044262  -3.623 0.000304 ***
## Attitude             0.307251   0.022287  13.786  < 2e-16 ***
## Risk_cond:Help_cond -0.094747   0.087111  -1.088 0.276964    
## Risk_cond:Cond1      0.120426   0.043776   2.751 0.006033 ** 
## Help_cond:Cond1      0.033425   0.043652   0.766 0.444005    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.751 on 1185 degrees of freedom
## Multiple R-squared:  0.1706, Adjusted R-squared:  0.1664 
## F-statistic: 40.63 on 6 and 1185 DF,  p-value: < 2.2e-16
emmeans(mod, specs = ~ Risk_cond | Cond) |> 
  pairs()
## Cond = Psych:
##  contrast                       estimate     SE   df t.ratio p.value
##  (Risk_cond-0.5) - Risk_cond0.5   -0.372 0.0616 1185  -6.036  <.0001
## 
## Cond = Weld:
##  contrast                       estimate     SE   df t.ratio p.value
##  (Risk_cond-0.5) - Risk_cond0.5   -0.131 0.0622 1185  -2.107  0.0353
## 
## Results are averaged over the levels of: Help_cond

Effects are sig in both, but especially strong for psychiatrists.

  • Risk x Cond + Attitude –> Specific impunity
summary(mod <- lm(Villain_S_mean ~ Risk_cond*Help_cond + Risk_cond:Cond + Help_cond:Cond + Attitude, data = scale_scores))
## 
## Call:
## lm(formula = Villain_S_mean ~ Risk_cond * Help_cond + Risk_cond:Cond + 
##     Help_cond:Cond + Attitude, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6726 -0.9255  0.2528  1.2880  3.2528 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.036362   0.046235 108.929  < 2e-16 ***
## Risk_cond            0.241574   0.092927   2.600  0.00945 ** 
## Help_cond           -0.148110   0.093998  -1.576  0.11537    
## Attitude             0.340083   0.047330   7.185 1.18e-12 ***
## Risk_cond:Help_cond -0.008992   0.184994  -0.049  0.96124    
## Risk_cond:Cond1      0.198742   0.092967   2.138  0.03274 *  
## Help_cond:Cond1      0.021687   0.092703   0.234  0.81508    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.595 on 1185 degrees of freedom
## Multiple R-squared:  0.05183,    Adjusted R-squared:  0.04703 
## F-statistic:  10.8 on 6 and 1185 DF,  p-value: 1.017e-11
emmeans(mod, specs = ~ Risk_cond | Cond) |> 
  pairs()
## Cond = Psych:
##  contrast                       estimate    SE   df t.ratio p.value
##  (Risk_cond-0.5) - Risk_cond0.5  -0.4403 0.131 1185  -3.365  0.0008
## 
## Cond = Weld:
##  contrast                       estimate    SE   df t.ratio p.value
##  (Risk_cond-0.5) - Risk_cond0.5  -0.0428 0.132 1185  -0.324  0.7457
## 
## Results are averaged over the levels of: Help_cond

Only work in psychiatrists

  • Help x Risk –> Specific measure that workers will willingly accept exploitative policies
summary(mod <- lm(SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond +     Cond:Help_cond + Cond, data = scale_scores))
## 
## Call:
## lm(formula = SelfExploit_S_mean ~ Risk_cond * Help_cond + Cond:Risk_cond + 
##     Cond:Help_cond + Cond, data = scale_scores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7586 -1.0919 -0.3045  0.8212  4.7230 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.463057   0.037346  65.952  < 2e-16 ***
## Risk_cond            0.048563   0.074800   0.649  0.51631    
## Help_cond            0.240380   0.074819   3.213  0.00135 ** 
## Cond1                0.007149   0.037416   0.191  0.84850    
## Risk_cond:Help_cond  0.302526   0.149674   2.021  0.04348 *  
## Risk_cond:Cond1     -0.104197   0.074836  -1.392  0.16408    
## Help_cond:Cond1     -0.060950   0.074834  -0.814  0.41554    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.288 on 1185 degrees of freedom
## Multiple R-squared:  0.01486,    Adjusted R-squared:  0.009871 
## F-statistic: 2.979 on 6 and 1185 DF,  p-value: 0.006835
emmeans(mod, specs = ~ Help_cond | Risk_cond) |> 
  pairs()
## Risk_cond = -0.5:
##  contrast                       estimate    SE   df t.ratio p.value
##  (Help_cond-0.5) - Help_cond0.5  -0.0891 0.106 1185  -0.839  0.4019
## 
## Risk_cond =  0.5:
##  contrast                       estimate    SE   df t.ratio p.value
##  (Help_cond-0.5) - Help_cond0.5  -0.3916 0.105 1185  -3.717  0.0002
## 
## Results are averaged over the levels of: Cond

The helpfulness framing only had an effect in the High risk condition.