What we know of occupational heroism

Some occupations are more likely than others to be perceived as being heroic. Firefighters, soldiers, police officers, or nurses, are often depicted in the media as heroic figures. Heroism, in itself, is defined through self-sacrifice: an heroic action is something that exposes one to risk, in order to help others. However, heroism is also defined as supererogatory actions: going above and beyond what is expected of you. Therefore, the notion of occupational heroes — workers heroised for doing their mission, become somewhat of a paradox (see Gölz, 2021).

Not much research has been done regarding heroic collectives. However, recent findings emphasise the relevance of heroism for exploitation of workers: heroised workers are perceived as more likely to accept exploitative policies (Stanley et al., 2023; Stanley & Kay, 2024). In one study, Stanley and Kay (2024, study 5) went one notch further by describing how manipulating occupational heroism resulted in increased support for exploiting the workers, in a sample of US respondents.

These findings urge us to understand the societal consequences of occupational heroism. As demonstrated during the Covid-19 pandemic, it is possible for occupations as a whole to be suddenly heroised in the media. Crises might be particularly fertile environments for campaigns heroising key-workers, and maybe to justify their sacrifice for the greater good when governments fail to respond in a manner that would protect all people.

Our research project therefore investigates both the causes and the consequences of perceptions of occupational heroism. It also questions the Janusian nature of occupational heroism: the ambiguous positive and negative outcomes associated with perceived heroism.

The current study follows previous studies conducted which emphasised that 1) perceived exposure to risk and perceived helpfulness could causally increase perceived occupationial heroism, and 2) perceived occupational heroism correlated with array of societally relevant outcomes. Key studies from our research programs are described below:

  1. manipulating a description of an occupation as exposed to risk (vs bored) increased occupational heroism perception across five target occupations

    Ethics: # 202517425163519922 (approved Mar 21,

    Sample: 1360 UK residents (representative sample)

    Manipulation: Narrative descriptions emphasising exposure to physical risk (vs boredom) and altruistic (vs self-centered) motivations

    Target occupations: Nurses; Firefighters; Police officers; Psychiatrists; Underwater welders

    Results: We successfully manipulated heroism overall. Looking within specific occupations showed that we changed the perception of 3 out of 5 groups: Firefighters, Underwater welders, and Psychiatrists. In particular, whereas our manipulation of risk was effective in changing the perception of heroism in these groups, our manipulation of selflessness had little to no effect on perceptions of heroism.

    Links: Full report, Data, Codes and Material, Pre-registration


  2. manipulating a description of an occupation as helpful (vs unhelpful) increased occupational heroism perception across three target occupations

    Ethics: # 202517490371159993(approved Apr 06, 2025)

    Sample: 816 UK residents (representative sample) 

    Manipulation: Narrative descriptions emphasising altruistic motivations (vs non-altruistic motivations) and altruistic outcomes (vs non altruistic outcomes)

    Target occupations: Firefighters; Psychiatrists; Underwater welders 

    Results: We successfully manipulated heroism overall. Describing an occupation as associated with altruistic outcomes (i.e., effectively helping people) produced a larger effect size than describing an occupation as associated with altruistic motivation (i.e., wanting to help people). Looking within specific occupations showed that altruistic outcomes explained heroism perceptions among psychiatrists and welders, but not firefighters. Taken together, this study underlines that collective heroism is about being helpful to people above and beyond being driven by selfless motivations.

    Links: Full report, Data, Codes, Material, Pre-registration


  1. We conducted a large correlational survey (N = 840 UK representative sample) the following hypotheses:

    • H1: Perceived occupational heroism predicts higher gratitude toward workers

    • H2: Perceived occupational heroism predicts reduced criticism acceptability

    • H3: Perceived occupational heroism predicts reduced support for demands from the workers

    • H4: Perceived occupational heroism predicts reduced perception of victim-related aspects (e.g., suffering, vulnerability)

    • H5: Perceived occupational heroism predicts increased impunity and motivation to de-regulate the occupation

    Ethics: # 2025175820653410122 (Approved September, 18, 2025)

    Sample: 840 UK residents (representative sample) 

    Target occupations: Nurses; Soldiers; Firefighters; Journalists; Psychiatrists; Underwater welders 

    Results: We found support for increased gratefulness, decreased criticism acceptability, and increased support for impunity. However, in contrast to our initial hypotheses, we observed that the pore people perceived workers to be heroic, the more they supported the workers’ demands, and the more they perceived them as victimised and suffering.

    Links: Full report, Data, Codes, Material, Pre-registration


Present Study

Following these studies, we manipulated exposure to physical risks (vs boredom) and helpfulness in two non-heroic target occupations: psychiatrists, underwater welders. We evaluated how these vignettes could increase perceived occupational heroism (replicating our previous findings), but also cause an array of outcomes that were previously identified as correlates of occupational heroism.

  • reported gratitude toward target group

  • acceptability of criticism/hate speech towards target group

  • support/opposition regarding demands from target group vs government

  • perceptions of target group being vulnerable, suffering, and needing protection

  • reported support for impunity of workers (not persecuting target workers not following regulations; and de-regulating the occupation).

In addition to these pairs of variables, three pairs of variables were added to the scale:

  • perceived willingness of workers to choose suffering rather than avoid it when needed

  • perceived willingness of workers to be exploited when needed

  • support for workers’ exploitation

While we initially hypothesised that heroism perception buffered perceptions of victimhood, we found correlational evidence that, the more heroic the occupations are perceived to be, the more participants acknowledged and reported wanting to protect workers from suffering, and supported demands of workers. In order to have further insights in why our findings did not match our theory-based predictions, we hypothesise that — despite heroism being positively correlated with perceptions of victimhood and suffering — heroised workers are perceived as more willing to choose to endure the suffering rather than try to avoid it. In other words:

Victim status does not differ from heroic status on the basis of their suffering or ability to suffer, but on the basis of choosing to suffer when it could be possible to abandon the duty.

In addition, whereas we initially thought that perceived heroism would reduce support for workers’ initiated demands (as asking for rewards defies self-sacrificing, a feature of heroism) — we found correlational evidence that the more heroic workers are perceived to be, the more people support their demands. This might be an extension of increased gratefulness towards heroised groups. This findings are at odds with previous fiindings that heroised workers are at risk of being exploited (Stanley et al., 2023; Stanley & Kay, 2024). On the basis of this literature, we revised our hypotheses to emphasise that people support heroised workers, reject their exploitation, but do perceive the workers as more likely to accept exploitative policies. In iother words:

People are not more likely to choose to exploit their heroes - they will even protect their heroes from exploitative policies, however: heroes are perceived as more likely to accept exploitative policies.

Our revised hypotheses are as follow:

  • 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).

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_2.0-1                 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.1            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.4      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.13         
## [118] RcppParallel_5.1.11-1 bslib_0.9.0           DEoptimR_1.1-4

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)
DF$IPAddress <- "XXXXXXX"
DF$LocationLatitude <- "XXXXXXX"

DF$LocationLongitude <- "XXXXXXX"
DF$prolID <- "XXXXXXX"
DF$STUDY_ID <- "XXXXXXX"
DF$SESSION_ID <- "XXXXXXX"
DF$PROLIFIC_PID <- "XXXXXXX"

write.csv(DF, "Experimental_Study_1_March2026.csv", row.names = F)
DF <- read.csv("Experimental_Study_1_March2026.csv", comment.char="#")


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 inter-item 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 (e.g., Item 2 of specific gratitude measure) <- Latent variable 1 (e.g., 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
)

summary(fit, fit.measures = TRUE, standardized = TRUE)
## 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. 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). We thus decide to remove it, resulting in a slight increase in internal reliability of Specific enduring (omega = .66 before vs. omega = .69 after removing it; see omega table above).

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 following the specific measure of support for workers’ demands. 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
)

#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

✅ 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 credibility 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 psychiatrist occupation.

H1 & H2: Heroism ~ Risk x Help

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

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

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

We established 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 are described below:

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):

Perceived 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 used 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)
}
summary(lm(scale_scores$Heroism ~ scale_scores$Risk_cond * scale_scores$Help_cond + scale_scores$Cond))
## 
## Call:
## lm(formula = scale_scores$Heroism ~ scale_scores$Risk_cond * 
##     scale_scores$Help_cond + scale_scores$Cond)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9420 -0.6615  0.0580  0.7831  2.7831 
## 
## Coefficients:
##                                               Estimate Std. Error t value
## (Intercept)                                    4.55607    0.03952 115.278
## scale_scores$Risk_cond                         0.26138    0.07906   3.306
## scale_scores$Help_cond                         0.18320    0.07908   2.317
## scale_scores$Cond1                            -0.14026    0.03962  -3.540
## scale_scores$Risk_cond:scale_scores$Help_cond  0.09363    0.15839   0.591
##                                               Pr(>|t|)    
## (Intercept)                                    < 2e-16 ***
## scale_scores$Risk_cond                        0.000975 ***
## scale_scores$Help_cond                        0.020696 *  
## scale_scores$Cond1                            0.000416 ***
## scale_scores$Risk_cond:scale_scores$Help_cond 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
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 were both dummy coded (-0.5, 0.5)

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

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

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

For each outcome, we evaluated two models: 1) one based on general-level items, 2) one based on specific-level items,

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

We performed 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 established 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).

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 that 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.

We 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.

  • 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 results for 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.


All effect sizes:

outcomes <- c(
  "Heroism",
  "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"
)


make_d_table <- function(data, outcomes, grouping_var, predictor_label) {

  results_list <- list()
  row_index <- 1

  for (outcome_name in outcomes) {

    keep_rows <- !is.na(data[[outcome_name]]) & !is.na(data[[grouping_var]])
    data_subset <- data[keep_rows, c(outcome_name, grouping_var)]

    formula_text <- paste0(outcome_name, " ~ ", grouping_var)
    formula_obj <- as.formula(formula_text)

    d_obj <- effectsize::cohens_d(formula_obj, data = data_subset)
    d_df <- as.data.frame(d_obj)

    d_value <- -d_df$Cohens_d[1]
    ci_low <- -d_df$CI_high[1]
    ci_high <- -d_df$CI_low[1]

    results_list[[row_index]] <- data.frame(
      Outcome = outcome_name,
      Predictor = predictor_label,
      N_used = nrow(data_subset),
      Cohens_d = d_value,
      CI_low = ci_low,
      CI_high = ci_high,
      stringsAsFactors = FALSE
    )

    row_index <- row_index + 1
  }

  results_table <- do.call(rbind, results_list)

  results_table$Cohens_d <- round(results_table$Cohens_d, 3)
  results_table$CI_low <- round(results_table$CI_low, 3)
  results_table$CI_high <- round(results_table$CI_high, 3)

  results_table$CI <- paste0("[", results_table$CI_low, ", ", results_table$CI_high, "]")

  rownames(results_table) <- NULL
  results_table
}

d_table_risk <- make_d_table(
  data = scale_scores,
  outcomes = outcomes,
  grouping_var = "Risk_cond",
  predictor_label = "Risk"
)

d_table_help <- make_d_table(
  data = scale_scores,
  outcomes = outcomes,
  grouping_var = "Help_cond",
  predictor_label = "Help"
)

d_table <- rbind(d_table_risk, d_table_help)
d_table$CI <- paste0("[", d_table$CI_low, ", ", d_table$CI_high, "]")

d_table_small <- d_table[, c("Outcome", "Predictor", "Cohens_d", "CI")]

d_table_pretty <- d_table_small

d_table_pretty$Section <- ifelse(d_table_pretty$Predictor == "Risk", "RISK", "HELP")

d_table_pretty <- d_table_pretty[, c("Section", "Outcome", "Predictor", "Cohens_d", "CI")]

d_table_pretty <- d_table_pretty[order(d_table_pretty$Section, d_table_pretty$Outcome), ]

rownames(d_table_pretty) <- NULL
d_table_pretty <- d_table %>%
  mutate(
    Outcome = factor(
      Outcome,
      levels = c(
        "Heroism",
        "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"
      )
    ),
    Predictor = factor(Predictor, levels = c("Risk", "Help")),
    CI = paste0("[", sprintf("%.3f", CI_low), ", ", sprintf("%.3f", CI_high), "]"),
    Cohens_d = sprintf("%.3f", Cohens_d)
  ) %>%
  arrange(Predictor, Outcome) %>%
  select(Predictor, Outcome, Cohens_d, CI)

gt_table <- d_table_pretty %>%
  gt(groupname_col = "Predictor") %>%
  cols_label(
    Outcome = "Outcome",
    Cohens_d = html("Cohen's <i>d</i>"),
    CI = "95% CI"
  ) %>%
  tab_header(
    title = "Effect sizes by outcome",
    subtitle = "Cohen's d for Risk and Help conditions"
  ) %>%
  cols_align(
    align = "center",
    columns = c(Cohens_d, CI)
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_row_groups()
  ) %>%
  tab_options(
    table.font.size = px(13),
    heading.title.font.size = px(18),
    heading.subtitle.font.size = px(13),
    row_group.font.size = px(14),
    data_row.padding = px(5),
    table.width = pct(85)
  )

gt_table
Effect sizes by outcome
Cohen's d for Risk and Help conditions
Outcome Cohen's d 95% CI
Risk
Heroism 0.184 [0.070, 0.298]
GlobalGratitude 0.152 [0.038, 0.266]
criticism_items_G_mean -0.208 [-0.322, -0.095]
criticism_items_S_mean 0.026 [-0.087, 0.140]
DemandSupp_G_mean 0.008 [-0.105, 0.122]
DemandSupp_S_mean 0.094 [-0.020, 0.207]
GlobalVictim 0.376 [0.261, 0.490]
Villain_G_mean 0.004 [-0.109, 0.118]
Villain_S_mean 0.184 [0.070, 0.298]
Endure_G_mean 0.242 [0.128, 0.356]
Endure_S_mean 0.027 [-0.086, 0.141]
SelfExploit_G_mean 0.316 [0.201, 0.430]
SelfExploit_S_mean 0.037 [-0.076, 0.151]
GlobalSupportExpl -0.130 [-0.243, -0.016]
Help
Heroism 0.125 [0.011, 0.239]
GlobalGratitude 0.268 [0.154, 0.382]
criticism_items_G_mean -0.102 [-0.216, 0.011]
criticism_items_S_mean 0.004 [-0.110, 0.117]
DemandSupp_G_mean 0.006 [-0.108, 0.119]
DemandSupp_S_mean -0.003 [-0.117, 0.110]
GlobalVictim -0.076 [-0.190, 0.037]
Villain_G_mean -0.024 [-0.137, 0.090]
Villain_S_mean -0.027 [-0.140, 0.087]
Endure_G_mean 0.058 [-0.055, 0.172]
Endure_S_mean 0.047 [-0.066, 0.161]
SelfExploit_G_mean 0.153 [0.039, 0.266]
SelfExploit_S_mean 0.192 [0.078, 0.306]
GlobalSupportExpl 0.075 [-0.039, 0.188]

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.

It is important to note that mediation should not be inferred from the models - as we are unable to control for potential covariates (see Pirlott & MacKinnon, 2016).

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 = 1000,
  parallel = "multicore",
  ncpus = 4
)

  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():  
##    7 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             1000
##   Number of successful bootstrap draws             993
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                            
##     Hlp_cnd    (a)     0.125    0.055    2.253    0.024    0.010    0.231
##   GlobalGratitude ~                                                      
##     Hlp_cnd (cprm)     0.165    0.040    4.107    0.000    0.085    0.244
##     Hersm_c    (b)     0.474    0.020   23.512    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.715    0.000    0.916    1.076
##    .GlobalGratitud    0.473    0.019   25.437    0.000    0.436    0.507
##    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.026    2.240    0.025    0.005    0.110
##     total             0.224    0.049    4.535    0.000    0.126    0.317
##    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.055  2.253  0.024
## 2 GlobalGratitude  ~       Help_cond   cprime 0.165 0.040  4.107  0.000
## 3 GlobalGratitude  ~       Heroism_c        b 0.474 0.020 23.512  0.000
## 4       Heroism_c ~~       Heroism_c          0.995 0.042 23.715  0.000
## 5 GlobalGratitude ~~ GlobalGratitude          0.473 0.019 25.437  0.000
## 6       Help_cond ~~       Help_cond          0.250 0.000     NA     NA
## 7        indirect :=             a*b indirect 0.059 0.026  2.240  0.025
## 8           total := cprime+indirect    total 0.224 0.049  4.535  0.000
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.010    0.231  0.125   0.062   0.125
## 2    0.085    0.244  0.165   0.098   0.195
## 3    0.435    0.515  0.474   0.563   0.563
## 4    0.916    1.076  0.995   0.996   0.996
## 5    0.436    0.507  0.473   0.667   0.667
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.005    0.110  0.059   0.035   0.070
## 8    0.126    0.317  0.224   0.133   0.266
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    17 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             1000
##   Number of successful bootstrap draws             983
## 
## Regressions:
##                            Estimate  Std.Err  z-value  P(>|z|) ci.lower
##   Heroism_c ~                                                          
##     Hlp_cnd    (a)            0.125    0.055    2.249    0.025    0.010
##   criticism_items_G_mean ~                                             
##     Hlp_cnd (cprm)           -0.049    0.057   -0.860    0.390   -0.159
##     Hersm_c    (b)           -0.517    0.031  -16.726    0.000   -0.579
##  ci.upper   Std.lv  Std.all
##                            
##     0.231    0.125    0.062
##                            
##     0.066   -0.049   -0.022
##    -0.456   -0.517   -0.467
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.995    0.042   23.627    0.000    0.916    1.076
##    .crtcsm_tms_G_m    0.958    0.042   22.897    0.000    0.875    1.041
##    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.029   -2.211    0.027   -0.121   -0.005
##     total            -0.114    0.065   -1.745    0.081   -0.246    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.055
## 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.042
## 6              Help_cond ~~              Help_cond           0.250 0.000
## 7               indirect :=                    a*b indirect -0.064 0.029
## 8                  total :=        cprime+indirect    total -0.114 0.065
##         z pvalue ci.lower ci.upper std.lv std.all std.nox
## 1   2.249  0.025    0.010    0.231  0.125   0.062   0.125
## 2  -0.860  0.390   -0.159    0.066 -0.049  -0.022  -0.044
## 3 -16.726  0.000   -0.579   -0.456 -0.517  -0.467  -0.467
## 4  23.627  0.000    0.916    1.076  0.995   0.996   0.996
## 5  22.897  0.000    0.875    1.041  0.958   0.781   0.781
## 6      NA     NA    0.250    0.250  0.250   1.000   0.250
## 7  -2.211  0.027   -0.121   -0.005 -0.064  -0.029  -0.058
## 8  -1.745  0.081   -0.246    0.011 -0.114  -0.051  -0.102
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    9 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             1000
##   Number of successful bootstrap draws             991
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Hlp_cnd    (a)        0.125    0.055    2.249    0.025    0.010    0.232
##   SelfExploit_G_mean ~                                                      
##     Hlp_cnd (cprm)        0.159    0.068    2.338    0.019    0.027    0.294
##     Hersm_c    (b)        0.212    0.038    5.521    0.000    0.137    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.611    0.000    0.914    1.076
##    .SelfExplt_G_mn    1.431    0.061   23.275    0.000    1.313    1.554
##    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    2.069    0.039    0.002    0.054
##     total             0.185    0.069    2.684    0.007    0.051    0.320
##    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.055  2.249  0.025
## 2 SelfExploit_G_mean  ~          Help_cond   cprime 0.159 0.068  2.338  0.019
## 3 SelfExploit_G_mean  ~          Heroism_c        b 0.212 0.038  5.521  0.000
## 4          Heroism_c ~~          Heroism_c          0.995 0.042 23.611  0.000
## 5 SelfExploit_G_mean ~~ SelfExploit_G_mean          1.431 0.061 23.275  0.000
## 6          Help_cond ~~          Help_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.026 0.013  2.069  0.039
## 8              total :=    cprime+indirect    total 0.185 0.069  2.684  0.007
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.010    0.232  0.125   0.062   0.125
## 2    0.027    0.294  0.159   0.065   0.131
## 3    0.137    0.290  0.212   0.174   0.174
## 4    0.914    1.076  0.995   0.996   0.996
## 5    1.313    1.554  1.431   0.964   0.964
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.002    0.054  0.026   0.011   0.022
## 8    0.051    0.320  0.185   0.076   0.152
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    16 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             1000
##   Number of successful bootstrap draws             984
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Hlp_cnd    (a)        0.125    0.055    2.257    0.024    0.011    0.231
##   SelfExploit_S_mean ~                                                      
##     Hlp_cnd (cprm)        0.229    0.073    3.127    0.002    0.091    0.377
##     Hersm_c    (b)        0.148    0.039    3.759    0.000    0.073    0.226
##    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.600    0.000    0.916    1.076
##    .SelfExplt_S_mn    1.638    0.063   25.799    0.000    1.510    1.770
##    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.887    0.059    0.001    0.040
##     total             0.247    0.074    3.344    0.001    0.111    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.055  2.257  0.024
## 2 SelfExploit_S_mean  ~          Help_cond   cprime 0.229 0.073  3.127  0.002
## 3 SelfExploit_S_mean  ~          Heroism_c        b 0.148 0.039  3.759  0.000
## 4          Heroism_c ~~          Heroism_c          0.995 0.042 23.600  0.000
## 5 SelfExploit_S_mean ~~ SelfExploit_S_mean          1.638 0.063 25.799  0.000
## 6          Help_cond ~~          Help_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.018 0.010  1.887  0.059
## 8              total :=    cprime+indirect    total 0.247 0.074  3.344  0.001
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.011    0.231  0.125   0.062   0.125
## 2    0.091    0.377  0.229   0.088   0.177
## 3    0.073    0.226  0.148   0.114   0.114
## 4    0.916    1.076  0.995   0.996   0.996
## 5    1.510    1.770  1.638   0.978   0.978
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.001    0.040  0.018   0.007   0.014
## 8    0.111    0.395  0.247   0.096   0.191
plot_mediation_models <- function(fit_list, predictor_name, predictor_label) {

  for (outcome_name in names(fit_list)) {

    fit <- fit_list[[outcome_name]]

    node_labels <- c(
      predictor_name,
      "Heroism_c",
      outcome_name
    )

    node_labels_pretty <- c(
      predictor_label,
      "Heroism",
      outcome_name
    )

    semPlot::semPaths(
      object = fit,
      what = "std",
      whatLabels = "std",
      layout = "tree",
      style = "ram",
      rotation = 2,
      residuals = FALSE,
      intercepts = FALSE,
      exoCov = FALSE,
      edge.label.cex = 1.1,
      sizeMan = 8,
      nCharNodes = 0,
      mar = c(4, 4, 4, 4),
      nodeLabels = node_labels_pretty
    )

    title(
      main = paste("Mediation model for", outcome_name)
    )
  }
}

plot_mediation_models(
  fit_list = fit_list,
  predictor_name = "Help_cond",
  predictor_label = "Help"
)

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 = 1000,
  parallel = "multicore",
  ncpus = 4
)

  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():  
##    5 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             1000
##   Number of successful bootstrap draws             995
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                            
##     Rsk_cnd    (a)     0.183    0.058    3.174    0.002    0.070    0.294
##   GlobalGratitude ~                                                      
##     Rsk_cnd (cprm)     0.040    0.039    1.026    0.305   -0.032    0.120
##     Hersm_c    (b)     0.477    0.020   23.636    0.000    0.439    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.775    0.000    0.908    1.069
##    .GlobalGratitud    0.479    0.019   25.201    0.000    0.442    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.028    3.181    0.001    0.034    0.141
##     total             0.128    0.048    2.652    0.008    0.035    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.058  3.174  0.002
## 2 GlobalGratitude  ~       Risk_cond   cprime 0.040 0.039  1.026  0.305
## 3 GlobalGratitude  ~       Heroism_c        b 0.477 0.020 23.636  0.000
## 4       Heroism_c ~~       Heroism_c          0.991 0.042 23.775  0.000
## 5 GlobalGratitude ~~ GlobalGratitude          0.479 0.019 25.201  0.000
## 6       Risk_cond ~~       Risk_cond          0.250 0.000     NA     NA
## 7        indirect :=             a*b indirect 0.088 0.028  3.181  0.001
## 8           total := cprime+indirect    total 0.128 0.048  2.652  0.008
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.294  0.183   0.092   0.184
## 2   -0.032    0.120  0.040   0.024   0.048
## 3    0.439    0.518  0.477   0.567   0.567
## 4    0.908    1.069  0.991   0.992   0.992
## 5    0.442    0.515  0.479   0.676   0.676
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.034    0.141  0.088   0.052   0.104
## 8    0.035    0.223  0.128   0.076   0.152
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    22 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             1000
##   Number of successful bootstrap draws             978
## 
## Regressions:
##                            Estimate  Std.Err  z-value  P(>|z|) ci.lower
##   Heroism_c ~                                                          
##     Rsk_cnd    (a)            0.183    0.058    3.160    0.002    0.070
##   criticism_items_G_mean ~                                             
##     Rsk_cnd (cprm)           -0.136    0.056   -2.443    0.015   -0.242
##     Hersm_c    (b)           -0.512    0.031  -16.670    0.000   -0.573
##  ci.upper   Std.lv  Std.all
##                            
##     0.295    0.183    0.092
##                            
##    -0.023   -0.136   -0.061
##    -0.452   -0.512   -0.462
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .Heroism_c         0.991    0.042   23.806    0.000    0.909    1.069
##    .crtcsm_tms_G_m    0.954    0.042   22.683    0.000    0.874    1.039
##    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.030   -3.120    0.002   -0.151   -0.036
##     total            -0.230    0.064   -3.603    0.000   -0.352   -0.106
##    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.058
## 2 criticism_items_G_mean  ~              Risk_cond   cprime -0.136 0.056
## 3 criticism_items_G_mean  ~              Heroism_c        b -0.512 0.031
## 4              Heroism_c ~~              Heroism_c           0.991 0.042
## 5 criticism_items_G_mean ~~ criticism_items_G_mean           0.954 0.042
## 6              Risk_cond ~~              Risk_cond           0.250 0.000
## 7               indirect :=                    a*b indirect -0.094 0.030
## 8                  total :=        cprime+indirect    total -0.230 0.064
##         z pvalue ci.lower ci.upper std.lv std.all std.nox
## 1   3.160  0.002    0.070    0.295  0.183   0.092   0.184
## 2  -2.443  0.015   -0.242   -0.023 -0.136  -0.061  -0.123
## 3 -16.670  0.000   -0.573   -0.452 -0.512  -0.462  -0.462
## 4  23.806  0.000    0.909    1.069  0.991   0.992   0.992
## 5  22.683  0.000    0.874    1.039  0.954   0.777   0.777
## 6      NA     NA    0.250    0.250  0.250   1.000   0.250
## 7  -3.120  0.002   -0.151   -0.036 -0.094  -0.042  -0.085
## 8  -3.603  0.000   -0.352   -0.106 -0.230  -0.104  -0.207
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    18 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             1000
##   Number of successful bootstrap draws             982
## 
## Regressions:
##                       Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                              
##     Rsk_cnd    (a)       0.183    0.058    3.163    0.002    0.070    0.295
##   DemandSupp_S_mean ~                                                      
##     Rsk_cnd (cprm)       0.050    0.071    0.701    0.483   -0.081    0.204
##     Hersm_c    (b)       0.376    0.041    9.078    0.000    0.294    0.456
##    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.743    0.000    0.909    1.069
##    .DemandSpp_S_mn    1.462    0.071   20.561    0.000    1.327    1.597
##    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    2.971    0.003    0.025    0.116
##     total             0.118    0.073    1.620    0.105   -0.014    0.280
##    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.058  3.163  0.002
## 2 DemandSupp_S_mean  ~         Risk_cond   cprime 0.050 0.071  0.701  0.483
## 3 DemandSupp_S_mean  ~         Heroism_c        b 0.376 0.041  9.078  0.000
## 4         Heroism_c ~~         Heroism_c          0.991 0.042 23.743  0.000
## 5 DemandSupp_S_mean ~~ DemandSupp_S_mean          1.462 0.071 20.561  0.000
## 6         Risk_cond ~~         Risk_cond          0.250 0.000     NA     NA
## 7          indirect :=               a*b indirect 0.069 0.023  2.971  0.003
## 8             total :=   cprime+indirect    total 0.118 0.073  1.620  0.105
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.295  0.183   0.092   0.184
## 2   -0.081    0.204  0.050   0.020   0.039
## 3    0.294    0.456  0.376   0.296   0.296
## 4    0.909    1.069  0.991   0.992   0.992
## 5    1.327    1.597  1.462   0.911   0.911
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.025    0.116  0.069   0.027   0.054
## 8   -0.014    0.280  0.118   0.047   0.093
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    15 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             1000
##   Number of successful bootstrap draws             985
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                           
##     Rsk_cnd    (a)    0.183    0.058    3.164    0.002    0.070    0.295
##   GlobalVictim ~                                                        
##     Rsk_cnd (cprm)    0.247    0.042    5.899    0.000    0.169    0.335
##     Hersm_c    (b)    0.308    0.024   12.824    0.000    0.261    0.353
##    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.759    0.000    0.908    1.069
##    .GlobalVictim      0.559    0.023   24.486    0.000    0.515    0.605
##    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.019    3.049    0.002    0.020    0.092
##     total             0.304    0.045    6.722    0.000    0.215    0.393
##    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.058  3.164  0.002    0.070
## 2 GlobalVictim  ~       Risk_cond   cprime 0.247 0.042  5.899  0.000    0.169
## 3 GlobalVictim  ~       Heroism_c        b 0.308 0.024 12.824  0.000    0.261
## 4    Heroism_c ~~       Heroism_c          0.991 0.042 23.759  0.000    0.908
## 5 GlobalVictim ~~    GlobalVictim          0.559 0.023 24.486  0.000    0.515
## 6    Risk_cond ~~       Risk_cond          0.250 0.000     NA     NA    0.250
## 7     indirect :=             a*b indirect 0.056 0.019  3.049  0.002    0.020
## 8        total := cprime+indirect    total 0.304 0.045  6.722  0.000    0.215
##   ci.upper std.lv std.all std.nox
## 1    0.295  0.183   0.092   0.184
## 2    0.335  0.247   0.150   0.301
## 3    0.353  0.308   0.374   0.374
## 4    1.069  0.991   0.992   0.992
## 5    0.605  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.393  0.304   0.185   0.369
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    50 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             1000
##   Number of successful bootstrap draws             950
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                           
##     Rsk_cnd    (a)    0.183    0.057    3.193    0.001    0.071    0.294
##   Villain_S_mean ~                                                      
##     Rsk_cnd (cprm)    0.223    0.088    2.525    0.012    0.044    0.404
##     Hersm_c    (b)    0.420    0.047    8.996    0.000    0.328    0.511
##    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.814    0.000    0.909    1.070
##    .Villain_S_mean    2.470    0.095   25.995    0.000    2.290    2.672
##    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    2.939    0.003    0.029    0.132
##     total             0.300    0.093    3.214    0.001    0.119    0.495
##    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.193  0.001    0.071
## 2 Villain_S_mean  ~       Risk_cond   cprime 0.223 0.088  2.525  0.012    0.044
## 3 Villain_S_mean  ~       Heroism_c        b 0.420 0.047  8.996  0.000    0.328
## 4      Heroism_c ~~       Heroism_c          0.991 0.042 23.814  0.000    0.909
## 5 Villain_S_mean ~~  Villain_S_mean          2.470 0.095 25.995  0.000    2.290
## 6      Risk_cond ~~       Risk_cond          0.250 0.000     NA     NA    0.250
## 7       indirect :=             a*b indirect 0.077 0.026  2.939  0.003    0.029
## 8          total := cprime+indirect    total 0.300 0.093  3.214  0.001    0.119
##   ci.upper std.lv std.all std.nox
## 1    0.294  0.183   0.092   0.184
## 2    0.404  0.223   0.068   0.137
## 3    0.511  0.420   0.257   0.257
## 4    1.070  0.991   0.992   0.992
## 5    2.672  2.470   0.926   0.926
## 6    0.250  0.250   1.000   0.250
## 7    0.132  0.077   0.024   0.047
## 8    0.495  0.300   0.092   0.184
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    14 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             1000
##   Number of successful bootstrap draws             986
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                           
##     Rsk_cnd    (a)    0.183    0.058    3.176    0.001    0.071    0.293
##   Endure_G_mean ~                                                       
##     Rsk_cnd (cprm)    0.232    0.067    3.451    0.001    0.094    0.374
##     Hersm_c    (b)    0.328    0.035    9.389    0.000    0.264    0.398
##    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.802    0.000    0.908    1.069
##    .Endure_G_mean     1.344    0.054   25.056    0.000    1.237    1.448
##    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.958    0.003    0.021    0.101
##     total             0.292    0.071    4.114    0.000    0.145    0.434
##    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.058  3.176  0.001    0.071
## 2 Endure_G_mean  ~       Risk_cond   cprime 0.232 0.067  3.451  0.001    0.094
## 3 Endure_G_mean  ~       Heroism_c        b 0.328 0.035  9.389  0.000    0.264
## 4     Heroism_c ~~       Heroism_c          0.991 0.042 23.802  0.000    0.908
## 5 Endure_G_mean ~~   Endure_G_mean          1.344 0.054 25.056  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.958  0.003    0.021
## 8         total := cprime+indirect    total 0.292 0.071  4.114  0.000    0.145
##   ci.upper std.lv std.all std.nox
## 1    0.293  0.183   0.092   0.184
## 2    0.374  0.232   0.095   0.191
## 3    0.398  0.328   0.270   0.270
## 4    1.069  0.991   0.992   0.992
## 5    1.448  1.344   0.913   0.913
## 6    0.250  0.250   1.000   0.250
## 7    0.101  0.060   0.025   0.050
## 8    0.434  0.292   0.120   0.241
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    19 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             1000
##   Number of successful bootstrap draws             981
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Rsk_cnd    (a)        0.183    0.058    3.184    0.001    0.071    0.293
##   SelfExploit_G_mean ~                                                      
##     Rsk_cnd (cprm)        0.343    0.069    4.962    0.000    0.208    0.477
##     Hersm_c    (b)        0.201    0.038    5.319    0.000    0.127    0.279
##    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.041   23.962    0.000    0.909    1.068
##    .SelfExplt_G_mn    1.408    0.061   23.043    0.000    1.288    1.533
##    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.672    0.008    0.013    0.065
##     total             0.380    0.071    5.360    0.000    0.240    0.517
##    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.058  3.184  0.001
## 2 SelfExploit_G_mean  ~          Risk_cond   cprime 0.343 0.069  4.962  0.000
## 3 SelfExploit_G_mean  ~          Heroism_c        b 0.201 0.038  5.319  0.000
## 4          Heroism_c ~~          Heroism_c          0.991 0.041 23.962  0.000
## 5 SelfExploit_G_mean ~~ SelfExploit_G_mean          1.408 0.061 23.043  0.000
## 6          Risk_cond ~~          Risk_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.037 0.014  2.672  0.008
## 8              total :=    cprime+indirect    total 0.380 0.071  5.360  0.000
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.071    0.293  0.183   0.092   0.184
## 2    0.208    0.477  0.343   0.141   0.282
## 3    0.127    0.279  0.201   0.165   0.165
## 4    0.909    1.068  0.991   0.992   0.992
## 5    1.288    1.533  1.408   0.949   0.949
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.013    0.065  0.037   0.015   0.030
## 8    0.240    0.517  0.380   0.156   0.312
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    22 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             1000
##   Number of successful bootstrap draws             978
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                               
##     Rsk_cnd    (a)        0.183    0.058    3.180    0.001    0.070    0.293
##   SelfExploit_S_mean ~                                                      
##     Rsk_cnd (cprm)        0.020    0.073    0.279    0.780   -0.120    0.160
##     Hersm_c    (b)        0.154    0.039    3.923    0.000    0.079    0.230
##    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.795    0.000    0.908    1.069
##    .SelfExplt_S_mn    1.651    0.063   26.025    0.000    1.526    1.778
##    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.361    0.018    0.009    0.055
##     total             0.049    0.073    0.661    0.509   -0.094    0.187
##    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.058  3.180  0.001
## 2 SelfExploit_S_mean  ~          Risk_cond   cprime 0.020 0.073  0.279  0.780
## 3 SelfExploit_S_mean  ~          Heroism_c        b 0.154 0.039  3.923  0.000
## 4          Heroism_c ~~          Heroism_c          0.991 0.042 23.795  0.000
## 5 SelfExploit_S_mean ~~ SelfExploit_S_mean          1.651 0.063 26.025  0.000
## 6          Risk_cond ~~          Risk_cond          0.250 0.000     NA     NA
## 7           indirect :=                a*b indirect 0.028 0.012  2.361  0.018
## 8              total :=    cprime+indirect    total 0.049 0.073  0.661  0.509
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.293  0.183   0.092   0.184
## 2   -0.120    0.160  0.020   0.008   0.016
## 3    0.079    0.230  0.154   0.119   0.119
## 4    0.908    1.069  0.991   0.992   0.992
## 5    1.526    1.778  1.651   0.986   0.986
## 6    0.250    0.250  0.250   1.000   0.250
## 7    0.009    0.055  0.028   0.011   0.022
## 8   -0.094    0.187  0.049   0.019   0.037
## Warning: lavaan->lav_model_nvcov_bootstrap():  
##    18 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             1000
##   Number of successful bootstrap draws             982
## 
## Regressions:
##                       Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Heroism_c ~                                                              
##     Rsk_cnd    (a)       0.183    0.058    3.168    0.002    0.070    0.295
##   GlobalSupportExpl ~                                                      
##     Rsk_cnd (cprm)      -0.093    0.048   -1.916    0.055   -0.190    0.003
##     Hersm_c    (b)      -0.089    0.029   -3.132    0.002   -0.148   -0.035
##    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.042   23.782    0.000    0.908    1.069
##    .GloblSpprtExpl    0.698    0.032   22.098    0.000    0.632    0.757
##    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.008   -2.103    0.035   -0.034   -0.004
##     total            -0.109    0.049   -2.249    0.025   -0.206   -0.014
##    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.058  3.168  0.002
## 2 GlobalSupportExpl  ~         Risk_cond   cprime -0.093 0.048 -1.916  0.055
## 3 GlobalSupportExpl  ~         Heroism_c        b -0.089 0.029 -3.132  0.002
## 4         Heroism_c ~~         Heroism_c           0.991 0.042 23.782  0.000
## 5 GlobalSupportExpl ~~ GlobalSupportExpl           0.698 0.032 22.098  0.000
## 6         Risk_cond ~~         Risk_cond           0.250 0.000     NA     NA
## 7          indirect :=               a*b indirect -0.016 0.008 -2.103  0.035
## 8             total :=   cprime+indirect    total -0.109 0.049 -2.249  0.025
##   ci.lower ci.upper std.lv std.all std.nox
## 1    0.070    0.295  0.183   0.092   0.184
## 2   -0.190    0.003 -0.093  -0.055  -0.110
## 3   -0.148   -0.035 -0.089  -0.106  -0.106
## 4    0.908    1.069  0.991   0.992   0.992
## 5    0.632    0.757  0.698   0.985   0.985
## 6    0.250    0.250  0.250   1.000   0.250
## 7   -0.034   -0.004 -0.016  -0.010  -0.019
## 8   -0.206   -0.014 -0.109  -0.065  -0.130
plot_mediation_models(
  fit_list = fit_list,
  predictor_name = "Risk_cond",
  predictor_label = "Risk"
)

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))
  )
)
make_mediation_summary_table <- function(
  data,
  outcomes,
  predictor,
  mediator = "Heroism_c",
  bootstrap = 1000
) {

  results_list <- list()
  row_index <- 1

  for (outcome_name in outcomes) {

    model_med <- paste0(
      mediator, " ~ a*", predictor, "\n",
      outcome_name, " ~ cprime*", predictor, " + b*", mediator, "\n",
      "indirect := a*b\n",
      "total := cprime + indirect\n"
    )

    fit <- lavaan::sem(
  model_med,
  data = scale_scores,
  se = "bootstrap",
  bootstrap = 1000,
  parallel = "snow",
  ncpus = 4)

    est <- lavaan::parameterEstimates(
      fit,
      ci = TRUE,
      standardized = TRUE
    )

    est_keep <- est[est$label %in% c("a", "b", "cprime", "indirect", "total"), ]

    get_row <- function(label_name) {
      out <- est_keep[est_keep$label == label_name, ]
      if (nrow(out) == 0) return(NULL)
      out[1, ]
    }

    a_row <- get_row("a")
    b_row <- get_row("b")
    cprime_row <- get_row("cprime")
    indirect_row <- get_row("indirect")
    total_row <- get_row("total")

    successful_boot <- NA
    if (!is.null(fit@boot$coef)) {
      successful_boot <- nrow(fit@boot$coef)
    }

    indirect_sig <- !is.null(indirect_row) && !is.na(indirect_row$pvalue) && indirect_row$pvalue < .05
    direct_sig <- !is.null(cprime_row) && !is.na(cprime_row$pvalue) && cprime_row$pvalue < .05

    indirect_sign <- if (!is.null(indirect_row)) sign(indirect_row$est) else NA
    direct_sign <- if (!is.null(cprime_row)) sign(cprime_row$est) else NA

    mediation_label <- NA_character_

    if (!indirect_sig) {
      mediation_label <- "No mediation"
    }

    if (indirect_sig && direct_sig) {
      mediation_label <- "Partial mediation"
    }

    if (indirect_sig && !direct_sig) {
      mediation_label <- "Indirect-only mediation"
    }

    if (indirect_sig && direct_sig && !is.na(indirect_sign) && !is.na(direct_sign)) {
      if (indirect_sign != direct_sign) {
        mediation_label <- "Inconsistent mediation"
      }
    }

    if (!is.null(indirect_row) && !is.null(cprime_row)) {
      if (indirect_row$pvalue >= .045 && indirect_row$pvalue <= .055) {
        mediation_label <- paste0(mediation_label, " (borderline indirect)")
      }
      if (cprime_row$pvalue >= .045 && cprime_row$pvalue <= .055) {
        mediation_label <- paste0(mediation_label, " (borderline direct)")
      }
    }

    results_list[[row_index]] <- data.frame(
      Predictor = predictor,
      Outcome = outcome_name,

      a = a_row$est,
      a_p = a_row$pvalue,

      b = b_row$est,
      b_p = b_row$pvalue,

      cprime = cprime_row$est,
      cprime_p = cprime_row$pvalue,

      indirect = indirect_row$est,
      indirect_p = indirect_row$pvalue,
      indirect_ci_lower = indirect_row$ci.lower,
      indirect_ci_upper = indirect_row$ci.upper,
      indirect_std_all = indirect_row$std.all,

      total = total_row$est,
      total_p = total_row$pvalue,

      successful_boot = successful_boot,
      label = mediation_label,

      stringsAsFactors = FALSE
    )

    row_index <- row_index + 1
  }

  results_table <- do.call(rbind, results_list)

  numeric_cols <- c(
    "a", "a_p",
    "b", "b_p",
    "cprime", "cprime_p",
    "indirect", "indirect_p", "indirect_ci_lower", "indirect_ci_upper", "indirect_std_all",
    "total", "total_p"
  )

  for (col_name in numeric_cols) {
    results_table[[col_name]] <- round(results_table[[col_name]], 3)
  }

  rownames(results_table) <- NULL
  results_table
}


scale_scores$Heroism_c <- as.numeric(scale(scale_scores$Heroism))

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

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

help_table <- make_mediation_summary_table(
  data = scale_scores,
  outcomes = help_outcomes,
  predictor = "Help_cond"
)

risk_table <- make_mediation_summary_table(
  data = scale_scores,
  outcomes = risk_outcomes,
  predictor = "Risk_cond"
)

mediation_table <- rbind(help_table, risk_table)
mediation_table
##    Predictor                Outcome     a   a_p      b   b_p cprime cprime_p
## 1  Help_cond        GlobalGratitude 0.125 0.027  0.474 0.000  0.165    0.000
## 2  Help_cond criticism_items_G_mean 0.125 0.027 -0.517 0.000 -0.049    0.388
## 3  Help_cond     SelfExploit_G_mean 0.125 0.026  0.212 0.000  0.159    0.020
## 4  Help_cond     SelfExploit_S_mean 0.125 0.026  0.148 0.000  0.229    0.001
## 5  Risk_cond        GlobalGratitude 0.183 0.001  0.477 0.000  0.040    0.316
## 6  Risk_cond criticism_items_G_mean 0.183 0.001 -0.512 0.000 -0.136    0.011
## 7  Risk_cond      DemandSupp_S_mean 0.183 0.001  0.376 0.000  0.050    0.483
## 8  Risk_cond           GlobalVictim 0.183 0.001  0.308 0.000  0.247    0.000
## 9  Risk_cond         Villain_S_mean 0.183 0.001  0.420 0.000  0.223    0.012
## 10 Risk_cond          Endure_G_mean 0.183 0.001  0.328 0.000  0.232    0.001
## 11 Risk_cond     SelfExploit_G_mean 0.183 0.001  0.201 0.000  0.343    0.000
## 12 Risk_cond     SelfExploit_S_mean 0.183 0.001  0.154 0.000  0.020    0.781
## 13 Risk_cond      GlobalSupportExpl 0.183 0.001 -0.089 0.002 -0.093    0.053
##    indirect indirect_p indirect_ci_lower indirect_ci_upper indirect_std_all
## 1     0.059      0.028             0.006             0.112            0.035
## 2    -0.064      0.030            -0.124            -0.006           -0.029
## 3     0.026      0.040             0.003             0.054            0.011
## 4     0.018      0.060             0.002             0.040            0.007
## 5     0.088      0.001             0.035             0.143            0.052
## 6    -0.094      0.001            -0.152            -0.037           -0.042
## 7     0.069      0.003             0.027             0.116            0.027
## 8     0.056      0.002             0.021             0.095            0.034
## 9     0.077      0.002             0.030             0.131            0.024
## 10    0.060      0.003             0.023             0.101            0.025
## 11    0.037      0.007             0.013             0.068            0.015
## 12    0.028      0.017             0.010             0.055            0.011
## 13   -0.016      0.033            -0.034            -0.004           -0.010
##     total total_p successful_boot                                       label
## 1   0.224   0.000            1000                           Partial mediation
## 2  -0.114   0.078            1000                     Indirect-only mediation
## 3   0.185   0.007            1000                           Partial mediation
## 4   0.247   0.000            1000                                No mediation
## 5   0.128   0.008            1000                     Indirect-only mediation
## 6  -0.230   0.000            1000                           Partial mediation
## 7   0.118   0.110            1000                     Indirect-only mediation
## 8   0.304   0.000            1000                           Partial mediation
## 9   0.300   0.001            1000                           Partial mediation
## 10  0.292   0.000            1000                           Partial mediation
## 11  0.380   0.000            1000                           Partial mediation
## 12  0.049   0.509            1000                     Indirect-only mediation
## 13 -0.109   0.023            1000 Indirect-only mediation (borderline direct)
mediation_table_small <- mediation_table[, c(
  "Predictor",
  "Outcome",
  "a", "a_p",
  "b", "b_p",
  "cprime", "cprime_p",
  "indirect", "indirect_p",
  "indirect_ci_lower", "indirect_ci_upper",
  "indirect_std_all",
  "label"
)]

mediation_table_small

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)
## 
## 
## ============================================================
## Outcome: Gratitude_G_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Gratitude_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.4463 -0.9388  0.1601  1.0260  2.1953 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.12871    0.03982 128.794  < 2e-16 ***
## Cond1                0.01759    0.03992   0.441    0.660    
## Risk_cond            0.12768    0.07966   1.603    0.109    
## Help_cond            0.47871    0.07968   6.008  2.5e-09 ***
## Risk_cond:Help_cond -0.01282    0.15959  -0.080    0.936    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.375 on 1187 degrees of freedom
## Multiple R-squared:  0.03171,    Adjusted R-squared:  0.02845 
## F-statistic: 9.719 on 4 and 1187 DF,  p-value: 9.794e-08
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Gratitude_G_mean ~ 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.5264 -0.9373  0.0627  1.0298  2.2993 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.1315891  0.0398043 128.921  < 2e-16 ***
## Risk_cond            0.1232834  0.0797232   1.546   0.1223    
## Help_cond            0.4692062  0.0797440   5.884 5.21e-09 ***
## Cond1                0.0181116  0.0398783   0.454   0.6498    
## Risk_cond:Help_cond  0.0002693  0.1595258   0.002   0.9987    
## Risk_cond:Cond1     -0.1559721  0.0797624  -1.955   0.0508 .  
## Help_cond:Cond1     -0.0772866  0.0797600  -0.969   0.3327    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.373 on 1185 degrees of freedom
## Multiple R-squared:  0.03555,    Adjusted R-squared:  0.03067 
## F-statistic:  7.28 on 6 and 1185 DF,  p-value: 1.185e-07
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Gratitude_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6644 -0.6333  0.2846  0.4764  3.3671 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.12763    0.02919 175.687   <2e-16 ***
## Cond1                0.06373    0.02930   2.176   0.0298 *  
## Risk_cond           -0.03928    0.05862  -0.670   0.5030    
## Help_cond            0.13881    0.05936   2.339   0.0195 *  
## Attitude             0.95391    0.02981  31.994   <2e-16 ***
## Risk_cond:Help_cond -0.07936    0.11699  -0.678   0.4977    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.008 on 1186 degrees of freedom
## Multiple R-squared:  0.4803, Adjusted R-squared:  0.4781 
## F-statistic: 219.2 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Gratitude_G_mean ~ 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 
## -3.6713 -0.6284  0.2790  0.4713  3.3723 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.127820   0.029232 175.420   <2e-16 ***
## Risk_cond           -0.039924   0.058771  -0.679   0.4971    
## Help_cond            0.138859   0.059475   2.335   0.0197 *  
## Cond1                0.063702   0.029321   2.173   0.0300 *  
## Attitude             0.953662   0.029960  31.832   <2e-16 ***
## Risk_cond:Help_cond -0.078794   0.117179  -0.672   0.5014    
## Risk_cond:Cond1     -0.001146   0.058777  -0.019   0.9845    
## Help_cond:Cond1     -0.011194   0.058611  -0.191   0.8486    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.008 on 1184 degrees of freedom
## Multiple R-squared:  0.4803, Adjusted R-squared:  0.4772 
## F-statistic: 156.3 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: Gratitude_S_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Gratitude_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2811 -1.4622 -0.0743  1.1624  4.2123 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.09215    0.04572  67.632  < 2e-16 ***
## Cond1               -0.02729    0.04584  -0.595  0.55164    
## Risk_cond            0.26772    0.09146   2.927  0.00349 ** 
## Help_cond            0.17104    0.09148   1.870  0.06178 .  
## Risk_cond:Help_cond -0.23100    0.18323  -1.261  0.20766    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.578 on 1187 degrees of freedom
## Multiple R-squared:  0.0114, Adjusted R-squared:  0.008066 
## F-statistic: 3.421 on 4 and 1187 DF,  p-value: 0.008618
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Gratitude_S_mean ~ 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 
## -2.344 -1.452 -0.093  1.214  4.214 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.09373    0.04577  67.591  < 2e-16 ***
## Risk_cond            0.26523    0.09167   2.893  0.00388 ** 
## Help_cond            0.16598    0.09170   1.810  0.07055 .  
## Cond1               -0.02702    0.04586  -0.589  0.55579    
## Risk_cond:Help_cond -0.22392    0.18344  -1.221  0.22246    
## Risk_cond:Cond1     -0.08325    0.09172  -0.908  0.36422    
## Help_cond:Cond1     -0.04346    0.09172  -0.474  0.63569    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.579 on 1185 degrees of freedom
## Multiple R-squared:  0.01226,    Adjusted R-squared:  0.007262 
## F-statistic: 2.452 on 6 and 1185 DF,  p-value: 0.0232
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Gratitude_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1564 -1.1584 -0.0153  1.0666  3.9280 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.091451   0.042123  73.391   <2e-16 ***
## Cond1                0.003038   0.042281   0.072   0.9427    
## Risk_cond            0.157960   0.084601   1.867   0.0621 .  
## Help_cond           -0.052408   0.085669  -0.612   0.5408    
## Attitude             0.627102   0.043030  14.574   <2e-16 ***
## Risk_cond:Help_cond -0.274745   0.168843  -1.627   0.1040    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.454 on 1186 degrees of freedom
## Multiple R-squared:  0.1615, Adjusted R-squared:  0.158 
## F-statistic:  45.7 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Gratitude_S_mean ~ 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 
## -3.166 -1.166 -0.010  1.077  3.921 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.091e+00  4.219e-02  73.273   <2e-16 ***
## Risk_cond            1.578e-01  8.482e-02   1.860   0.0631 .  
## Help_cond           -5.152e-02  8.584e-02  -0.600   0.5485    
## Cond1                2.995e-03  4.232e-02   0.071   0.9436    
## Attitude             6.279e-01  4.324e-02  14.521   <2e-16 ***
## Risk_cond:Help_cond -2.760e-01  1.691e-01  -1.632   0.1030    
## Risk_cond:Cond1      1.868e-02  8.483e-02   0.220   0.8257    
## Help_cond:Cond1      5.403e-05  8.459e-02   0.001   0.9995    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.455 on 1184 degrees of freedom
## Multiple R-squared:  0.1616, Adjusted R-squared:  0.1566 
## F-statistic:  32.6 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: criticism_items_G_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1191
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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: Victim_G_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Victim_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4305 -1.0830 -0.1212  0.9029  4.3941 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.98931    0.03940  75.878  < 2e-16 ***
## Cond1               -0.09097    0.03950  -2.303   0.0214 *  
## Risk_cond            0.53486    0.07881   6.787 1.81e-11 ***
## Help_cond           -0.10776    0.07883  -1.367   0.1719    
## Risk_cond:Help_cond -0.11550    0.15789  -0.732   0.4646    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.36 on 1187 degrees of freedom
## Multiple R-squared:  0.04307,    Adjusted R-squared:  0.03984 
## F-statistic: 13.36 on 4 and 1187 DF,  p-value: 1.195e-10
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Victim_G_mean ~ 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 
## -2.4005 -1.0671 -0.1522  0.8972  4.4208 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.988919   0.039451  75.762  < 2e-16 ***
## Risk_cond            0.534193   0.079016   6.761 2.15e-11 ***
## Help_cond           -0.104716   0.079037  -1.325   0.1855    
## Cond1               -0.091204   0.039525  -2.308   0.0212 *  
## Risk_cond:Help_cond -0.118159   0.158111  -0.747   0.4550    
## Risk_cond:Cond1      0.048480   0.079055   0.613   0.5398    
## Help_cond:Cond1     -0.008807   0.079053  -0.111   0.9113    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.361 on 1185 degrees of freedom
## Multiple R-squared:  0.04338,    Adjusted R-squared:  0.03854 
## F-statistic: 8.957 on 6 and 1185 DF,  p-value: 1.383e-09
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Victim_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6878 -0.9846 -0.1007  0.8666  4.4471 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.98887    0.03782  79.030  < 2e-16 ***
## Cond1               -0.07210    0.03796  -1.899  0.05777 .  
## Risk_cond            0.46656    0.07596   6.142 1.11e-09 ***
## Help_cond           -0.24681    0.07692  -3.209  0.00137 ** 
## Attitude             0.39023    0.03863  10.101  < 2e-16 ***
## Risk_cond:Help_cond -0.14272    0.15159  -0.941  0.34666    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.306 on 1186 degrees of freedom
## Multiple R-squared:  0.1189, Adjusted R-squared:  0.1152 
## F-statistic:    32 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Victim_G_mean ~ 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 
## -2.6285 -0.9754 -0.1465  0.8367  4.3992 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.98736    0.03784  78.940  < 2e-16 ***
## Risk_cond            0.46655    0.07609   6.132 1.18e-09 ***
## Help_cond           -0.24164    0.07700  -3.138  0.00174 ** 
## Cond1               -0.07231    0.03796  -1.905  0.05704 .  
## Attitude             0.39528    0.03879  10.191  < 2e-16 ***
## Risk_cond:Help_cond -0.15093    0.15170  -0.995  0.31998    
## Risk_cond:Cond1      0.11265    0.07609   1.480  0.13901    
## Help_cond:Cond1      0.01859    0.07588   0.245  0.80652    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.305 on 1184 degrees of freedom
## Multiple R-squared:  0.1205, Adjusted R-squared:  0.1153 
## F-statistic: 23.18 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: Victim_S_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Victim_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7118 -0.6332 -0.0015  0.6215  2.3202 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.03472    0.02797 180.035  < 2e-16 ***
## Cond1               -0.22296    0.02804  -7.953 4.22e-15 ***
## Risk_cond            0.23190    0.05594   4.145 3.64e-05 ***
## Help_cond           -0.02278    0.05596  -0.407    0.684    
## Risk_cond:Help_cond -0.10968    0.11208  -0.979    0.328    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9654 on 1187 degrees of freedom
## Multiple R-squared:  0.06298,    Adjusted R-squared:  0.05982 
## F-statistic: 19.95 on 4 and 1187 DF,  p-value: 6.558e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: Victim_S_mean ~ 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 
## -3.6735 -0.5998  0.0418  0.6598  2.3977 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.03309    0.02796 180.006  < 2e-16 ***
## Risk_cond            0.23337    0.05600   4.167 3.31e-05 ***
## Help_cond           -0.01599    0.05602  -0.285   0.7754    
## Cond1               -0.22339    0.02801  -7.974 3.58e-15 ***
## Risk_cond:Help_cond -0.11780    0.11206  -1.051   0.2934    
## Risk_cond:Cond1      0.11020    0.05603   1.967   0.0494 *  
## Help_cond:Cond1      0.02834    0.05603   0.506   0.6130    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9646 on 1185 degrees of freedom
## Multiple R-squared:  0.06621,    Adjusted R-squared:  0.06148 
## F-statistic:    14 on 6 and 1185 DF,  p-value: 1.911e-15
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Victim_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5146 -0.5557  0.0396  0.6273  2.4436 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.03438    0.02658 189.439  < 2e-16 ***
## Cond1               -0.20808    0.02667  -7.801 1.34e-14 ***
## Risk_cond            0.17805    0.05337   3.336 0.000877 ***
## Help_cond           -0.13240    0.05405  -2.450 0.014445 *  
## Attitude             0.30765    0.02715  11.332  < 2e-16 ***
## Risk_cond:Help_cond -0.13114    0.10652  -1.231 0.218539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9174 on 1186 degrees of freedom
## Multiple R-squared:  0.1545, Adjusted R-squared:  0.151 
## F-statistic: 43.35 on 5 and 1186 DF,  p-value: < 2.2e-16
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: Victim_S_mean ~ 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 
## -3.4659 -0.5004  0.0602  0.5686  2.4996 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.03184    0.02651 189.841  < 2e-16 ***
## Risk_cond            0.17942    0.05329   3.367 0.000785 ***
## Help_cond           -0.12520    0.05393  -2.322 0.020421 *  
## Cond1               -0.20831    0.02659  -7.835 1.04e-14 ***
## Attitude             0.31529    0.02717  11.606  < 2e-16 ***
## Risk_cond:Help_cond -0.14394    0.10625  -1.355 0.175769    
## Risk_cond:Cond1      0.16139    0.05330   3.028 0.002514 ** 
## Help_cond:Cond1      0.05019    0.05315   0.944 0.345128    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9144 on 1184 degrees of freedom
## Multiple R-squared:  0.1616, Adjusted R-squared:  0.1566 
## F-statistic:  32.6 on 7 and 1184 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: Villain_G_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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
## ------------------------------------------------------------
## 
## 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: SupportExploit_G_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SupportExploit_G_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6819 -0.9319 -0.1592  0.7404  4.5908 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.51658    0.03354  75.030   <2e-16 ***
## Cond1                0.07316    0.03363   2.176   0.0298 *  
## Risk_cond           -0.15830    0.06710  -2.359   0.0185 *  
## Help_cond            0.11430    0.06711   1.703   0.0888 .  
## Risk_cond:Help_cond  0.17674    0.13442   1.315   0.1888    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.158 on 1187 degrees of freedom
## Multiple R-squared:  0.01229,    Adjusted R-squared:  0.008961 
## F-statistic: 3.692 on 4 and 1187 DF,  p-value: 0.005388
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: SupportExploit_G_mean ~ 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 
## -1.7258 -0.9538 -0.1480  0.7742  4.5564 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.51839    0.03356  75.040   <2e-16 ***
## Risk_cond           -0.16440    0.06722  -2.446   0.0146 *  
## Help_cond            0.11294    0.06724   1.680   0.0933 .  
## Cond1                0.07306    0.03362   2.173   0.0300 *  
## Risk_cond:Help_cond  0.18267    0.13450   1.358   0.1747    
## Risk_cond:Cond1     -0.02642    0.06725  -0.393   0.6944    
## Help_cond:Cond1     -0.09943    0.06725  -1.478   0.1395    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.158 on 1185 degrees of freedom
## Multiple R-squared:  0.01422,    Adjusted R-squared:  0.009233 
## F-statistic:  2.85 on 6 and 1185 DF,  p-value: 0.009262
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SupportExploit_G_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2171 -0.9330 -0.1819  0.7019  4.8126 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.51673    0.03331  75.545  < 2e-16 ***
## Cond1                0.06633    0.03344   1.984   0.0475 *  
## Risk_cond           -0.13359    0.06691  -1.997   0.0461 *  
## Help_cond            0.16461    0.06775   2.430   0.0153 *  
## Attitude            -0.14119    0.03403  -4.149 3.58e-05 ***
## Risk_cond:Help_cond  0.18659    0.13353   1.397   0.1626    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.15 on 1186 degrees of freedom
## Multiple R-squared:  0.02642,    Adjusted R-squared:  0.02231 
## F-statistic: 6.437 on 5 and 1186 DF,  p-value: 6.527e-06
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: SupportExploit_G_mean ~ 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 
## -2.3217 -0.9049 -0.1375  0.7269  4.7908 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.51897    0.03332  75.596  < 2e-16 ***
## Risk_cond           -0.13955    0.06699  -2.083   0.0375 *  
## Help_cond            0.16324    0.06780   2.408   0.0162 *  
## Cond1                0.06612    0.03342   1.978   0.0481 *  
## Attitude            -0.14519    0.03415  -4.251 2.29e-05 ***
## Risk_cond:Help_cond  0.19471    0.13357   1.458   0.1452    
## Risk_cond:Cond1     -0.05000    0.06700  -0.746   0.4557    
## Help_cond:Cond1     -0.10949    0.06681  -1.639   0.1015    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.149 on 1184 degrees of freedom
## Multiple R-squared:  0.02905,    Adjusted R-squared:  0.02331 
## F-statistic:  5.06 on 7 and 1184 DF,  p-value: 1.131e-05
## 
## 
## 
## ============================================================
## Outcome: SupportExploit_S_mean 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SupportExploit_S_mean ~ Cond + Risk_cond * Help_cond
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2119 -1.0191 -0.2119  0.6930  4.7881 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.09786    0.03336  62.891   <2e-16 ***
## Cond1                0.03679    0.03344   1.100    0.272    
## Risk_cond           -0.09765    0.06673  -1.463    0.144    
## Help_cond            0.02161    0.06675   0.324    0.746    
## Risk_cond:Help_cond -0.07057    0.13369  -0.528    0.598    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.152 on 1187 degrees of freedom
## Multiple R-squared:  0.003163,   Adjusted R-squared:  -0.0001959 
## F-statistic: 0.9417 on 4 and 1187 DF,  p-value: 0.4389
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator 
## Formula: SupportExploit_S_mean ~ 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 
## -1.2555 -1.0489 -0.2555  0.6750  4.7445 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.09791    0.03339  62.821   <2e-16 ***
## Risk_cond           -0.09523    0.06689  -1.424    0.155    
## Help_cond            0.01798    0.06690   0.269    0.788    
## Cond1                0.03711    0.03346   1.109    0.268    
## Risk_cond:Help_cond -0.06861    0.13384  -0.513    0.608    
## Risk_cond:Cond1     -0.05655    0.06692  -0.845    0.398    
## Help_cond:Cond1      0.03679    0.06692   0.550    0.583    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.152 on 1185 degrees of freedom
## Multiple R-squared:  0.004028,   Adjusted R-squared:  -0.001015 
## F-statistic: 0.7987 on 6 and 1185 DF,  p-value: 0.5709
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SupportExploit_S_mean ~ Cond + Risk_cond * Help_cond + Attitude
## N used: 1192
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7851 -0.9226 -0.3138  0.6829  5.0774 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.09810    0.03284  63.883  < 2e-16 ***
## Cond1                0.02672    0.03297   0.811    0.418    
## Risk_cond           -0.06122    0.06596  -0.928    0.354    
## Help_cond            0.09578    0.06679   1.434    0.152    
## Attitude            -0.20815    0.03355  -6.204 7.58e-10 ***
## Risk_cond:Help_cond -0.05605    0.13164  -0.426    0.670    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.134 on 1186 degrees of freedom
## Multiple R-squared:  0.0345, Adjusted R-squared:  0.03043 
## F-statistic: 8.476 on 5 and 1186 DF,  p-value: 6.8e-08
## 
## 
## ------------------------------------------------------------
## Heroism + occupation as a moderator + attitude as a covariate 
## Formula: SupportExploit_S_mean ~ 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 
## -1.8342 -0.9094 -0.3104  0.6710  5.0294 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.09875    0.03287  63.857  < 2e-16 ***
## Risk_cond           -0.05902    0.06608  -0.893    0.372    
## Help_cond            0.09127    0.06687   1.365    0.173    
## Cond1                0.02700    0.03297   0.819    0.413    
## Attitude            -0.21158    0.03368  -6.281 4.71e-10 ***
## Risk_cond:Help_cond -0.05107    0.13175  -0.388    0.698    
## Risk_cond:Cond1     -0.09090    0.06609  -1.375    0.169    
## Help_cond:Cond1      0.02213    0.06590   0.336    0.737    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.134 on 1184 degrees of freedom
## Multiple R-squared:  0.03614,    Adjusted R-squared:  0.03045 
## F-statistic: 6.343 on 7 and 1184 DF,  p-value: 2.466e-07

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")
Effects of Risk and Help across outcomes
Outcome Predictor Model t_value p_value partial_eta_sq_effectsize
GlobalGratitude Heroism Without attitude 24.043 < .001 0.325
Heroism With attitude 11.001 < .001 0.379
criticism_items_G_mean Heroism Without attitude -18.102 < .001 0.219
Heroism With attitude -7.911 < .001 0.241
criticism_items_S_mean Heroism Without attitude -8.899 < .001 0.065
Heroism With attitude -4.769 < .001 0.065
DemandSupp_G_mean Heroism Without attitude -2.676 0.008 0.007
Heroism With attitude -2.813 0.005 0.007
DemandSupp_S_mean Heroism Without attitude 10.362 < .001 0.090
Heroism With attitude 4.532 < .001 0.093
GlobalVictim Heroism Without attitude 14.089 < .001 0.153
Heroism With attitude 7.705 < .001 0.157
Villain_G_mean Heroism Without attitude 8.017 < .001 0.047
Heroism With attitude 5.439 < .001 0.047
Villain_S_mean Heroism Without attitude 8.726 < .001 0.076
Heroism With attitude 5.644 < .001 0.077
Endure_G_mean Heroism Without attitude 9.945 < .001 0.078
Heroism With attitude 5.008 < .001 0.079
Endure_S_mean Heroism Without attitude 0.798 0.425 0.000
Heroism With attitude -0.619 0.536 0.000
SelfExploit_G_mean Heroism Without attitude 6.379 < .001 0.032
Heroism With attitude 1.233 0.218 0.033
SelfExploit_S_mean Heroism Without attitude 4.192 < .001 0.014
Heroism With attitude 2.315 0.021 0.014
GlobalSupportExpl Heroism Without attitude -3.687 < .001 0.012
Heroism With attitude -0.161 0.872 0.013

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.

Main interactions:

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.

Welders and psychiatrists separately

Welders

Toggle results for Welders (Warning: long output)
run_prereg_models_2 <- function(
  data,
  outcomes = "Heroism",
  models_to_run = c(1, 3),
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE
) {

  # ---- basic checks ----
  required_vars <- unique(c(outcomes, 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 = ", "))
  }


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

  formula_fns <- list(
    `1` = f_model_1,
    `3` = f_model_3
  )

  model_titles <- list(
    `1` = "Model 1 — Heroism effect across occupations",
    `3` = "Model 3 — Across 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)
}
Welders <- subset(scale_scores, scale_scores$Cond == "Weld")
fits <- run_prereg_models_2( Welders )
## 
## 
## ============================================================
## Outcome: Heroism 
## ============================================================
## 
## ------------------------------------------------------------
## Model 1 — Heroism effect across occupations 
## Formula: Heroism ~ Risk_cond * Help_cond
## N used: 594
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0743 -0.7083 -0.0743  0.9257  2.6220 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.69960    0.05475  85.834  < 2e-16 ***
## Risk_cond            0.38346    0.10950   3.502 0.000497 ***
## Help_cond            0.31281    0.10950   2.857 0.004433 ** 
## Risk_cond:Help_cond  0.10636    0.21901   0.486 0.627406    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.332 on 590 degrees of freedom
## Multiple R-squared:  0.03526,    Adjusted R-squared:  0.03035 
## F-statistic: 7.188 on 3 and 590 DF,  p-value: 9.581e-05
## 
## 
## ------------------------------------------------------------
## Model 3 — Across occupations + halo (Attitude) 
## Formula: Heroism ~ Risk_cond * Help_cond + Attitude
## N used: 594
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7815 -0.4205 -0.0312  0.7742  3.5795 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.65570    0.04418 105.370   <2e-16 ***
## Risk_cond            0.09996    0.08965   1.115    0.265    
## Help_cond           -0.04048    0.09042  -0.448    0.655    
## Attitude             0.84976    0.04752  17.883   <2e-16 ***
## Risk_cond:Help_cond  0.02905    0.17652   0.165    0.869    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.073 on 589 degrees of freedom
## Multiple R-squared:  0.3747, Adjusted R-squared:  0.3705 
## F-statistic: 88.25 on 4 and 589 DF,  p-value: < 2.2e-16
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, 3),
  risk_var = "Risk_cond",
  help_var = "Help_cond",
  attitude_var = "Attitude",
  print_summaries = TRUE,
  alpha = 0.05
) {

  # ---- basic checks ----
  required_vars <- unique(c(outcomes, 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 = ", "))
  }

  

  # ---- 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, " ~ ", risk_var, " * ", help_var))
  }
  
  f_model_3 <- function(y) {
    as.formula(paste0(
      y, " ~ ", risk_var, " * ", help_var,
      " + ", attitude_var
    ))
  }
  

  formula_fns <- list(`1` = f_model_1, `3` = f_model_3)

  model_titles <- list(
    `1` = "Heroism + occupation as a covariate",
    `3` = "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)
        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_prereg_models(Welders)
## 
## 
## ============================================================
## Outcome: GlobalGratitude   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond
## N used: 594
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.3919 -0.5774  0.0184  0.6427  1.9168 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         0.002306   0.034119   0.068 0.946140    
## Risk_cond           0.212176   0.068238   3.109 0.001965 ** 
## Help_cond           0.262785   0.068238   3.851 0.000131 ***
## Risk_cond:Help_cond 0.048152   0.136477   0.353 0.724348    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8299 on 590 degrees of freedom
## Multiple R-squared:  0.04186,    Adjusted R-squared:  0.03699 
## F-statistic: 8.593 on 3 and 590 DF,  p-value: 1.368e-05
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond + Attitude
## N used: 594
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.13412 -0.42955  0.03224  0.48477  2.34653 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.024386   0.027890  -0.874    0.382    
## Risk_cond            0.039793   0.056585   0.703    0.482    
## Help_cond            0.047968   0.057072   0.840    0.401    
## Attitude             0.516691   0.029994  17.226   <2e-16 ***
## Risk_cond:Help_cond  0.001147   0.111419   0.010    0.992    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6773 on 589 degrees of freedom
## Multiple R-squared:  0.3629, Adjusted R-squared:  0.3585 
## F-statistic: 83.86 on 4 and 589 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: criticism_items_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond
## N used: 594
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## ✅ H3d supported: β=-0.247, SE=0.089, t=-2.781, p=.006
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7785 -0.7785 -0.0315  0.6763  4.2215 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.59418    0.04443  58.386   <2e-16 ***
## Risk_cond           -0.24710    0.08886  -2.781   0.0056 ** 
## Help_cond           -0.16649    0.08886  -1.874   0.0615 .  
## Risk_cond:Help_cond -0.09007    0.17772  -0.507   0.6125    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.081 on 590 degrees of freedom
## Multiple R-squared:  0.01982,    Adjusted R-squared:  0.01483 
## F-statistic: 3.976 on 3 and 590 DF,  p-value: 0.008025
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4265 -0.6910  0.0039  0.6058  5.1037 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.62073    0.03995  65.603   <2e-16 ***
## Risk_cond           -0.07563    0.08105  -0.933    0.351    
## Help_cond            0.04719    0.08175   0.577    0.564    
## Attitude            -0.51395    0.04296 -11.963   <2e-16 ***
## Risk_cond:Help_cond -0.04332    0.15959  -0.271    0.786    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9702 on 589 degrees of freedom
## Multiple R-squared:  0.2114, Adjusted R-squared:  0.2061 
## F-statistic: 39.48 on 4 and 589 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: criticism_items_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond
## N used: 593
## 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.3297 -0.7812 -0.1749  0.7188  2.6703 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.24544    0.03749  59.887   <2e-16 ***
## Risk_cond           -0.01368    0.07499  -0.182    0.855    
## Help_cond            0.03478    0.07499   0.464    0.643    
## Risk_cond:Help_cond -0.24017    0.14998  -1.601    0.110    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9113 on 589 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.004745,   Adjusted R-squared:  -0.0003239 
## F-statistic: 0.9361 on 3 and 589 DF,  p-value: 0.4228
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 593
## 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.6210 -0.6922 -0.1878  0.6278  2.9322 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.25554    0.03684  61.232  < 2e-16 ***
## Risk_cond            0.05113    0.07473   0.684    0.494    
## Help_cond            0.11557    0.07537   1.533    0.126    
## Attitude            -0.19457    0.03959  -4.915 1.15e-06 ***
## Risk_cond:Help_cond -0.22225    0.14716  -1.510    0.132    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8939 on 588 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.04402,    Adjusted R-squared:  0.03751 
## F-statistic: 6.768 on 4 and 588 DF,  p-value: 2.493e-05
## 
## 
## 
## ============================================================
## Outcome: DemandSupp_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond
## N used: 594
## 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.021 -1.000  0.000  1.000  3.304 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.857548   0.060267  64.007   <2e-16 ***
## Risk_cond            0.001682   0.120535   0.014   0.9889    
## Help_cond           -0.019151   0.120535  -0.159   0.8738    
## Risk_cond:Help_cond -0.611473   0.241069  -2.537   0.0115 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.466 on 590 degrees of freedom
## Multiple R-squared:  0.01083,    Adjusted R-squared:  0.0058 
## F-statistic: 2.153 on 3 and 590 DF,  p-value: 0.09248
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## 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.0381 -1.0048  0.0014  0.9962  3.3267 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.856925   0.060410  63.846   <2e-16 ***
## Risk_cond           -0.002344   0.122565  -0.019   0.9847    
## Help_cond           -0.024168   0.123620  -0.196   0.8451    
## Attitude             0.012068   0.064969   0.186   0.8527    
## Risk_cond:Help_cond -0.612571   0.241339  -2.538   0.0114 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.467 on 589 degrees of freedom
## Multiple R-squared:  0.01089,    Adjusted R-squared:  0.00417 
## F-statistic: 1.621 on 4 and 589 DF,  p-value: 0.1674
## 
## 
## 
## ============================================================
## Outcome: DemandSupp_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond
## N used: 594
## 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.2770 -0.7569  0.0183  0.7790  2.0183 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.18417    0.04837 107.181   <2e-16 ***
## Risk_cond            0.16562    0.09674   1.712   0.0874 .  
## Help_cond            0.12969    0.09674   1.341   0.1805    
## Risk_cond:Help_cond -0.21922    0.19347  -1.133   0.2576    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.176 on 590 degrees of freedom
## Multiple R-squared:  0.01081,    Adjusted R-squared:  0.005779 
## F-statistic: 2.149 on 3 and 590 DF,  p-value: 0.09297
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## 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.6800 -0.5976  0.0792  0.7562  2.4026 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.16656    0.04669 110.655  < 2e-16 ***
## Risk_cond            0.05185    0.09473   0.547    0.584    
## Help_cond           -0.01208    0.09555  -0.126    0.899    
## Attitude             0.34101    0.05021   6.791 2.72e-11 ***
## Risk_cond:Help_cond -0.25025    0.18653  -1.342    0.180    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.134 on 589 degrees of freedom
## Multiple R-squared:  0.08264,    Adjusted R-squared:  0.07641 
## F-statistic: 13.26 on 4 and 589 DF,  p-value: 2.354e-10
## 
## 
## 
## ============================================================
## Outcome: GlobalVictim   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalVictim ~ Risk_cond * Help_cond
## N used: 594
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.99521 -0.52194 -0.03018  0.50925  2.06762 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.14329    0.03158   4.537 6.91e-06 ***
## Risk_cond            0.23689    0.06316   3.751 0.000194 ***
## Help_cond           -0.05679    0.06316  -0.899 0.368933    
## Risk_cond:Help_cond -0.09854    0.12632  -0.780 0.435651    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7681 on 590 degrees of freedom
## Multiple R-squared:  0.02543,    Adjusted R-squared:  0.02047 
## F-statistic: 5.131 on 3 and 590 DF,  p-value: 0.001647
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalVictim ~ Risk_cond * Help_cond + Attitude
## N used: 594
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.08271 -0.49349 -0.02478  0.50364  2.21504 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.13092    0.03030   4.321 1.82e-05 ***
## Risk_cond            0.15697    0.06147   2.554   0.0109 *  
## Help_cond           -0.15638    0.06200  -2.522   0.0119 *  
## Attitude             0.23954    0.03258   7.352 6.58e-13 ***
## Risk_cond:Help_cond -0.12033    0.12104  -0.994   0.3205    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7358 on 589 degrees of freedom
## Multiple R-squared:  0.1073, Adjusted R-squared:  0.1013 
## F-statistic: 17.71 on 4 and 589 DF,  p-value: 9.795e-14
## 
## 
## 
## ============================================================
## Outcome: Villain_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond
## N used: 594
## 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 
## -2.7703 -0.7703  0.2297  0.9187  3.2560 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.72527    0.05499  67.744   <2e-16 ***
## Risk_cond           -0.04138    0.10998  -0.376    0.707    
## Help_cond            0.06369    0.10998   0.579    0.563    
## Risk_cond:Help_cond  0.13539    0.21996   0.616    0.538    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.338 on 590 degrees of freedom
## Multiple R-squared:  0.001425,   Adjusted R-squared:  -0.003652 
## F-statistic: 0.2807 on 3 and 590 DF,  p-value: 0.8394
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## 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.1645 -0.9204  0.1217  0.8917  3.3894 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.71273    0.05433  68.334  < 2e-16 ***
## Risk_cond           -0.12236    0.11023  -1.110    0.267    
## Help_cond           -0.03722    0.11118  -0.335    0.738    
## Attitude             0.24270    0.05843   4.153 3.76e-05 ***
## Risk_cond:Help_cond  0.11331    0.21706   0.522    0.602    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.319 on 589 degrees of freedom
## Multiple R-squared:  0.02984,    Adjusted R-squared:  0.02325 
## F-statistic: 4.529 on 4 and 589 DF,  p-value: 0.001306
## 
## 
## 
## ============================================================
## Outcome: Villain_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond
## N used: 594
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6847 -0.8237  0.3153  1.3153  1.5097 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.58246    0.05589  99.884   <2e-16 ***
## Risk_cond            0.17255    0.11178   1.544    0.123    
## Help_cond            0.01011    0.11178   0.090    0.928    
## Risk_cond:Help_cond  0.04360    0.22356   0.195    0.845    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.359 on 590 degrees of freedom
## Multiple R-squared:  0.004101,   Adjusted R-squared:  -0.0009628 
## F-statistic: 0.8099 on 3 and 590 DF,  p-value: 0.4887
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.0038 -0.7115  0.2443  0.9962  2.1827 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.56541    0.05458 101.972  < 2e-16 ***
## Risk_cond            0.06243    0.11073   0.564    0.573    
## Help_cond           -0.12712    0.11169  -1.138    0.256    
## Attitude             0.33006    0.05870   5.623  2.9e-08 ***
## Risk_cond:Help_cond  0.01357    0.21804   0.062    0.950    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.325 on 589 degrees of freedom
## Multiple R-squared:  0.05484,    Adjusted R-squared:  0.04842 
## F-statistic: 8.544 on 4 and 589 DF,  p-value: 1.048e-06
## 
## 
## 
## ============================================================
## Outcome: Endure_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond
## N used: 594
## 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.271, SE=0.100, t=2.713, p=.007
## ✅ H4f supported: β=0.233, SE=0.100, t=2.331, p=.020
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3057 -0.5799 -0.0417  0.9201  3.1982 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.05728    0.04995  81.229  < 2e-16 ***
## Risk_cond            0.27105    0.09990   2.713  0.00686 ** 
## Help_cond            0.23286    0.09990   2.331  0.02009 *  
## Risk_cond:Help_cond -0.01396    0.19979  -0.070  0.94434    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.215 on 590 degrees of freedom
## Multiple R-squared:  0.02236,    Adjusted R-squared:  0.01739 
## F-statistic: 4.498 on 3 and 590 DF,  p-value: 0.00393
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## 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)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6617 -0.6617  0.0922  0.7806  2.9152 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.03826    0.04804  84.059  < 2e-16 ***
## Risk_cond            0.14824    0.09747   1.521    0.129    
## Help_cond            0.07981    0.09831   0.812    0.417    
## Attitude             0.36812    0.05167   7.125 3.05e-12 ***
## Risk_cond:Help_cond -0.04744    0.19192  -0.247    0.805    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.167 on 589 degrees of freedom
## Multiple R-squared:  0.09994,    Adjusted R-squared:  0.09382 
## F-statistic: 16.35 on 4 and 589 DF,  p-value: 1.04e-12
## 
## 
## 
## ============================================================
## Outcome: Endure_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond
## N used: 594
## 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.5069 -0.9783 -0.2561  0.9931  3.6385 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.40070    0.05523  61.577   <2e-16 ***
## Risk_cond            0.06704    0.11045   0.607   0.5441    
## Help_cond            0.03835    0.11045   0.347   0.7285    
## Risk_cond:Help_cond -0.36762    0.22091  -1.664   0.0966 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.343 on 590 degrees of freedom
## Multiple R-squared:  0.00569,    Adjusted R-squared:  0.0006337 
## F-statistic: 1.125 on 3 and 590 DF,  p-value: 0.3381
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## 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.5690 -0.9933 -0.2895  0.9722  3.6377 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.39845    0.05533  61.417   <2e-16 ***
## Risk_cond            0.05253    0.11227   0.468   0.6400    
## Help_cond            0.02028    0.11323   0.179   0.8579    
## Attitude             0.04348    0.05951   0.731   0.4653    
## Risk_cond:Help_cond -0.37158    0.22106  -1.681   0.0933 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.344 on 589 degrees of freedom
## Multiple R-squared:  0.00659,    Adjusted R-squared:  -0.0001567 
## F-statistic: 0.9768 on 4 and 589 DF,  p-value: 0.4196
## 
## 
## 
## ============================================================
## Outcome: SelfExploit_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond
## N used: 594
## 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.372, SE=0.103, t=3.604, p=<.001
## ✅ H4g supported: β=0.392, SE=0.103, t=3.800, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6453 -0.6665  0.1189  0.8547  3.1189 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           4.2234     0.0516  81.850  < 2e-16 ***
## Risk_cond             0.3720     0.1032   3.604 0.000339 ***
## Help_cond             0.3922     0.1032   3.800 0.000159 ***
## Risk_cond:Help_cond   0.1589     0.2064   0.770 0.441639    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.255 on 590 degrees of freedom
## Multiple R-squared:  0.04716,    Adjusted R-squared:  0.04231 
## F-statistic: 9.733 on 3 and 590 DF,  p-value: 2.82e-06
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## 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.293, SE=0.103, t=2.838, p=.005
## ✅ H4g supported: β=0.294, SE=0.104, t=2.821, p=.005
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6498 -0.6498  0.1612  0.8502  2.9359 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.21126    0.05093  82.693  < 2e-16 ***
## Risk_cond            0.29320    0.10332   2.838  0.00470 ** 
## Help_cond            0.29403    0.10421   2.821  0.00494 ** 
## Attitude             0.23612    0.05477   4.311  1.9e-05 ***
## Risk_cond:Help_cond  0.13744    0.20345   0.676  0.49961    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.237 on 589 degrees of freedom
## Multiple R-squared:  0.0763, Adjusted R-squared:  0.07003 
## F-statistic: 12.16 on 4 and 589 DF,  p-value: 1.656e-09
## 
## 
## 
## ============================================================
## Outcome: SelfExploit_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond
## N used: 594
## 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.301, SE=0.107, t=2.817, p=.005
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7568 -1.0901 -0.3028  0.6972  3.6972 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.45600    0.05348  45.928  < 2e-16 ***
## Risk_cond            0.15263    0.10695   1.427  0.15408    
## Help_cond            0.30128    0.10695   2.817  0.00501 ** 
## Risk_cond:Help_cond  0.29521    0.21390   1.380  0.16807    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.301 on 590 degrees of freedom
## Multiple R-squared:  0.02002,    Adjusted R-squared:  0.01503 
## F-statistic: 4.017 on 3 and 590 DF,  p-value: 0.007591
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 594
## 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.262, SE=0.109, t=2.396, p=.017
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8475 -1.0919 -0.2750  0.7898  3.6470 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.45115    0.05348  45.831   <2e-16 ***
## Risk_cond            0.12131    0.10851   1.118   0.2640    
## Help_cond            0.26226    0.10944   2.396   0.0169 *  
## Attitude             0.09386    0.05752   1.632   0.1032    
## Risk_cond:Help_cond  0.28667    0.21366   1.342   0.1802    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.299 on 589 degrees of freedom
## Multiple R-squared:  0.02443,    Adjusted R-squared:  0.0178 
## F-statistic: 3.687 on 4 and 589 DF,  p-value: 0.005628
## 
## 
## 
## ============================================================
## Outcome: GlobalSupportExpl   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond
## N used: 594
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1667 -0.6517 -0.1227  0.5528  3.2818 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)
## (Intercept)         -0.04548    0.03364  -1.352    0.177
## Risk_cond           -0.07725    0.06728  -1.148    0.251
## Help_cond            0.08270    0.06728   1.229    0.219
## Risk_cond:Help_cond -0.01572    0.13455  -0.117    0.907
## 
## Residual standard error: 0.8182 on 590 degrees of freedom
## Multiple R-squared:  0.004565,   Adjusted R-squared:  -0.0004968 
## F-statistic: 0.9018 on 3 and 590 DF,  p-value: 0.44
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond + Attitude
## N used: 594
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2836 -0.6830 -0.1580  0.5266  3.2678 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)  
## (Intercept)         -0.041443   0.033585  -1.234   0.2177  
## Risk_cond           -0.051197   0.068141  -0.751   0.4527  
## Help_cond            0.115167   0.068727   1.676   0.0943 .
## Attitude            -0.078095   0.036120  -2.162   0.0310 *
## Risk_cond:Help_cond -0.008616   0.134174  -0.064   0.9488  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8156 on 589 degrees of freedom
## Multiple R-squared:  0.0124, Adjusted R-squared:  0.005696 
## F-statistic: 1.849 on 4 and 589 DF,  p-value: 0.1179

Psychiatrists

Toggle results for psychiatrists (Warning: long output)
Psychi <- subset(scale_scores, scale_scores$Cond == "Psych")

fits <- run_prereg_models_2( Psychi )
## 
## 
## ============================================================
## Outcome: Heroism 
## ============================================================
## 
## ------------------------------------------------------------
## Model 1 — Heroism effect across occupations 
## Formula: Heroism ~ Risk_cond * Help_cond
## N used: 598
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5274 -0.5274 -0.3500  0.6500  2.6500 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.41965    0.05717  77.310   <2e-16 ***
## Risk_cond            0.12288    0.11434   1.075    0.283    
## Help_cond            0.03810    0.11434   0.333    0.739    
## Risk_cond:Help_cond  0.10903    0.22867   0.477    0.634    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.393 on 594 degrees of freedom
## Multiple R-squared:  0.002492,   Adjusted R-squared:  -0.002546 
## F-statistic: 0.4946 on 3 and 594 DF,  p-value: 0.6862
## 
## 
## ------------------------------------------------------------
## Model 3 — Across occupations + halo (Attitude) 
## Formula: Heroism ~ Risk_cond * Help_cond + Attitude
## N used: 598
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.8091 -0.6690  0.1219  0.8390  2.7143 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.45502    0.04620  96.422   <2e-16 ***
## Risk_cond            0.11573    0.09232   1.254   0.2105    
## Help_cond           -0.18471    0.09316  -1.983   0.0479 *  
## Attitude             0.80374    0.04507  17.834   <2e-16 ***
## Risk_cond:Help_cond  0.04885    0.18467   0.265   0.7915    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.125 on 593 degrees of freedom
## Multiple R-squared:  0.3507, Adjusted R-squared:  0.3463 
## F-statistic: 80.08 on 4 and 593 DF,  p-value: < 2.2e-16
run_prereg_models(Psychi)
## 
## 
## ============================================================
## Outcome: GlobalGratitude   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond
## N used: 598
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.25157 -0.58516  0.03051  0.62114  2.06791 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)   
## (Intercept)         -0.002511   0.034298  -0.073  0.94166   
## Risk_cond            0.047333   0.068597   0.690  0.49045   
## Help_cond            0.180967   0.068597   2.638  0.00855 **
## Risk_cond:Help_cond -0.188812   0.137193  -1.376  0.16926   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8358 on 594 degrees of freedom
## Multiple R-squared:  0.01468,    Adjusted R-squared:  0.009708 
## F-statistic: 2.951 on 3 and 594 DF,  p-value: 0.03215
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalGratitude ~ Risk_cond * Help_cond + Attitude
## N used: 598
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.85467 -0.44055  0.05532  0.44903  1.71204 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.02209    0.02504   0.882   0.3780    
## Risk_cond            0.04236    0.05003   0.847   0.3975    
## Help_cond            0.02601    0.05048   0.515   0.6066    
## Attitude             0.55897    0.02442  22.889   <2e-16 ***
## Risk_cond:Help_cond -0.23066    0.10007  -2.305   0.0215 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6095 on 593 degrees of freedom
## Multiple R-squared:  0.4769, Adjusted R-squared:  0.4733 
## F-statistic: 135.1 on 4 and 593 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: criticism_items_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond
## N used: 598
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## ✅ H3d supported: β=-0.221, SE=0.092, t=-2.409, p=.016
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9567 -0.7604  0.0091  0.7164  4.2396 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.74792    0.04595  59.808   <2e-16 ***
## Risk_cond           -0.22132    0.09189  -2.409   0.0163 *  
## Help_cond           -0.07788    0.09189  -0.848   0.3970    
## Risk_cond:Help_cond  0.23688    0.18378   1.289   0.1979    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.12 on 594 degrees of freedom
## Multiple R-squared:  0.01279,    Adjusted R-squared:  0.007809 
## F-statistic: 2.566 on 3 and 594 DF,  p-value: 0.0537
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: criticism_items_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## Hypotheses (this outcome):
##  - H3d: Risk → criticism/hate speech acceptability ↓ [general (_G)]
##  - H4d: Helpfulness → criticism/hate speech acceptability ↓ [general (_G)]
## ------------------------------------------------------------
## ✅ H3d supported: β=-0.216, SE=0.075, t=-2.891, p=.004
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4037 -0.5856 -0.1001  0.5540  3.2207 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.71978    0.03733  72.851  < 2e-16 ***
## Risk_cond           -0.21563    0.07460  -2.891  0.00399 ** 
## Help_cond            0.09938    0.07528   1.320  0.18730    
## Attitude            -0.63943    0.03642 -17.559  < 2e-16 ***
## Risk_cond:Help_cond  0.28476    0.14922   1.908  0.05684 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9089 on 593 degrees of freedom
## Multiple R-squared:  0.3505, Adjusted R-squared:  0.3461 
## F-statistic:    80 on 4 and 593 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: criticism_items_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond
## N used: 598
## 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.4007 -0.6674 -0.2562  0.6107  2.7437 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.34541    0.03537  66.306   <2e-16 ***
## Risk_cond            0.04526    0.07074   0.640    0.523    
## Help_cond           -0.03389    0.07074  -0.479    0.632    
## Risk_cond:Help_cond  0.19834    0.14149   1.402    0.161    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.862 on 594 degrees of freedom
## Multiple R-squared:  0.004465,   Adjusted R-squared:  -0.0005626 
## F-statistic: 0.8881 on 3 and 594 DF,  p-value: 0.447
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: criticism_items_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## 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.40053 -0.62568 -0.08064  0.59494  2.00126 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.33457    0.03388  68.905  < 2e-16 ***
## Risk_cond            0.04746    0.06770   0.701    0.484    
## Help_cond            0.03445    0.06832   0.504    0.614    
## Attitude            -0.24651    0.03305  -7.459 3.11e-13 ***
## Risk_cond:Help_cond  0.21680    0.13542   1.601    0.110    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8249 on 593 degrees of freedom
## Multiple R-squared:  0.08986,    Adjusted R-squared:  0.08372 
## F-statistic: 14.64 on 4 and 593 DF,  p-value: 2.077e-11
## 
## 
## 
## ============================================================
## Outcome: DemandSupp_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond
## N used: 598
## 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.1301 -1.1118 -0.1145  0.8855  2.8882 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         4.120361   0.055775  73.874   <2e-16 ***
## Risk_cond           0.001217   0.111550   0.011    0.991    
## Help_cond           0.014416   0.111550   0.129    0.897    
## Risk_cond:Help_cond 0.007840   0.223101   0.035    0.972    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.359 on 594 degrees of freedom
## Multiple R-squared:  3.07e-05,   Adjusted R-squared:  -0.00502 
## F-statistic: 0.006078 on 3 and 594 DF,  p-value: 0.9993
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: DemandSupp_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## 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.3697 -1.0749 -0.1003  0.8997  2.9885 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.117623   0.055812  73.776   <2e-16 ***
## Risk_cond            0.001771   0.111523   0.016    0.987    
## Help_cond            0.031660   0.112538   0.281    0.779    
## Attitude            -0.062205   0.054441  -1.143    0.254    
## Risk_cond:Help_cond  0.012497   0.223080   0.056    0.955    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.359 on 593 degrees of freedom
## Multiple R-squared:  0.002227,   Adjusted R-squared:  -0.004503 
## F-statistic: 0.331 on 4 and 593 DF,  p-value: 0.8572
## 
## 
## 
## ============================================================
## Outcome: DemandSupp_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond
## N used: 598
## 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 
## -3.8665 -0.7808  0.1679  0.8219  2.3219 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.78937    0.05430  88.210   <2e-16 ***
## Risk_cond            0.06855    0.10859   0.631    0.528    
## Help_cond           -0.11979    0.10859  -1.103    0.270    
## Risk_cond:Help_cond  0.06830    0.21718   0.314    0.753    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.323 on 594 degrees of freedom
## Multiple R-squared:  0.003053,   Adjusted R-squared:  -0.001982 
## F-statistic: 0.6064 on 3 and 594 DF,  p-value: 0.6111
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: DemandSupp_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## Hypotheses (this outcome):
##  - H3b: Risk → support for workers' demands ↑ [specific (_S)]
##  - H4b: Helpfulness → support for workers' demands ↑ [specific (_S)]
## ------------------------------------------------------------
## ⚠️  H4b significant but opposite direction: β=-0.246, SE=0.103, t=-2.402, p=.017
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3738 -0.6703  0.1345  0.8297  2.6955 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.80947    0.05088  94.528   <2e-16 ***
## Risk_cond            0.06448    0.10166   0.634   0.5261    
## Help_cond           -0.24641    0.10259  -2.402   0.0166 *  
## Attitude             0.45676    0.04963   9.203   <2e-16 ***
## Risk_cond:Help_cond  0.03410    0.20336   0.168   0.8669    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.239 on 593 degrees of freedom
## Multiple R-squared:  0.1277, Adjusted R-squared:  0.1218 
## F-statistic: 21.69 on 4 and 593 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: GlobalVictim   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalVictim ~ Risk_cond * Help_cond
## N used: 598
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.41442 -0.52671  0.02734  0.50001  2.59276 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.14680    0.03378  -4.345 1.63e-05 ***
## Risk_cond            0.38249    0.06757   5.661 2.34e-08 ***
## Help_cond           -0.03464    0.06757  -0.513    0.608    
## Risk_cond:Help_cond -0.10489    0.13513  -0.776    0.438    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8232 on 594 degrees of freedom
## Multiple R-squared:  0.05316,    Adjusted R-squared:  0.04838 
## F-statistic: 11.12 on 3 and 594 DF,  p-value: 4.158e-07
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalVictim ~ Risk_cond * Help_cond + Attitude
## N used: 598
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.39532 -0.42010  0.02804  0.42782  2.35301 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.13136    0.03045  -4.314 1.88e-05 ***
## Risk_cond            0.37936    0.06084   6.235 8.58e-10 ***
## Help_cond           -0.13190    0.06140  -2.148   0.0321 *  
## Attitude             0.35082    0.02970  11.811  < 2e-16 ***
## Risk_cond:Help_cond -0.13116    0.12171  -1.078   0.2816    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7413 on 593 degrees of freedom
## Multiple R-squared:  0.2335, Adjusted R-squared:  0.2283 
## F-statistic: 45.16 on 4 and 593 DF,  p-value: < 2.2e-16
## 
## 
## 
## ============================================================
## Outcome: Villain_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond
## N used: 598
## 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.06004 -0.89583  0.06621  0.77083  3.10417 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.98196    0.04910  81.102   <2e-16 ***
## Risk_cond            0.02992    0.09820   0.305    0.761    
## Help_cond           -0.13429    0.09820  -1.368    0.172    
## Risk_cond:Help_cond  0.01608    0.19639   0.082    0.935    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.196 on 594 degrees of freedom
## Multiple R-squared:  0.003422,   Adjusted R-squared:  -0.001611 
## F-statistic: 0.6799 on 3 and 594 DF,  p-value: 0.5646
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Villain_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [general (_G)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [general (_G)]
## ------------------------------------------------------------
## ⚠️  H4e significant but opposite direction: β=-0.197, SE=0.097, t=-2.021, p=.044
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4230 -0.7953  0.0149  0.8186  2.9873 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.9918610  0.0482636  82.710  < 2e-16 ***
## Risk_cond            0.0279124  0.0964392   0.289   0.7724    
## Help_cond           -0.1966792  0.0973173  -2.021   0.0437 *  
## Attitude             0.2250440  0.0470781   4.780 2.21e-06 ***
## Risk_cond:Help_cond -0.0007651  0.1929087  -0.004   0.9968    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.175 on 593 degrees of freedom
## Multiple R-squared:  0.0404, Adjusted R-squared:  0.03393 
## F-statistic: 6.241 on 4 and 593 DF,  p-value: 6.355e-05
## 
## 
## 
## ============================================================
## Outcome: Villain_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond
## N used: 598
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H3e supported: β=0.477, SE=0.139, t=3.437, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7971 -1.1858  0.2029  1.2029  2.8142 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.490926   0.069449  64.665  < 2e-16 ***
## Risk_cond            0.477351   0.138897   3.437  0.00063 ***
## Help_cond           -0.001001   0.138897  -0.007  0.99425    
## Risk_cond:Help_cond -0.268000   0.277795  -0.965  0.33507    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.692 on 594 degrees of freedom
## Multiple R-squared:  0.02086,    Adjusted R-squared:  0.01591 
## F-statistic: 4.217 on 3 and 594 DF,  p-value: 0.005771
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Villain_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## Hypotheses (this outcome):
##  - H3e: Risk → support for workers' impunity ↑ [specific (_S)]
##  - H4e: Helpfulness → support for workers' impunity ↑ [specific (_S)]
## ------------------------------------------------------------
## ✅ H3e supported: β=0.475, SE=0.137, t=3.472, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0516 -1.1496  0.2289  1.2387  3.7606 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.50413    0.06842  65.835  < 2e-16 ***
## Risk_cond            0.47468    0.13671   3.472 0.000554 ***
## Help_cond           -0.08417    0.13795  -0.610 0.542010    
## Attitude             0.30001    0.06673   4.495 8.35e-06 ***
## Risk_cond:Help_cond -0.29046    0.27345  -1.062 0.288582    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.666 on 593 degrees of freedom
## Multiple R-squared:  0.05313,    Adjusted R-squared:  0.04674 
## F-statistic: 8.318 on 4 and 593 DF,  p-value: 1.566e-06
## 
## 
## 
## ============================================================
## Outcome: Endure_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond
## N used: 598
## 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.297, SE=0.098, t=3.031, p=.003
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1258 -0.7500  0.1069  0.7500  3.0000 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.97005    0.04899  81.040  < 2e-16 ***
## Risk_cond            0.29697    0.09798   3.031  0.00254 ** 
## Help_cond           -0.07880    0.09798  -0.804  0.42155    
## Risk_cond:Help_cond  0.12865    0.19596   0.657  0.51172    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.194 on 594 degrees of freedom
## Multiple R-squared:  0.0178, Adjusted R-squared:  0.01284 
## F-statistic: 3.588 on 3 and 594 DF,  p-value: 0.01361
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Endure_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## 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.294, SE=0.095, t=3.107, p=.002
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1562 -0.6809  0.1282  0.7463  2.8801 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.98335    0.04740  84.039  < 2e-16 ***
## Risk_cond            0.29429    0.09471   3.107  0.00198 ** 
## Help_cond           -0.16255    0.09557  -1.701  0.08951 .  
## Attitude             0.30210    0.04623   6.534 1.38e-10 ***
## Risk_cond:Help_cond  0.10604    0.18945   0.560  0.57589    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.154 on 593 degrees of freedom
## Multiple R-squared:  0.08376,    Adjusted R-squared:  0.07758 
## F-statistic: 13.55 on 4 and 593 DF,  p-value: 1.405e-10
## 
## 
## 
## ============================================================
## Outcome: Endure_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond
## N used: 598
## 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.8550 -0.8790  0.1130  0.7236  3.2236 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.84131    0.05263  72.985   <2e-16 ***
## Risk_cond           -0.01923    0.10526  -0.183    0.855    
## Help_cond            0.05125    0.10526   0.487    0.627    
## Risk_cond:Help_cond  0.11868    0.21052   0.564    0.573    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.283 on 594 degrees of freedom
## Multiple R-squared:  0.001033,   Adjusted R-squared:  -0.004012 
## F-statistic: 0.2047 on 3 and 594 DF,  p-value: 0.8931
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: Endure_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## 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.9934 -0.8901  0.0066  0.7544  3.4887 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          3.84610    0.05252  73.225   <2e-16 ***
## Risk_cond           -0.02020    0.10495  -0.192   0.8475    
## Help_cond            0.02105    0.10591   0.199   0.8425    
## Attitude             0.10894    0.05123   2.126   0.0339 *  
## Risk_cond:Help_cond  0.11052    0.20994   0.526   0.5988    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.279 on 593 degrees of freedom
## Multiple R-squared:  0.008592,   Adjusted R-squared:  0.001905 
## F-statistic: 1.285 on 4 and 593 DF,  p-value: 0.2746
## 
## 
## 
## ============================================================
## Outcome: SelfExploit_G_mean   |  Level: general (_G) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond
## N used: 598
## 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.364, SE=0.093, t=3.894, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4239 -0.5422  0.0761  0.7192  2.7078 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.29551    0.04670  91.984  < 2e-16 ***
## Risk_cond            0.36372    0.09340   3.894  0.00011 ***
## Help_cond           -0.01801    0.09340  -0.193  0.84716    
## Risk_cond:Help_cond  0.24984    0.18679   1.337  0.18157    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.138 on 594 degrees of freedom
## Multiple R-squared:  0.02855,    Adjusted R-squared:  0.02364 
## F-statistic: 5.818 on 3 and 594 DF,  p-value: 0.0006377
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SelfExploit_G_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## 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.361, SE=0.089, t=4.048, p=<.001
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9648 -0.6211  0.1426  0.6856  2.9887 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          4.31027    0.04460  96.643  < 2e-16 ***
## Risk_cond            0.36073    0.08912   4.048 5.86e-05 ***
## Help_cond           -0.11098    0.08993  -1.234    0.218    
## Attitude             0.33536    0.04350   7.709 5.38e-14 ***
## Risk_cond:Help_cond  0.22473    0.17826   1.261    0.208    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.086 on 593 degrees of freedom
## Multiple R-squared:  0.117,  Adjusted R-squared:  0.1111 
## F-statistic: 19.65 on 4 and 593 DF,  p-value: 3.358e-15
## 
## 
## 
## ============================================================
## Outcome: SelfExploit_S_mean   |  Level: specific (_S) 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond
## N used: 598
## 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)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6096 -0.9429 -0.2763  0.8229  4.7246 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.47034    0.05240  47.140   <2e-16 ***
## Risk_cond           -0.05574    0.10481  -0.532   0.5951    
## Help_cond            0.17932    0.10481   1.711   0.0876 .  
## Risk_cond:Help_cond  0.30982    0.20962   1.478   0.1399    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.277 on 594 degrees of freedom
## Multiple R-squared:  0.009438,   Adjusted R-squared:  0.004435 
## F-statistic: 1.886 on 3 and 594 DF,  p-value: 0.1306
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: SelfExploit_S_mean ~ Risk_cond * Help_cond + Attitude
## N used: 598
## 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)]
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7953 -1.0372 -0.2746  0.9006  4.4940 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          2.47664    0.05215  47.490   <2e-16 ***
## Risk_cond           -0.05701    0.10421  -0.547   0.5845    
## Help_cond            0.13967    0.10516   1.328   0.1846    
## Attitude             0.14301    0.05087   2.811   0.0051 ** 
## Risk_cond:Help_cond  0.29911    0.20845   1.435   0.1518    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.27 on 593 degrees of freedom
## Multiple R-squared:  0.02247,    Adjusted R-squared:  0.01587 
## F-statistic: 3.407 on 4 and 593 DF,  p-value: 0.009087
## 
## 
## 
## ============================================================
## Outcome: GlobalSupportExpl   |  Level: unknown level 
## ============================================================
## 
## ------------------------------------------------------------
## Heroism + occupation as a covariate 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond
## N used: 598
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2666 -0.6419 -0.0993  0.4744  3.9460 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)  
## (Intercept)          0.04998    0.03540   1.412    0.159  
## Risk_cond           -0.14883    0.07080  -2.102    0.036 *
## Help_cond            0.02862    0.07080   0.404    0.686  
## Risk_cond:Help_cond  0.11295    0.14161   0.798    0.425  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8627 on 594 degrees of freedom
## Multiple R-squared:  0.008856,   Adjusted R-squared:  0.00385 
## F-statistic: 1.769 on 3 and 594 DF,  p-value: 0.1519
## 
## 
## ------------------------------------------------------------
## Heroism + occupation and attitude as covariates) 
## Formula: GlobalSupportExpl ~ Risk_cond * Help_cond + Attitude
## N used: 598
## Hypotheses: (no mapping found for this outcome name)
## ------------------------------------------------------------
## 
## Call:
## lm(formula = form, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9498 -0.6051 -0.0970  0.4870  3.0056 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.04045    0.03427   1.180   0.2384    
## Risk_cond           -0.14690    0.06848  -2.145   0.0323 *  
## Help_cond            0.08866    0.06910   1.283   0.2000    
## Attitude            -0.21660    0.03343  -6.479 1.94e-10 ***
## Risk_cond:Help_cond  0.12917    0.13698   0.943   0.3461    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8344 on 593 degrees of freedom
## Multiple R-squared:  0.07438,    Adjusted R-squared:  0.06814 
## F-statistic: 11.91 on 4 and 593 DF,  p-value: 2.569e-09

Thanks for reading our study report. You can check the research project webpage at https://research.kent.ac.uk/hard-to-be-a-hero/

For any question regarding this study or this research project, you can contact me at j.moneger@kent.ac.uk