Main hypotheses
In this section, we will test each hypothesis. We follow this structure:
- Main model:
DV ~ Courage * Suffering + Job_condition(in human language: testing the effect of courage, suffering, their interaction on the DV while accounting for the effect of the job condition on the DV (i.e., using job as a covariate))
In just this simple model, we can test hypotheses 1 to 5.
Running simple diagnostics of the model (homoscedasticity, normality of residuals’ distributions)
Computing a robust version of the model using robust regressions: less sensitive to assumptions violations. Just to check if things change drastically between the two types of regression.
Model 2 using Job as a moderator of each effect rather than a simple covariate:
DV ~ Courage * Suffering + Courage:Job_condition + Suffering:Job_condition + Job_condition– in human language: the effect of courage, suffering, their interaction, the interaction between job and courage, and the interaction between suffering and job, and the main effect of job on the DVModel 3 adding attitude to the main model to assess Halo effect:
DV ~ Courage * Suffering + Job_condition + AttitudeModel 4 adding attitude to model 2 for the same reasons:
DV ~ Courage * Suffering + Courage:Job_condition + Suffering:Job_condition + Job + AttitudeAssessing how the Halo effect drive Heroism by comparing Model 1 to Model 3, and Model 2 to Model 4 using anova.
We then repeat these steps for each outcomes: Heroism rating, Victim rating, Victimisation score, Perceived endurance, and Assumptions of vulnerability.
Heroism perception
Model 1: DV ~ Courage * Suffering + Job_condition
The default contrast associated with the suffering condition is a treatment contrast; and it’s exactly what we want (see registration)
## [1] "No_Suff" "Phys_suff" "Psych_Suff"
## Phys_suff Psych_Suff
## No_Suff 0 0
## Phys_suff 1 0
## Psych_Suff 0 1
Courage will be sum-to-zero coded though (that way, any effect is estimated across the courage conditions, rather than in the control condition of courage, see registration for details):
We can run our models:
##
## Call:
## lm(formula = HeroVictim_N_1 ~ Job + Suffering * Courage_Dummy,
## data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.2008 -0.7014 0.3291 0.8816 1.9604
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.09684 0.08563 71.198 < 2e-16 ***
## JobSoldier -0.56145 0.09404 -5.971 3.12e-09 ***
## JobWelder -0.95308 0.09422 -10.116 < 2e-16 ***
## SufferingPhys_suff 0.11975 0.09439 1.269 0.205
## SufferingPsych_Suff 0.09377 0.09421 0.995 0.320
## Courage_Dummy 0.20840 0.13340 1.562 0.119
## SufferingPhys_suff:Courage_Dummy -0.17683 0.18877 -0.937 0.349
## SufferingPsych_Suff:Courage_Dummy -0.06394 0.18842 -0.339 0.734
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.334 on 1193 degrees of freedom
## Multiple R-squared: 0.0837, Adjusted R-squared: 0.07833
## F-statistic: 15.57 on 7 and 1193 DF, p-value: < 2.2e-16
Except an effect where Nurses Heroism > Soldier heroism > Welders heroism — i’m afraid there’s nothing to see here.
H1b: Individuals described as physically suffering
(vs not suffering) will be perceived more as heroes Nope… –> b =
0.12, t(1193) = 1.269, p = .21 (check the line
SufferingPhys_suff in output)
H2b: Individuals described as psychologically
suffering (vs not suffering) will be perceived more as heroes Nope…
–> b = 0.094, t(1193) = 0.995, p = 0.320 (check the line
SufferingPsych_Suff in output)
H3b: Individuals described as courageous (vs not
courageous) will be perceived more as heroes* Nope –> Within the no
suffering: Courage_Dummy, b = 0.21, t(1193) = 1.562, p = 0.12 (check the
line Courage_Dummy in output)
For H3, we also registered testing Omnibus (across all suffering
conditions). To obtain the marginal effect of Courage averaged across
all suffering conditions, we use the emmeans package to
estimate the Courage effect at each level of Suffering and then average
these effects using equal weights.
Because we plan balanced cell sizes, the choice between equal and proportional weights should make negligible difference.
iv_slopes <-emmeans::emtrends(mod1, specs = "Suffering", var = "Courage_Dummy")
emmeans(iv_slopes, specs = ~ 1, weights = "equal")## 1 Courage_Dummy.trend SE df lower.CL upper.CL
## overall 0.128 0.077 1193 -0.0229 0.279
##
## Results are averaged over the levels of: Job, Courage_Dummy, Suffering
## Confidence level used: 0.95
Nope –> across conditions, it is not significant, as indicated by 95%CI including 0.
H4a: The positive effect of courageous descriptions on Heroism will be stronger when workers are described as physically suffering (vs not suffering). Nope –> SufferingPhys_suff:Courage_Dummy - b = -0.17683, t(1193) = -0.937, p = 0.349
H5a: The positive effect of courageous descriptions on Heroism will be stronger when workers are described as psychologically suffering (vs not suffering). Nope –> SufferingPsych_Suff:Courage_Dummy b = -0.06394, t(1193) = -0.339, p = 0.734
Conclusion on main model for Heroism perception: Heroism perception across target occupations were not different depending on the experimental conditions.
Model 2: job as a moderator?
We can move to our second model, accounting for occupation type:
### Model 2: Target outcome ~ Suffering * Courage + Occupation:Suffering + Occupation:Courage + Occupation
summary(mod2 <-lm(HeroVictim_N_1 ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job, data = LongDF_num)) ##
## Call:
## lm(formula = HeroVictim_N_1 ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.2334 -0.6877 0.3240 0.8975 1.9757
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.05147 0.11457 52.821 < 2e-16 ***
## SufferingPhys_suff 0.14373 0.16293 0.882 0.37788
## SufferingPsych_Suff 0.20414 0.16173 1.262 0.20710
## Courage_Dummy 0.10215 0.17154 0.596 0.55162
## JobSoldier -0.50934 0.16293 -3.126 0.00181 **
## JobWelder -0.86704 0.16356 -5.301 1.37e-07 ***
## SufferingPhys_suff:Courage_Dummy -0.17863 0.18907 -0.945 0.34496
## SufferingPsych_Suff:Courage_Dummy -0.06433 0.18872 -0.341 0.73325
## SufferingPhys_suff:JobSoldier -0.02432 0.23107 -0.105 0.91620
## SufferingPsych_Suff:JobSoldier -0.13027 0.23022 -0.566 0.57159
## SufferingPhys_suff:JobWelder -0.05050 0.23151 -0.218 0.82738
## SufferingPsych_Suff:JobWelder -0.20481 0.23088 -0.887 0.37521
## Courage_Dummy:JobSoldier 0.10548 0.18837 0.560 0.57563
## Courage_Dummy:JobWelder 0.21805 0.18874 1.155 0.24821
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.336 on 1187 degrees of freedom
## Multiple R-squared: 0.08542, Adjusted R-squared: 0.0754
## F-statistic: 8.528 on 13 and 1187 DF, p-value: < 2.2e-16
This models gives us the slope difference for each level of suffering between Nurses (0) and Welders (1) and Nurses (0) and (Soldiers).
For interpreting how job influence slope, it is more useful to use Anova(Mod2). That way we can just bypass any interpretation if the overall moderation is null. If it ain’t – then dig in.
Ok, so – nothing of interest is happening here. There is no Job x Condition interaction. Only the same main job effect.
A bit of color for this dull report:
emm_JS <- emmeans(
mod2,
~ Job * Suffering | Courage_Dummy,
at = list(Courage_Dummy = c(-0.5, 0.5))
)
emm_JS_df <- as.data.frame(emm_JS)
emm_JS_df$Job <- factor(
emm_JS_df$Job,
levels = c("Nurses", "Soldier", "Welder")
)
emm_JS_df$Suffering <- factor(
emm_JS_df$Suffering,
levels = c("No_Suff", "Phys_suff", "Psych_Suff"),
labels = c("No suffering", "Physical", "Psychological")
)
emm_JS_df$Courage_Label <- ifelse(
emm_JS_df$Courage_Dummy == -0.5,
"Non-courageous",
"Courageous"
)
ggplot(
emm_JS_df,
aes(
x = Suffering,
y = emmean,
fill = Job
)
) +
geom_col(
position = position_dodge(width = 0.80),
width = 0.70,
color = "black"
) +
geom_errorbar(
aes(
ymin = lower.CL,
ymax = upper.CL
),
position = position_dodge(width = 0.80),
width = 0.20
) +
facet_wrap(~ Courage_Label) +
labs(
x = "Suffering condition",
y = "Estimated marginal mean",
fill = "Job"
) +
theme_classic(base_size = 14)Model 3: Attitude as a covariate
Then model 3, adds attitude to model 1:
summary(mod3 <-lm(HeroVictim_N_1 ~ Suffering*Courage_Dummy + Job + Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = HeroVictim_N_1 ~ Suffering * Courage_Dummy + Job +
## Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.0547 -0.5568 0.2687 0.4609 3.3499
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.587939 0.194140 3.028 0.00251 **
## SufferingPhys_suff 0.038286 0.071237 0.537 0.59105
## SufferingPsych_Suff 0.025115 0.071088 0.353 0.72393
## Courage_Dummy -0.011251 0.100871 -0.112 0.91121
## JobSoldier 0.141103 0.074667 1.890 0.05903 .
## JobWelder -0.528234 0.072447 -7.291 5.58e-13 ***
## Attitude_N 0.850971 0.028281 30.090 < 2e-16 ***
## SufferingPhys_suff:Courage_Dummy 0.009738 0.142504 0.068 0.94553
## SufferingPsych_Suff:Courage_Dummy 0.037439 0.142143 0.263 0.79229
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.006 on 1192 degrees of freedom
## Multiple R-squared: 0.4792, Adjusted R-squared: 0.4757
## F-statistic: 137.1 on 8 and 1192 DF, p-value: < 2.2e-16
Attitude is definitely correlated with perceived heroism, p < .001 – but nothing new.
Model 4: job as moderator + attitude as covariate
Model 4, adds attitude to model 2:
summary(mod4 <-lm(HeroVictim_N_1 ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job+ Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = HeroVictim_N_1 ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job + Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.0185 -0.5787 0.2351 0.5352 3.3303
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.51842 0.20354 2.547 0.010991 *
## SufferingPhys_suff 0.09642 0.12288 0.785 0.432780
## SufferingPsych_Suff 0.13262 0.12198 1.087 0.277158
## Courage_Dummy 0.05161 0.12937 0.399 0.689994
## JobSoldier 0.26294 0.12553 2.095 0.036419 *
## JobWelder -0.48040 0.12401 -3.874 0.000113 ***
## Attitude_N 0.85317 0.02842 30.023 < 2e-16 ***
## SufferingPhys_suff:Courage_Dummy 0.01054 0.14272 0.074 0.941125
## SufferingPsych_Suff:Courage_Dummy 0.03742 0.14235 0.263 0.792680
## SufferingPhys_suff:JobSoldier -0.16177 0.17431 -0.928 0.353562
## SufferingPsych_Suff:JobSoldier -0.19828 0.17362 -1.142 0.253683
## SufferingPhys_suff:JobWelder -0.01367 0.17459 -0.078 0.937593
## SufferingPsych_Suff:JobWelder -0.12718 0.17413 -0.730 0.465283
## Courage_Dummy:JobSoldier -0.10792 0.14223 -0.759 0.448154
## Courage_Dummy:JobWelder -0.08326 0.14268 -0.584 0.559650
## ---
## 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.4804, Adjusted R-squared: 0.4742
## F-statistic: 78.31 on 14 and 1186 DF, p-value: < 2.2e-16
Model comparisons
We will assess if the effects of our manipulations observed in the model hold true when accounting for attitude as a covariate (i.e., Suffering and Courage main effects in model 3 and 4).
To account for the possible effect of attitude (i.e., Halo effect), we will compare a model accounting for attitude as a covariate to a model not accounting for attitude as a covariate in an ANOVA (i.e., we will compare Model 1 to Model 3; and Model 2 to Model 4) and evaluate which model provides the best fit with the data.
As could be expected, accounting for attitude reduce error. In model 1 vs 3, the residual sum of squares (RSS) is 2122 vs 1206.6 – that’s a HUGE difference, as indicated by the F value, F(1, 1186) = 905.38, p < .0001 Same-ish for model 2 vs 4.
Diagnostics
Toggle details regarding diagnostic and robustness checks
Let’s assess homoscedasticity and normality of residuals for the main model:
the importan plots to look at are:
- QQ plot: must be a straight line… not looking good
- fitted vs residuals: must be horizontal with noise dispersed randomly across the plot… meh.
Let’s run a robust model to assess if it changes any decision:
##
## Call: rlm(formula = HeroVictim_N_1 ~ Job + Suffering * Courage_Dummy,
## data = LongDF_num)
## Residuals:
## Min 1Q Median 3Q Max
## -5.2912 -0.8690 0.1400 0.8061 1.8545
##
## Coefficients:
## Value Std. Error t value
## (Intercept) 6.1923 0.0792 78.2147
## JobSoldier -0.4529 0.0869 -5.2096
## JobWelder -0.9261 0.0871 -10.6319
## SufferingPhys_suff 0.1001 0.0873 1.1472
## SufferingPsych_Suff 0.0656 0.0871 0.7534
## Courage_Dummy 0.2413 0.1233 1.9562
## SufferingPhys_suff:Courage_Dummy -0.2390 0.1745 -1.3694
## SufferingPsych_Suff:Courage_Dummy -0.1132 0.1742 -0.6500
##
## Residual standard error: 1.246 on 1193 degrees of freedom
Comparing the betas (Value in rlm) and t-values does not result in decision change… effect of courage appears slightly closer to the target, but not quite (generally, a t becomes significant when > 1.96).
Now, we can do the same for each remaining outcomes.
Other outcomes
Victim perception
This is a single item measure: to what extent do you consider [Nurses/Soldiers/Welders] to be victims
Model 1: DV ~ Courage * Suffering + Job_condition
##
## Call:
## lm(formula = HeroVictim_N_2 ~ Job + Suffering * Courage_Dummy,
## data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.1859 -1.1859 -0.0383 1.0570 4.0130
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.50862 0.09955 35.243 < 2e-16 ***
## JobSoldier -0.49598 0.10932 -4.537 6.29e-06 ***
## JobWelder -0.79034 0.10953 -7.215 9.54e-13 ***
## SufferingPhys_suff 0.53885 0.10973 4.911 1.03e-06 ***
## SufferingPsych_Suff 0.45221 0.10952 4.129 3.90e-05 ***
## Courage_Dummy -0.05135 0.15508 -0.331 0.741
## SufferingPhys_suff:Courage_Dummy 0.32823 0.21946 1.496 0.135
## SufferingPsych_Suff:Courage_Dummy 0.01571 0.21905 0.072 0.943
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.551 on 1193 degrees of freedom
## Multiple R-squared: 0.06582, Adjusted R-squared: 0.06034
## F-statistic: 12.01 on 7 and 1193 DF, p-value: 7.161e-15
H1a: Individuals described as physically suffering
(vs not suffering) will be perceived more as victims YES –> b = 0.54,
t(1193) = 4.91, p < .001 (check the line
SufferingPhys_suff in output)
H2a: Individuals described as psychologically
suffering (vs not suffering) will be perceived more as victims YES –>
(check the line SufferingPsych_Suff in output)
H3a: Individuals described as courageous (vs not
courageous) will be perceived more as victims* Nope –> (check the
line Courage_Dummy in output)
For H3, we also registered testing Omnibus (across all suffering
conditions). To obtain the marginal effect of Courage averaged across
all suffering conditions, we use the emmeans package to
estimate the Courage effect at each level of Suffering and then average
these effects using equal weights.
Because we plan balanced cell sizes, the choice between equal and proportional weights should make negligible difference.
iv_slopes <-emmeans::emtrends(mod1, specs = "Suffering", var = "Courage_Dummy")
emmeans(iv_slopes, specs = ~ 1, weights = "equal")## 1 Courage_Dummy.trend SE df lower.CL upper.CL
## overall 0.0633 0.0895 1193 -0.112 0.239
##
## Results are averaged over the levels of: Job, Courage_Dummy, Suffering
## Confidence level used: 0.95
Nope –> across conditions, it is not significant, as indicated by 95%CI including 0.
H4b: H4b: The negative effect of courageous
descriptions on Victim perception will be stronger when workers are
described as physically suffering (vs not suffering).
Nope –> see SufferingPhys_suff:Courage_Dummy
H5b: The negative effect of courageous descriptions
on Victim perception will be stronger when workers are described as
psychologically suffering (vs not suffering).
Nope –> seeSufferingPsych_Suff:Courage_Dummy
Conclusion on main model for Victim perception: Workers described as physically or psychologically suffering were perceived as significantly more victims than workers described as not suffering.
Model 2: job as a moderator?
We can move to our second model, accounting for occupation type:
### Model 2: Target outcome ~ Suffering * Courage + Occupation:Suffering + Occupation:Courage + Occupation
summary(mod2 <-lm(HeroVictim_N_2 ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job, data = LongDF_num)) ##
## Call:
## lm(formula = HeroVictim_N_2 ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.110 -1.212 -0.053 1.075 3.993
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.58824 0.13319 26.941 < 2e-16 ***
## SufferingPhys_suff 0.39020 0.18942 2.060 0.03962 *
## SufferingPsych_Suff 0.36050 0.18802 1.917 0.05543 .
## Courage_Dummy -0.06437 0.19942 -0.323 0.74693
## JobSoldier -0.55799 0.18942 -2.946 0.00328 **
## JobWelder -0.97044 0.19015 -5.104 3.88e-07 ***
## SufferingPhys_suff:Courage_Dummy 0.32829 0.21981 1.494 0.13557
## SufferingPsych_Suff:Courage_Dummy 0.01697 0.21940 0.077 0.93836
## SufferingPhys_suff:JobSoldier 0.14958 0.26863 0.557 0.57776
## SufferingPsych_Suff:JobSoldier 0.03759 0.26764 0.140 0.88832
## SufferingPhys_suff:JobWelder 0.29956 0.26914 1.113 0.26594
## SufferingPsych_Suff:JobWelder 0.24049 0.26841 0.896 0.37045
## Courage_Dummy:JobSoldier 0.10984 0.21900 0.502 0.61607
## Courage_Dummy:JobWelder -0.07302 0.21942 -0.333 0.73934
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.553 on 1187 degrees of freedom
## Multiple R-squared: 0.06758, Adjusted R-squared: 0.05737
## F-statistic: 6.618 on 13 and 1187 DF, p-value: 2.471e-12
Well look at that. When using job as a moderator, while the effect of physical suffering remains significant, the effect of psych suffering was cancelled out. Why? Because when we take into consideration that the effect of psychological suffering may be dependent on the type of occupation, then the effect of psych suffering across occupations is reduced, because it was ‘hiding’ variance explained by a job x suffering interaction. Note that there are NO significant interaction here, but that’s an explanation of why main effect disappeared.
A bit of color for this dull report:
emm_JS <- emmeans(
mod2,
~ Job * Suffering | Courage_Dummy,
at = list(Courage_Dummy = c(-0.5, 0.5))
)
emm_JS_df <- as.data.frame(emm_JS)
emm_JS_df$Job <- factor(
emm_JS_df$Job,
levels = c("Nurses", "Soldier", "Welder")
)
emm_JS_df$Suffering <- factor(
emm_JS_df$Suffering,
levels = c("No_Suff", "Phys_suff", "Psych_Suff"),
labels = c("No suffering", "Physical", "Psychological")
)
emm_JS_df$Courage_Label <- ifelse(
emm_JS_df$Courage_Dummy == -0.5,
"Non-courageous",
"Courageous"
)
ggplot(
emm_JS_df,
aes(
x = Suffering,
y = emmean,
fill = Job
)
) +
geom_col(
position = position_dodge(width = 0.80),
width = 0.70,
color = "black"
) +
geom_errorbar(
aes(
ymin = lower.CL,
ymax = upper.CL
),
position = position_dodge(width = 0.80),
width = 0.20
) +
facet_wrap(~ Courage_Label) +
labs(
x = "Suffering condition",
y = "Estimated marginal mean",
fill = "Job"
) +
theme_classic(base_size = 14)Model 3: Attitude as a covariate
Then model 3, adds attitude to model 1:
summary(mod3 <-lm(HeroVictim_N_2 ~ Suffering*Courage_Dummy + Job + Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = HeroVictim_N_2 ~ Suffering * Courage_Dummy + Job +
## Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.1607 -1.1874 -0.0701 1.0801 4.0880
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.905650 0.299140 13.056 < 2e-16 ***
## SufferingPhys_suff 0.544723 0.109765 4.963 7.96e-07 ***
## SufferingPsych_Suff 0.457159 0.109535 4.174 3.22e-05 ***
## Courage_Dummy -0.035515 0.155427 -0.229 0.819
## JobSoldier -0.546618 0.115050 -4.751 2.27e-06 ***
## JobWelder -0.820955 0.111630 -7.354 3.56e-13 ***
## Attitude_N -0.061330 0.043577 -1.407 0.160
## SufferingPhys_suff:Courage_Dummy 0.314786 0.219577 1.434 0.152
## SufferingPsych_Suff:Courage_Dummy 0.008402 0.219021 0.038 0.969
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.55 on 1192 degrees of freedom
## Multiple R-squared: 0.06737, Adjusted R-squared: 0.06111
## F-statistic: 10.76 on 8 and 1192 DF, p-value: 1.036e-14
Attitude has nothing to do with perception of victimhood, p = 0.160
Model 4: job as moderator + attitude as covariate
Model 4, adds attitude to model 2:
summary(mod4 <-lm(HeroVictim_N_2 ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job+ Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = HeroVictim_N_2 ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job + Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.0789 -1.2696 -0.0776 1.1029 4.0237
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.98135 0.31367 12.693 < 2e-16 ***
## SufferingPhys_suff 0.39356 0.18936 2.078 0.03789 *
## SufferingPsych_Suff 0.36558 0.18798 1.945 0.05204 .
## Courage_Dummy -0.06078 0.19936 -0.305 0.76053
## JobSoldier -0.61286 0.19345 -3.168 0.00157 **
## JobWelder -0.99791 0.19111 -5.222 2.09e-07 ***
## Attitude_N -0.06062 0.04379 -1.384 0.16657
## SufferingPhys_suff:Courage_Dummy 0.31485 0.21994 1.432 0.15255
## SufferingPsych_Suff:Courage_Dummy 0.00974 0.21938 0.044 0.96460
## SufferingPhys_suff:JobSoldier 0.15934 0.26862 0.593 0.55317
## SufferingPsych_Suff:JobSoldier 0.04242 0.26756 0.159 0.87404
## SufferingPhys_suff:JobWelder 0.29694 0.26905 1.104 0.26996
## SufferingPsych_Suff:JobWelder 0.23498 0.26834 0.876 0.38139
## Courage_Dummy:JobSoldier 0.12500 0.21919 0.570 0.56858
## Courage_Dummy:JobWelder -0.05162 0.21988 -0.235 0.81444
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.553 on 1186 degrees of freedom
## Multiple R-squared: 0.06909, Adjusted R-squared: 0.0581
## F-statistic: 6.287 on 14 and 1186 DF, p-value: 2.868e-12
Model comparisons
We will assess if the effects of our manipulations observed in the model hold true when accounting for attitude as a covariate (i.e., Suffering and Courage main effects in model 3 and 4).
To account for the possible effect of attitude (i.e., Halo effect), we will compare a model accounting for attitude as a covariate to a model not accounting for attitude as a covariate in an ANOVA (i.e., we will compare Model 1 to Model 3; and Model 2 to Model 4) and evaluate which model provides the best fit with the data.
As could be expected, accounting for attitude reduce error.
Diagnostics
Toggle details regarding diagnostic and robustness checks
Let’s assess homoscedasticity and normality of residuals for the main model:
the importan plots to look at are:
- QQ plot: must be a straight line… not looking good
- fitted vs residuals: must be horizontal with noise dispersed randomly across the plot… meh.
Let’s run a robust model to assess if it changes any decision:
##
## Call: rlm(formula = HeroVictim_N_2 ~ Job + Suffering * Courage_Dummy,
## data = LongDF_num)
## Residuals:
## Min 1Q Median 3Q Max
## -3.21559 -1.14863 0.03151 1.09809 4.08952
##
## Coefficients:
## Value Std. Error t value
## (Intercept) 3.4820 0.1043 33.3831
## JobSoldier -0.5425 0.1145 -4.7363
## JobWelder -0.8173 0.1148 -7.1220
## SufferingPhys_suff 0.5644 0.1150 4.9090
## SufferingPsych_Suff 0.4519 0.1147 3.9385
## Courage_Dummy -0.0580 0.1625 -0.3570
## SufferingPhys_suff:Courage_Dummy 0.3965 0.2299 1.7243
## SufferingPsych_Suff:Courage_Dummy -0.0060 0.2295 -0.0263
##
## Residual standard error: 1.665 on 1193 degrees of freedom
Comparing the betas (Value in rlm) and t-values does not result in decision change.
Victimisation
This is a global score of victimisation that concatenates a
general-level measure of victimisation (targeting perception that
workers are victimised, exploited, unfairly treated) and a specific
measure of victimisation wich targets the need to protect the workers,
and do more for their health. Rationale for concatenating the two
measures is provided in the registration. See also section
measurement model of the present report.
Model 1: DV ~ Courage * Suffering + Job_condition
LongDF_num$GlobalVict <- (LongDF_num$Victim_G_mean + LongDF_num$Victim_S_mean)/2 # Compute mean between specific and general levels measure of victimization
summary(mod1<-lm(GlobalVict ~ Job + Suffering*Courage_Dummy, data = LongDF_num)) # ##
## Call:
## lm(formula = GlobalVict ~ Job + Suffering * Courage_Dummy, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.7063 -0.7223 -0.0291 0.7705 2.9305
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.53770 0.06641 68.333 < 2e-16 ***
## JobSoldier -0.81007 0.07292 -11.109 < 2e-16 ***
## JobWelder -0.83707 0.07306 -11.457 < 2e-16 ***
## SufferingPhys_suff 0.51882 0.07319 7.088 2.32e-12 ***
## SufferingPsych_Suff 0.44397 0.07306 6.077 1.64e-09 ***
## Courage_Dummy 0.01714 0.10345 0.166 0.868
## SufferingPhys_suff:Courage_Dummy 0.01673 0.14639 0.114 0.909
## SufferingPsych_Suff:Courage_Dummy -0.11864 0.14611 -0.812 0.417
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.034 on 1193 degrees of freedom
## Multiple R-squared: 0.1614, Adjusted R-squared: 0.1565
## F-statistic: 32.8 on 7 and 1193 DF, p-value: < 2.2e-16
H8a: participants in the physical suffering (vs no suffering) condition will perceived workers as more victimised. ==> Yes indeed
H8b: participants in the psychological suffering (vs no suffering) condition will perceived workers as more victimised. ==> Yes indeed
Conclusion on main model for Victimisation: As predicted, we see workers physically or psychologically suffering described as being signicantly more victimised and needing protection
Model 2: job as a moderator?
We can move to our second model, accounting for occupation type:
### Model 2: Target outcome ~ Suffering * Courage + Occupation:Suffering + Occupation:Courage + Occupation
summary(mod2 <-lm(GlobalVict ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job, data = LongDF_num)) ##
## Call:
## lm(formula = GlobalVict ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.7204 -0.7249 0.0228 0.7721 2.8494
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.56005 0.08882 51.343 < 2e-16 ***
## SufferingPhys_suff 0.49005 0.12631 3.880 0.00011 ***
## SufferingPsych_Suff 0.40537 0.12538 3.233 0.00126 **
## Courage_Dummy -0.02375 0.13298 -0.179 0.85831
## JobSoldier -0.76166 0.12631 -6.030 2.19e-09 ***
## JobWelder -0.95431 0.12680 -7.526 1.03e-13 ***
## SufferingPhys_suff:Courage_Dummy 0.01637 0.14658 0.112 0.91107
## SufferingPsych_Suff:Courage_Dummy -0.11805 0.14630 -0.807 0.41989
## SufferingPhys_suff:JobSoldier -0.09065 0.17913 -0.506 0.61293
## SufferingPsych_Suff:JobSoldier -0.05433 0.17847 -0.304 0.76085
## SufferingPhys_suff:JobWelder 0.17844 0.17947 0.994 0.32031
## SufferingPsych_Suff:JobWelder 0.17262 0.17899 0.964 0.33501
## Courage_Dummy:JobSoldier 0.06157 0.14603 0.422 0.67338
## Courage_Dummy:JobWelder 0.06197 0.14632 0.424 0.67199
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.036 on 1187 degrees of freedom
## Multiple R-squared: 0.1635, Adjusted R-squared: 0.1543
## F-statistic: 17.85 on 13 and 1187 DF, p-value: < 2.2e-16
Nothing new here.
A bit of color for this dull report:
emm_JS <- emmeans(
mod2,
~ Job * Suffering | Courage_Dummy,
at = list(Courage_Dummy = c(-0.5, 0.5))
)
emm_JS_df <- as.data.frame(emm_JS)
emm_JS_df$Job <- factor(
emm_JS_df$Job,
levels = c("Nurses", "Soldier", "Welder")
)
emm_JS_df$Suffering <- factor(
emm_JS_df$Suffering,
levels = c("No_Suff", "Phys_suff", "Psych_Suff"),
labels = c("No suffering", "Physical", "Psychological")
)
emm_JS_df$Courage_Label <- ifelse(
emm_JS_df$Courage_Dummy == -0.5,
"Non-courageous",
"Courageous"
)
ggplot(
emm_JS_df,
aes(
x = Suffering,
y = emmean,
fill = Job
)
) +
geom_col(
position = position_dodge(width = 0.80),
width = 0.70,
color = "black"
) +
geom_errorbar(
aes(
ymin = lower.CL,
ymax = upper.CL
),
position = position_dodge(width = 0.80),
width = 0.20
) +
facet_wrap(~ Courage_Label) +
labs(
x = "Suffering condition",
y = "Estimated marginal mean",
fill = "Job"
) +
theme_classic(base_size = 14)Model 3: Attitude as a covariate
Then model 3, adds attitude to model 1:
summary(mod3 <-lm(GlobalVict ~ Suffering*Courage_Dummy + Job + Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = GlobalVict ~ Suffering * Courage_Dummy + Job + Attitude_N,
## data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.6350 -0.7228 0.0125 0.7580 3.0122
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.239993 0.199493 21.254 < 2e-16 ***
## SufferingPhys_suff 0.514423 0.073201 7.028 3.53e-12 ***
## SufferingPsych_Suff 0.440261 0.073048 6.027 2.22e-09 ***
## Courage_Dummy 0.005271 0.103652 0.051 0.959
## JobSoldier -0.772102 0.076725 -10.063 < 2e-16 ***
## JobWelder -0.814110 0.074445 -10.936 < 2e-16 ***
## Attitude_N 0.045987 0.029061 1.582 0.114
## SufferingPhys_suff:Courage_Dummy 0.026812 0.146433 0.183 0.855
## SufferingPsych_Suff:Courage_Dummy -0.113159 0.146062 -0.775 0.439
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.034 on 1192 degrees of freedom
## Multiple R-squared: 0.1632, Adjusted R-squared: 0.1576
## F-statistic: 29.05 on 8 and 1192 DF, p-value: < 2.2e-16
Excluding Victim_SN1: Attitude influences victimisation Without item exclusion: Attitude has no effect on victimisation.
Model 4: job as moderator + attitude as covariate
Model 4, adds attitude to model 2:
summary(mod4 <-lm(GlobalVict ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job+ Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = GlobalVict ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job + Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.6443 -0.7366 0.0061 0.7505 2.9817
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.25565 0.20911 20.352 < 2e-16 ***
## SufferingPhys_suff 0.48745 0.12624 3.861 0.000119 ***
## SufferingPsych_Suff 0.40144 0.12532 3.203 0.001394 **
## Courage_Dummy -0.02653 0.13290 -0.200 0.841837
## JobSoldier -0.71917 0.12896 -5.577 3.04e-08 ***
## JobWelder -0.93303 0.12740 -7.324 4.45e-13 ***
## Attitude_N 0.04694 0.02919 1.608 0.108157
## SufferingPhys_suff:Courage_Dummy 0.02678 0.14662 0.183 0.855093
## SufferingPsych_Suff:Courage_Dummy -0.11245 0.14625 -0.769 0.442093
## SufferingPhys_suff:JobSoldier -0.09821 0.17907 -0.548 0.583506
## SufferingPsych_Suff:JobSoldier -0.05807 0.17837 -0.326 0.744791
## SufferingPhys_suff:JobWelder 0.18046 0.17936 1.006 0.314540
## SufferingPsych_Suff:JobWelder 0.17690 0.17889 0.989 0.322927
## Courage_Dummy:JobSoldier 0.04983 0.14612 0.341 0.733148
## Courage_Dummy:JobWelder 0.04539 0.14658 0.310 0.756869
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.035 on 1186 degrees of freedom
## Multiple R-squared: 0.1653, Adjusted R-squared: 0.1555
## F-statistic: 16.78 on 14 and 1186 DF, p-value: < 2.2e-16
Model comparisons
We will assess if the effects of our manipulations observed in the model hold true when accounting for attitude as a covariate (i.e., Suffering and Courage main effects in model 3 and 4).
To account for the possible effect of attitude (i.e., Halo effect), we will compare a model accounting for attitude as a covariate to a model not accounting for attitude as a covariate in an ANOVA (i.e., we will compare Model 1 to Model 3; and Model 2 to Model 4) and evaluate which model provides the best fit with the data.
Removing Victim_SN1: Attitude does influence model fit p = .002 With all Victimisation items: Attitude does not add anything to the model.
Diagnostics
Toggle details regarding diagnostic and robustness checks
Let’s assess homoscedasticity and normality of residuals for the main model:
the importan plots to look at are:
- QQ plot: must be a straight line.
- fitted vs residuals: must be horizontal with noise dispersed randomly across the plot.
Let’s run a robust model to assess if it changes any decision:
##
## Call: rlm(formula = GlobalVict ~ Job + Suffering * Courage_Dummy, data = LongDF_num)
## Residuals:
## Min 1Q Median 3Q Max
## -3.76149 -0.73940 -0.02965 0.75008 2.94658
##
## Coefficients:
## Value Std. Error t value
## (Intercept) 4.5548 0.0678 67.2155
## JobSoldier -0.8439 0.0744 -11.3398
## JobWelder -0.8676 0.0746 -11.6370
## SufferingPhys_suff 0.5473 0.0747 7.3278
## SufferingPsych_Suff 0.4619 0.0746 6.1962
## Courage_Dummy 0.0183 0.1056 0.1729
## SufferingPhys_suff:Courage_Dummy -0.0036 0.1494 -0.0243
## SufferingPsych_Suff:Courage_Dummy -0.1513 0.1491 -1.0146
##
## Residual standard error: 1.111 on 1193 degrees of freedom
Comparing the betas (Value in rlm) and t-values does not result in decision change.
Enduring pain
Our measure of willingness to endure pain is a 5 items scale which targets the perception that, when work gets tough and health becomes a concern for workers, the target occupation would still get through their day and get the job done.
Model 1: DV ~ Courage * Suffering + Job_condition
##
## Call:
## lm(formula = Endure_mean ~ Job + Suffering * Courage_Dummy, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.1984 -0.5131 0.1886 0.6726 2.0228
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.81874 0.06646 87.549 < 2e-16 ***
## JobSoldier 0.24788 0.07299 3.396 0.000706 ***
## JobWelder -0.38626 0.07313 -5.282 1.52e-07 ***
## SufferingPhys_suff -0.08732 0.07326 -1.192 0.233512
## SufferingPsych_Suff -0.15048 0.07312 -2.058 0.039806 *
## Courage_Dummy 0.66350 0.10353 6.408 2.11e-10 ***
## SufferingPhys_suff:Courage_Dummy 0.07238 0.14651 0.494 0.621384
## SufferingPsych_Suff:Courage_Dummy 0.15897 0.14624 1.087 0.277218
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.035 on 1193 degrees of freedom
## Multiple R-squared: 0.1649, Adjusted R-squared: 0.16
## F-statistic: 33.66 on 7 and 1193 DF, p-value: < 2.2e-16
H6: Participants in the courage (vs no courage) condition will perceive workers as more likely to endure suffering ==> Yes! People described as more courageous do perceive participants as more likely to endure suffering. This is interesting.
H7a: Participants in the courage (vs no courage) condition will perceive workers as more likely to endure suffering, and this effect will be larger in the high physical suffering condition (vs low suffering condition) ==> Nope… no interaction with suffering.
H7b: Participants in the courage (vs no courage) condition will perceive workers as more likely to endure suffering, and this effect will be larger in the high psychological suffering condition (vs low suffering condition) ==> Nope… no interaction with suffering.
Exploratory note: We can note a small effect of psychological suffering on the perception of enduring, such that participant in the psychological suffering condition thinks that the workers are LESS likely to endure suffering than participants in the control condition — the effect is small
Conclusion on main model for Enduring pains: As predicted, Courageous workers are seen as more likely to endure pain. However, this was not qualified by suffering. Nevertheless, the effect of the courage manipulation is consistent with the idea that we did manipulate courage in the sense of prioriting mission over the self, but that might not be what participants understand to be courage or bravery.
Model 2: job as a moderator?
We can move to our second model, accounting for occupation type:
### Model 2: Target outcome ~ Suffering * Courage + Occupation:Suffering + Occupation:Courage + Occupation
summary(mod2 <-lm(Endure_mean ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job, data = LongDF_num)) ##
## Call:
## lm(formula = Endure_mean ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.1534 -0.5392 0.1600 0.7423 2.2537
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.748529 0.087693 65.553 < 2e-16 ***
## SufferingPhys_suff -0.037043 0.124716 -0.297 0.76651
## SufferingPsych_Suff 0.006747 0.123792 0.055 0.95654
## Courage_Dummy 0.388110 0.131302 2.956 0.00318 **
## JobSoldier 0.364556 0.124716 2.923 0.00353 **
## JobWelder -0.289231 0.125196 -2.310 0.02105 *
## SufferingPhys_suff:Courage_Dummy 0.067383 0.144725 0.466 0.64159
## SufferingPsych_Suff:Courage_Dummy 0.157657 0.144453 1.091 0.27531
## SufferingPhys_suff:JobSoldier -0.144269 0.176867 -0.816 0.41484
## SufferingPsych_Suff:JobSoldier -0.201931 0.176217 -1.146 0.25206
## SufferingPhys_suff:JobWelder -0.011742 0.177206 -0.066 0.94718
## SufferingPsych_Suff:JobWelder -0.272911 0.176725 -1.544 0.12279
## Courage_Dummy:JobSoldier 0.092583 0.144189 0.642 0.52093
## Courage_Dummy:JobWelder 0.747995 0.144468 5.178 2.64e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.023 on 1187 degrees of freedom
## Multiple R-squared: 0.1893, Adjusted R-squared: 0.1804
## F-statistic: 21.32 on 13 and 1187 DF, p-value: < 2.2e-16
Again, the effect of courage. There appears to be an interaction with occupations where nurses vs welders differ in their sensitivity to the courage manipulation… let’s see:
emm_JS <- emmeans(
mod2,
~ Job * Suffering | Courage_Dummy,
at = list(Courage_Dummy = c(-0.5, 0.5))
)
emm_JS_df <- as.data.frame(emm_JS)
emm_JS_df$Job <- factor(
emm_JS_df$Job,
levels = c("Nurses", "Soldier", "Welder")
)
emm_JS_df$Suffering <- factor(
emm_JS_df$Suffering,
levels = c("No_Suff", "Phys_suff", "Psych_Suff"),
labels = c("No suffering", "Physical", "Psychological")
)
emm_JS_df$Courage_Label <- ifelse(
emm_JS_df$Courage_Dummy == -0.5,
"Non-courageous",
"Courageous"
)
ggplot(
emm_JS_df,
aes(
x = Suffering,
y = emmean,
fill = Job
)
) +
geom_col(
position = position_dodge(width = 0.80),
width = 0.70,
color = "black"
) +
geom_errorbar(
aes(
ymin = lower.CL,
ymax = upper.CL
),
position = position_dodge(width = 0.80),
width = 0.20
) +
facet_wrap(~ Courage_Label) +
labs(
x = "Suffering condition",
y = "Estimated marginal mean",
fill = "Job"
) +
theme_classic(base_size = 14)By the naked eye, i would assume that the effect of courage on enduring pain is larger for welders than nurses. Let’s statistically test that:
emm_JS <- emmeans(
mod2,
~ Job * Suffering | Courage_Dummy,
at = list(Courage_Dummy = c(-0.5, 0.5))
)
emm_JS## Courage_Dummy = -0.5:
## Job Suffering emmean SE df lower.CL upper.CL
## Nurses No_Suff 5.55 0.110 1187 5.34 5.77
## Soldier No_Suff 5.87 0.110 1187 5.66 6.09
## Welder No_Suff 4.89 0.111 1187 4.67 5.11
## Nurses Phys_suff 5.48 0.110 1187 5.27 5.70
## Soldier Phys_suff 5.66 0.111 1187 5.44 5.88
## Welder Phys_suff 4.81 0.111 1187 4.59 5.03
## Nurses Psych_Suff 5.48 0.109 1187 5.27 5.70
## Soldier Psych_Suff 5.60 0.111 1187 5.38 5.82
## Welder Psych_Suff 4.55 0.110 1187 4.33 4.76
##
## Courage_Dummy = 0.5:
## Job Suffering emmean SE df lower.CL upper.CL
## Nurses No_Suff 5.94 0.110 1187 5.73 6.16
## Soldier No_Suff 6.35 0.111 1187 6.14 6.57
## Welder No_Suff 6.03 0.112 1187 5.81 6.25
## Nurses Phys_suff 5.94 0.111 1187 5.72 6.16
## Soldier Phys_suff 6.21 0.110 1187 5.99 6.42
## Welder Phys_suff 6.01 0.110 1187 5.80 6.23
## Nurses Psych_Suff 6.03 0.109 1187 5.81 6.24
## Soldier Psych_Suff 6.24 0.110 1187 6.02 6.45
## Welder Psych_Suff 5.84 0.112 1187 5.62 6.06
##
## Confidence level used: 0.95
## Suffering = No_Suff:
## contrast estimate SE df
## (Nurses Courage_Dummy-0.5) - (Soldier Courage_Dummy-0.5) -0.3183 0.144 1187
## (Nurses Courage_Dummy-0.5) - (Welder Courage_Dummy-0.5) 0.6632 0.144 1187
## (Nurses Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -0.3881 0.131 1187
## (Nurses Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -0.7990 0.167 1187
## (Nurses Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -0.4729 0.167 1187
## (Soldier Courage_Dummy-0.5) - (Welder Courage_Dummy-0.5) 0.9815 0.145 1187
## (Soldier Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -0.0698 0.166 1187
## (Soldier Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -0.4807 0.132 1187
## (Soldier Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -0.1546 0.168 1187
## (Welder Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -1.0513 0.167 1187
## (Welder Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -1.4622 0.168 1187
## (Welder Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -1.1361 0.133 1187
## Nurses Courage_Dummy0.5 - Soldier Courage_Dummy0.5 -0.4108 0.144 1187
## Nurses Courage_Dummy0.5 - Welder Courage_Dummy0.5 -0.0848 0.145 1187
## Soldier Courage_Dummy0.5 - Welder Courage_Dummy0.5 0.3261 0.146 1187
## t.ratio p.value
## -2.211 0.2331
## 4.593 0.0001
## -2.956 0.0374
## -4.792 <.0001
## -2.828 0.0538
## 6.768 <.0001
## -0.420 0.9983
## -3.638 0.0039
## -0.922 0.9409
## -6.308 <.0001
## -8.722 <.0001
## -8.567 <.0001
## -2.849 0.0507
## -0.586 0.9920
## 2.240 0.2202
##
## Suffering = Phys_suff:
## contrast estimate SE df
## (Nurses Courage_Dummy-0.5) - (Soldier Courage_Dummy-0.5) -0.1740 0.145 1187
## (Nurses Courage_Dummy-0.5) - (Welder Courage_Dummy-0.5) 0.6750 0.145 1187
## (Nurses Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -0.4555 0.132 1187
## (Nurses Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -0.7221 0.167 1187
## (Nurses Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -0.5285 0.167 1187
## (Soldier Courage_Dummy-0.5) - (Welder Courage_Dummy-0.5) 0.8490 0.145 1187
## (Soldier Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -0.2815 0.168 1187
## (Soldier Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -0.5481 0.132 1187
## (Soldier Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -0.3545 0.167 1187
## (Welder Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -1.1305 0.168 1187
## (Welder Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -1.3970 0.167 1187
## (Welder Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -1.2035 0.132 1187
## Nurses Courage_Dummy0.5 - Soldier Courage_Dummy0.5 -0.2666 0.145 1187
## Nurses Courage_Dummy0.5 - Welder Courage_Dummy0.5 -0.0730 0.145 1187
## Soldier Courage_Dummy0.5 - Welder Courage_Dummy0.5 0.1936 0.145 1187
## t.ratio p.value
## -1.203 0.8356
## 4.664 0.0001
## -3.453 0.0076
## -4.332 0.0002
## -3.171 0.0194
## 5.849 <.0001
## -1.678 0.5468
## -4.147 0.0005
## -2.121 0.2771
## -6.739 <.0001
## -8.357 <.0001
## -9.100 <.0001
## -1.843 0.4385
## -0.505 0.9960
## 1.338 0.7635
##
## Suffering = Psych_Suff:
## contrast estimate SE df
## (Nurses Courage_Dummy-0.5) - (Soldier Courage_Dummy-0.5) -0.1163 0.144 1187
## (Nurses Courage_Dummy-0.5) - (Welder Courage_Dummy-0.5) 0.9361 0.144 1187
## (Nurses Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -0.5458 0.131 1187
## (Nurses Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -0.7547 0.166 1187
## (Nurses Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -0.3576 0.167 1187
## (Soldier Courage_Dummy-0.5) - (Welder Courage_Dummy-0.5) 1.0525 0.145 1187
## (Soldier Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -0.4294 0.167 1187
## (Soldier Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -0.6384 0.132 1187
## (Soldier Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -0.2413 0.168 1187
## (Welder Courage_Dummy-0.5) - Nurses Courage_Dummy0.5 -1.4819 0.166 1187
## (Welder Courage_Dummy-0.5) - Soldier Courage_Dummy0.5 -1.6908 0.167 1187
## (Welder Courage_Dummy-0.5) - Welder Courage_Dummy0.5 -1.2938 0.132 1187
## Nurses Courage_Dummy0.5 - Soldier Courage_Dummy0.5 -0.2089 0.144 1187
## Nurses Courage_Dummy0.5 - Welder Courage_Dummy0.5 0.1881 0.145 1187
## Soldier Courage_Dummy0.5 - Welder Courage_Dummy0.5 0.3971 0.145 1187
## t.ratio p.value
## -0.809 0.9660
## 6.513 <.0001
## -4.165 0.0005
## -4.557 0.0001
## -2.146 0.2647
## 7.261 <.0001
## -2.576 0.1039
## -4.834 <.0001
## -1.435 0.7057
## -8.922 <.0001
## -10.154 <.0001
## -9.775 <.0001
## -1.452 0.6948
## 1.302 0.7842
## 2.734 0.0694
##
## P value adjustment: tukey method for comparing a family of 6 estimates
## Job = Nurses:
## contrast estimate SE df t.ratio p.value
## Courage_Dummy0.5 - (Courage_Dummy-0.5) 0.463 0.102 1187 4.562 <.0001
##
## Job = Soldier:
## contrast estimate SE df t.ratio p.value
## Courage_Dummy0.5 - (Courage_Dummy-0.5) 0.556 0.102 1187 5.427 <.0001
##
## Job = Welder:
## contrast estimate SE df t.ratio p.value
## Courage_Dummy0.5 - (Courage_Dummy-0.5) 1.211 0.103 1187 11.783 <.0001
##
## Results are averaged over the levels of: Suffering
Ok, so yes, the effect of welders is sizable. The other effects are still there though. We need to test difference in difference.
## contrast
## (Courage_Dummy0.5 - (Courage_Dummy-0.5) Nurses) - (Courage_Dummy0.5 - (Courage_Dummy-0.5) Soldier)
## (Courage_Dummy0.5 - (Courage_Dummy-0.5) Nurses) - (Courage_Dummy0.5 - (Courage_Dummy-0.5) Welder)
## (Courage_Dummy0.5 - (Courage_Dummy-0.5) Soldier) - (Courage_Dummy0.5 - (Courage_Dummy-0.5) Welder)
## estimate SE df t.ratio p.value
## -0.0926 0.144 1187 -0.642 0.7969
## -0.7480 0.144 1187 -5.178 <.0001
## -0.6554 0.145 1187 -4.517 <.0001
##
## Results are averaged over the levels of: Suffering
## P value adjustment: tukey method for comparing a family of 3 estimates
YEP. As often the case in our previous studies, welders are more malleable: the effect of courage associated with welders is significantly larger than the effects for the other occupations.
Model 3: Attitude as a covariate
Then model 3, adds attitude to model 1:
summary(mod3 <-lm(Endure_mean ~ Suffering*Courage_Dummy + Job + Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = Endure_mean ~ Suffering * Courage_Dummy + Job +
## Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.3898 -0.5384 0.1889 0.7263 2.1882
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.80522 0.19743 24.338 < 2e-16 ***
## SufferingPhys_suff -0.10231 0.07244 -1.412 0.1582
## SufferingPsych_Suff -0.16311 0.07229 -2.256 0.0242 *
## Courage_Dummy 0.62309 0.10258 6.074 1.68e-09 ***
## JobSoldier 0.37713 0.07593 4.967 7.80e-07 ***
## JobWelder -0.30810 0.07368 -4.182 3.10e-05 ***
## Attitude_N 0.15656 0.02876 5.444 6.34e-08 ***
## SufferingPhys_suff:Courage_Dummy 0.10670 0.14492 0.736 0.4617
## SufferingPsych_Suff:Courage_Dummy 0.17762 0.14455 1.229 0.2194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.023 on 1192 degrees of freedom
## Multiple R-squared: 0.1852, Adjusted R-squared: 0.1797
## F-statistic: 33.86 on 8 and 1192 DF, p-value: < 2.2e-16
Nothing new - attitude as a covariate seems to slightly increase the anectodal effect of psychological suffering on endurance.
There is a positive correlation between attitude and Enduring pain.
Model 4: job as moderator + attitude as covariate
Model 4, adds attitude to model 2:
summary(mod4 <-lm(Endure_mean ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job+ Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = Endure_mean ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job + Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.3412 -0.5171 0.1705 0.7290 2.3797
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.786033 0.204371 23.418 < 2e-16 ***
## SufferingPhys_suff -0.045272 0.123379 -0.367 0.71373
## SufferingPsych_Suff -0.005694 0.122478 -0.046 0.96293
## Courage_Dummy 0.379318 0.129895 2.920 0.00356 **
## JobSoldier 0.498896 0.126044 3.958 8.00e-05 ***
## JobWelder -0.221973 0.124518 -1.783 0.07490 .
## Attitude_N 0.148412 0.028533 5.201 2.33e-07 ***
## SufferingPhys_suff:Courage_Dummy 0.100291 0.143302 0.700 0.48415
## SufferingPsych_Suff:Courage_Dummy 0.175358 0.142934 1.227 0.22012
## SufferingPhys_suff:JobSoldier -0.168178 0.175018 -0.961 0.33679
## SufferingPsych_Suff:JobSoldier -0.213761 0.174329 -1.226 0.22037
## SufferingPhys_suff:JobWelder -0.005337 0.175297 -0.030 0.97572
## SufferingPsych_Suff:JobWelder -0.259407 0.174836 -1.484 0.13815
## Courage_Dummy:JobSoldier 0.055463 0.142810 0.388 0.69782
## Courage_Dummy:JobWelder 0.695582 0.143263 4.855 1.36e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.012 on 1186 degrees of freedom
## Multiple R-squared: 0.2074, Adjusted R-squared: 0.198
## F-statistic: 22.17 on 14 and 1186 DF, p-value: < 2.2e-16
Model comparisons
We will assess if the effects of our manipulations observed in the model hold true when accounting for attitude as a covariate (i.e., Suffering and Courage main effects in model 3 and 4).
To account for the possible effect of attitude (i.e., Halo effect), we will compare a model accounting for attitude as a covariate to a model not accounting for attitude as a covariate in an ANOVA (i.e., we will compare Model 1 to Model 3; and Model 2 to Model 4) and evaluate which model provides the best fit with the data.
Attitude is a significant contributor to the model.
Diagnostics
Toggle details regarding diagnostic and robustness checks
Let’s assess homoscedasticity and normality of residuals for the main model:
the importan plots to look at are:
- QQ plot: must be a straight line.
- fitted vs residuals: must be horizontal with noise dispersed randomly across the plot.
Let’s run a robust model to assess if it changes any decision:
##
## Call: rlm(formula = GlobalVict ~ Job + Suffering * Courage_Dummy, data = LongDF_num)
## Residuals:
## Min 1Q Median 3Q Max
## -3.76149 -0.73940 -0.02965 0.75008 2.94658
##
## Coefficients:
## Value Std. Error t value
## (Intercept) 4.5548 0.0678 67.2155
## JobSoldier -0.8439 0.0744 -11.3398
## JobWelder -0.8676 0.0746 -11.6370
## SufferingPhys_suff 0.5473 0.0747 7.3278
## SufferingPsych_Suff 0.4619 0.0746 6.1962
## Courage_Dummy 0.0183 0.1056 0.1729
## SufferingPhys_suff:Courage_Dummy -0.0036 0.1494 -0.0243
## SufferingPsych_Suff:Courage_Dummy -0.1513 0.1491 -1.0146
##
## Residual standard error: 1.111 on 1193 degrees of freedom
Comparing the betas (Value in rlm) and t-values does not result in decision change.
Assumption of vulnerability
The measure of assumption of vulnerability is taken from the following paper: https://journals.sagepub.com/doi/10.1177/01461672261422957
Model 1: DV ~ Courage * Suffering + Job_condition
##
## Call:
## lm(formula = AoV_mean ~ Job + Suffering * Courage_Dummy, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.5020 -0.6875 0.0055 0.8015 3.3315
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.91032 0.07519 65.308 < 2e-16 ***
## JobSoldier -0.50755 0.08256 -6.148 1.07e-09 ***
## JobWelder -1.13804 0.08277 -13.749 < 2e-16 ***
## SufferingPhys_suff 0.57098 0.08292 6.886 9.25e-12 ***
## SufferingPsych_Suff 0.50898 0.08271 6.154 1.03e-09 ***
## Courage_Dummy 0.20754 0.11712 1.772 0.0766 .
## SufferingPhys_suff:Courage_Dummy -0.18573 0.16583 -1.120 0.2630
## SufferingPsych_Suff:Courage_Dummy -0.37303 0.16542 -2.255 0.0243 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.171 on 1192 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.1742, Adjusted R-squared: 0.1694
## F-statistic: 35.92 on 7 and 1192 DF, p-value: < 2.2e-16
H9a: participants in the physical suffering (vs no suffering) condition will be perceived as more likely to be vulnerable ==> Yes
H9b: participants in the psychological suffering (vs no suffering) condition will be perceived as more likely to be vulnerable ==> Yes
Exploratory note: Courage appears to moderate the effect of psychological suffering on assumptions of vulnerability - i will explore this.
emm_JS <- emmeans(
mod1,
~ Suffering | Courage_Dummy,
at = list(Courage_Dummy = c(-0.5, 0.5))
)
emm_JS_df <- as.data.frame(emm_JS)
emm_JS_df$Suffering <- factor(
emm_JS_df$Suffering,
levels = c("No_Suff", "Phys_suff", "Psych_Suff"),
labels = c("No suffering", "Physical", "Psychological")
)
emm_JS_df$Courage_Label <- ifelse(
emm_JS_df$Courage_Dummy == -0.5,
"Non-courageous",
"Courageous"
)
ggplot(
emm_JS_df,
aes(
x = Suffering,
y = emmean )
) +
geom_col(
position = position_dodge(width = 0.80),
width = 0.70,
color = "black"
) +
geom_errorbar(
aes(
ymin = lower.CL,
ymax = upper.CL
),
position = position_dodge(width = 0.80),
width = 0.20
) +
facet_wrap(~ Courage_Label) +
labs(
x = "Suffering condition",
y = "Estimated marginal mean") +
theme_classic(base_size = 14)Hm. It appears that courage might reduce the effect of psych suffering on AoV. A posteriori, not a completely crazy idea.
emcatcat <- emmeans(mod1, ~ Courage_Dummy*Suffering)
contrast(emcatcat, "revpairwise",by="Courage_Dummy")## Courage_Dummy = -0.5:
## contrast estimate SE df t.ratio p.value
## Phys_suff - No_Suff 0.6638 0.117 1192 5.668 <.0001
## Psych_Suff - No_Suff 0.6955 0.117 1192 5.961 <.0001
## Psych_Suff - Phys_suff 0.0317 0.117 1192 0.271 0.9604
##
## Courage_Dummy = 0.5:
## contrast estimate SE df t.ratio p.value
## Phys_suff - No_Suff 0.4781 0.117 1192 4.072 0.0001
## Psych_Suff - No_Suff 0.3225 0.117 1192 2.750 0.0166
## Psych_Suff - Phys_suff -0.1557 0.117 1192 -1.327 0.3802
##
## Results are averaged over the levels of: Job
## P value adjustment: tukey method for comparing a family of 3 estimates
Hm. Yes. Not massively - the effect remains significant in both conditions. The two effects should differ statistically.
courage_effects <-contrast(emcatcat, "revpairwise",by="Courage_Dummy")
pairs(
courage_effects,
by = NULL
)## contrast
## (Phys_suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - No_Suff Courage_Dummy-0.5)
## (Phys_suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - Phys_suff Courage_Dummy-0.5)
## (Phys_suff - No_Suff Courage_Dummy-0.5) - (Phys_suff - No_Suff Courage_Dummy0.5)
## (Phys_suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - No_Suff Courage_Dummy0.5)
## (Phys_suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - Phys_suff Courage_Dummy0.5)
## (Psych_Suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - Phys_suff Courage_Dummy-0.5)
## (Psych_Suff - No_Suff Courage_Dummy-0.5) - (Phys_suff - No_Suff Courage_Dummy0.5)
## (Psych_Suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - No_Suff Courage_Dummy0.5)
## (Psych_Suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - Phys_suff Courage_Dummy0.5)
## (Psych_Suff - Phys_suff Courage_Dummy-0.5) - (Phys_suff - No_Suff Courage_Dummy0.5)
## (Psych_Suff - Phys_suff Courage_Dummy-0.5) - (Psych_Suff - No_Suff Courage_Dummy0.5)
## (Psych_Suff - Phys_suff Courage_Dummy-0.5) - (Psych_Suff - Phys_suff Courage_Dummy0.5)
## (Phys_suff - No_Suff Courage_Dummy0.5) - (Psych_Suff - No_Suff Courage_Dummy0.5)
## (Phys_suff - No_Suff Courage_Dummy0.5) - (Psych_Suff - Phys_suff Courage_Dummy0.5)
## (Psych_Suff - No_Suff Courage_Dummy0.5) - (Psych_Suff - Phys_suff Courage_Dummy0.5)
## estimate SE df t.ratio p.value
## -0.0317 0.117 1192 -0.271 0.9998
## 0.6322 0.203 1192 3.115 0.0231
## 0.1857 0.166 1192 1.120 0.8732
## 0.3414 0.166 1192 2.060 0.3093
## 0.8195 0.166 1192 4.945 <.0001
## 0.6638 0.117 1192 5.668 <.0001
## 0.2174 0.166 1192 1.313 0.7778
## 0.3730 0.165 1192 2.255 0.2137
## 0.8511 0.165 1192 5.145 <.0001
## -0.4465 0.166 1192 -2.694 0.0772
## -0.2908 0.166 1192 -1.756 0.4950
## 0.1873 0.166 1192 1.131 0.8686
## 0.1557 0.117 1192 1.327 0.7698
## 0.6338 0.203 1192 3.118 0.0229
## 0.4781 0.117 1192 4.072 0.0007
##
## Results are averaged over the levels of: Job
## P value adjustment: tukey method for comparing a family of 6 estimates
(Psych_Suff - No_Suff Courage_Dummy-0.5) - (Psych_Suff - No_Suff Courage_Dummy0.5)
is the line we’re looking for. But there does not seem to be anything of
interest happening here. Oh well, I suppose the interaction was very
small in the first place.
(Note that p is tukey adjusted)
Conclusion on main model for Assumptions of Vulnerability: As predicted, suffering (psychological or physical) increased assumptions of vulnerability of the workers.
Model 2: job as a moderator?
We can move to our second model, accounting for occupation type:
### Model 2: Target outcome ~ Suffering * Courage + Occupation:Suffering + Occupation:Courage + Occupation
summary(mod2 <-lm(AoV_mean ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job, data = LongDF_num)) ##
## Call:
## lm(formula = AoV_mean ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.3955 -0.7288 0.0539 0.7942 3.5195
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.02451 0.10031 50.091 < 2e-16 ***
## SufferingPhys_suff 0.45673 0.14266 3.202 0.0014 **
## SufferingPsych_Suff 0.28141 0.14160 1.987 0.0471 *
## Courage_Dummy 0.19341 0.15020 1.288 0.1981
## JobSoldier -0.56512 0.14266 -3.961 7.89e-05 ***
## JobWelder -1.42821 0.14320 -9.973 < 2e-16 ***
## SufferingPhys_suff:Courage_Dummy -0.18477 0.16564 -1.115 0.2649
## SufferingPsych_Suff:Courage_Dummy -0.37258 0.16523 -2.255 0.0243 *
## SufferingPhys_suff:JobSoldier -0.04773 0.20231 -0.236 0.8135
## SufferingPsych_Suff:JobSoldier 0.21977 0.20156 1.090 0.2758
## SufferingPhys_suff:JobWelder 0.39647 0.20289 1.954 0.0509 .
## SufferingPsych_Suff:JobWelder 0.47223 0.20214 2.336 0.0197 *
## Courage_Dummy:JobSoldier 0.00305 0.16493 0.018 0.9853
## Courage_Dummy:JobWelder 0.03822 0.16535 0.231 0.8172
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.17 on 1186 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.1803, Adjusted R-squared: 0.1713
## F-statistic: 20.06 on 13 and 1186 DF, p-value: < 2.2e-16
Again, the effects of suffering There appears to be an interaction with occupations where nurses vs welders differ in their sensitivity to the psychological suffering manipulation… my hunch is that we’re repeating what we observed, the manipulations produce stronger effect sizes for underwater welders. Let’s dig:
emm_JS <- emmeans(
mod2,
~ Job * Suffering | Courage_Dummy,
at = list(Courage_Dummy = c(-0.5, 0.5))
)
emm_JS_df <- as.data.frame(emm_JS)
emm_JS_df$Job <- factor(
emm_JS_df$Job,
levels = c("Nurses", "Soldier", "Welder")
)
emm_JS_df$Suffering <- factor(
emm_JS_df$Suffering,
levels = c("No_Suff", "Phys_suff", "Psych_Suff"),
labels = c("No suffering", "Physical", "Psychological")
)
emm_JS_df$Courage_Label <- ifelse(
emm_JS_df$Courage_Dummy == -0.5,
"Non-courageous",
"Courageous"
)
ggplot(
emm_JS_df,
aes(
x = Suffering,
y = emmean,
fill = Job
)
) +
geom_col(
position = position_dodge(width = 0.80),
width = 0.70,
color = "black"
) +
geom_errorbar(
aes(
ymin = lower.CL,
ymax = upper.CL
),
position = position_dodge(width = 0.80),
width = 0.20
) +
facet_wrap(~ Courage_Label) +
labs(
x = "Suffering condition",
y = "Estimated marginal mean",
fill = "Job"
) +
theme_classic(base_size = 14)It is so… non obvious that i don’t even want to excavate this. But for science…
## Job = Nurses:
## contrast estimate SE df t.ratio p.value
## Phys_suff - No_Suff 0.4567 0.143 1186 3.202 0.0040
## Psych_Suff - No_Suff 0.2814 0.142 1186 1.987 0.1157
## Psych_Suff - Phys_suff -0.1753 0.142 1186 -1.231 0.4349
##
## Job = Soldier:
## contrast estimate SE df t.ratio p.value
## Phys_suff - No_Suff 0.4090 0.143 1186 2.851 0.0123
## Psych_Suff - No_Suff 0.5012 0.143 1186 3.494 0.0014
## Psych_Suff - Phys_suff 0.0922 0.143 1186 0.643 0.7966
##
## Job = Welder:
## contrast estimate SE df t.ratio p.value
## Phys_suff - No_Suff 0.8532 0.144 1186 5.914 <.0001
## Psych_Suff - No_Suff 0.7536 0.144 1186 5.224 <.0001
## Psych_Suff - Phys_suff -0.0996 0.144 1186 -0.691 0.7686
##
## Results are averaged over the levels of: Courage_Dummy
## P value adjustment: tukey method for comparing a family of 3 estimates
All right, the effect is null for nurses, but sig for welders. Hm. It seems people don’t infer greater assumptions of vulnerability of nurses when they’re described as psychologically suffering…
## contrast estimate
## (Phys_suff - No_Suff Nurses) - (Psych_Suff - No_Suff Nurses) 0.1753
## (Phys_suff - No_Suff Nurses) - (Psych_Suff - Phys_suff Nurses) 0.6320
## (Phys_suff - No_Suff Nurses) - (Phys_suff - No_Suff Soldier) 0.0477
## (Phys_suff - No_Suff Nurses) - (Psych_Suff - No_Suff Soldier) -0.0445
## (Phys_suff - No_Suff Nurses) - (Psych_Suff - Phys_suff Soldier) 0.3645
## (Phys_suff - No_Suff Nurses) - (Phys_suff - No_Suff Welder) -0.3965
## (Phys_suff - No_Suff Nurses) - (Psych_Suff - No_Suff Welder) -0.2969
## (Phys_suff - No_Suff Nurses) - (Psych_Suff - Phys_suff Welder) 0.5563
## (Psych_Suff - No_Suff Nurses) - (Psych_Suff - Phys_suff Nurses) 0.4567
## (Psych_Suff - No_Suff Nurses) - (Phys_suff - No_Suff Soldier) -0.1276
## (Psych_Suff - No_Suff Nurses) - (Psych_Suff - No_Suff Soldier) -0.2198
## (Psych_Suff - No_Suff Nurses) - (Psych_Suff - Phys_suff Soldier) 0.1892
## (Psych_Suff - No_Suff Nurses) - (Phys_suff - No_Suff Welder) -0.5718
## (Psych_Suff - No_Suff Nurses) - (Psych_Suff - No_Suff Welder) -0.4722
## (Psych_Suff - No_Suff Nurses) - (Psych_Suff - Phys_suff Welder) 0.3810
## (Psych_Suff - Phys_suff Nurses) - (Phys_suff - No_Suff Soldier) -0.5843
## (Psych_Suff - Phys_suff Nurses) - (Psych_Suff - No_Suff Soldier) -0.6765
## (Psych_Suff - Phys_suff Nurses) - (Psych_Suff - Phys_suff Soldier) -0.2675
## (Psych_Suff - Phys_suff Nurses) - (Phys_suff - No_Suff Welder) -1.0285
## (Psych_Suff - Phys_suff Nurses) - (Psych_Suff - No_Suff Welder) -0.9290
## (Psych_Suff - Phys_suff Nurses) - (Psych_Suff - Phys_suff Welder) -0.0758
## (Phys_suff - No_Suff Soldier) - (Psych_Suff - No_Suff Soldier) -0.0922
## (Phys_suff - No_Suff Soldier) - (Psych_Suff - Phys_suff Soldier) 0.3168
## (Phys_suff - No_Suff Soldier) - (Phys_suff - No_Suff Welder) -0.4442
## (Phys_suff - No_Suff Soldier) - (Psych_Suff - No_Suff Welder) -0.3446
## (Phys_suff - No_Suff Soldier) - (Psych_Suff - Phys_suff Welder) 0.5085
## (Psych_Suff - No_Suff Soldier) - (Psych_Suff - Phys_suff Soldier) 0.4090
## (Psych_Suff - No_Suff Soldier) - (Phys_suff - No_Suff Welder) -0.3520
## (Psych_Suff - No_Suff Soldier) - (Psych_Suff - No_Suff Welder) -0.2525
## (Psych_Suff - No_Suff Soldier) - (Psych_Suff - Phys_suff Welder) 0.6007
## (Psych_Suff - Phys_suff Soldier) - (Phys_suff - No_Suff Welder) -0.7610
## (Psych_Suff - Phys_suff Soldier) - (Psych_Suff - No_Suff Welder) -0.6615
## (Psych_Suff - Phys_suff Soldier) - (Psych_Suff - Phys_suff Welder) 0.1917
## (Phys_suff - No_Suff Welder) - (Psych_Suff - No_Suff Welder) 0.0996
## (Phys_suff - No_Suff Welder) - (Psych_Suff - Phys_suff Welder) 0.9527
## (Psych_Suff - No_Suff Welder) - (Psych_Suff - Phys_suff Welder) 0.8532
## SE df t.ratio p.value
## 0.142 1186 1.231 0.9496
## 0.247 1186 2.555 0.2072
## 0.202 1186 0.236 1.0000
## 0.202 1186 -0.220 1.0000
## 0.202 1186 1.802 0.6810
## 0.203 1186 -1.954 0.5759
## 0.203 1186 -1.463 0.8722
## 0.203 1186 2.744 0.1336
## 0.143 1186 3.202 0.0376
## 0.202 1186 -0.633 0.9994
## 0.202 1186 -1.090 0.9756
## 0.202 1186 0.939 0.9907
## 0.202 1186 -2.829 0.1081
## 0.202 1186 -2.336 0.3212
## 0.202 1186 1.886 0.6234
## 0.202 1186 -2.891 0.0919
## 0.202 1186 -3.347 0.0237
## 0.202 1186 -1.323 0.9244
## 0.203 1186 -5.074 <.0001
## 0.203 1186 -4.583 0.0002
## 0.203 1186 -0.374 1.0000
## 0.143 1186 -0.643 0.9994
## 0.248 1186 1.275 0.9385
## 0.203 1186 -2.183 0.4172
## 0.203 1186 -1.694 0.7503
## 0.203 1186 2.502 0.2319
## 0.143 1186 2.851 0.1020
## 0.203 1186 -1.730 0.7277
## 0.203 1186 -1.241 0.9473
## 0.203 1186 2.956 0.0771
## 0.203 1186 -3.741 0.0060
## 0.203 1186 -3.251 0.0323
## 0.203 1186 0.943 0.9904
## 0.144 1186 0.691 0.9989
## 0.250 1186 3.818 0.0045
## 0.144 1186 5.914 <.0001
##
## Results are averaged over the levels of: Courage_Dummy
## P value adjustment: tukey method for comparing a family of 9 estimates
Nothing strikes me as unusual here. Again, the line we’re interested
in is
(Psych_Suff - No_Suff Nurses) - (Psych_Suff - No_Suff Welder),
p = .32
(Note that p is tukey adjusted)
Model 3: Attitude as a covariate
Then model 3, adds attitude to model 1:
summary(mod3 <-lm(AoV_mean ~ Suffering*Courage_Dummy + Job + Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = AoV_mean ~ Suffering * Courage_Dummy + Job + Attitude_N,
## data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.5141 -0.6901 0.0114 0.8044 3.3043
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.75829 0.22613 21.042 < 2e-16 ***
## SufferingPhys_suff 0.56879 0.08299 6.854 1.15e-11 ***
## SufferingPsych_Suff 0.50709 0.08277 6.126 1.22e-09 ***
## Courage_Dummy 0.20148 0.11745 1.715 0.0865 .
## JobSoldier -0.48816 0.08694 -5.615 2.44e-08 ***
## JobWelder -1.12627 0.08442 -13.341 < 2e-16 ***
## Attitude_N 0.02348 0.03294 0.713 0.4761
## SufferingPhys_suff:Courage_Dummy -0.18047 0.16603 -1.087 0.2773
## SufferingPsych_Suff:Courage_Dummy -0.37023 0.16550 -2.237 0.0255 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.171 on 1191 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.1746, Adjusted R-squared: 0.169
## F-statistic: 31.48 on 8 and 1191 DF, p-value: < 2.2e-16
There is a no correlation between attitude and Endurance of pain
Model 4: job as moderator + attitude as covariate
Model 4, adds attitude to model 2:
summary(mod4 <-lm(AoV_mean ~ Suffering*Courage_Dummy + Suffering:Job + Courage_Dummy:Job + Job+ Attitude_N, data = LongDF_num)) # Provides intercept (No suffering) vs each other level.##
## Call:
## lm(formula = AoV_mean ~ Suffering * Courage_Dummy + Suffering:Job +
## Courage_Dummy:Job + Job + Attitude_N, data = LongDF_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.4059 -0.7392 0.0581 0.7883 3.4893
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.857334 0.236417 20.546 < 2e-16 ***
## SufferingPhys_suff 0.455297 0.142690 3.191 0.001456 **
## SufferingPsych_Suff 0.279245 0.141648 1.971 0.048911 *
## Courage_Dummy 0.191850 0.150238 1.277 0.201863
## JobSoldier -0.541791 0.145773 -3.717 0.000211 ***
## JobWelder -1.416523 0.144007 -9.836 < 2e-16 ***
## Attitude_N 0.025778 0.033009 0.781 0.435004
## SufferingPhys_suff:Courage_Dummy -0.178940 0.165839 -1.079 0.280810
## SufferingPsych_Suff:Courage_Dummy -0.369511 0.165306 -2.235 0.025582 *
## SufferingPhys_suff:JobSoldier -0.051887 0.202411 -0.256 0.797729
## SufferingPsych_Suff:JobSoldier 0.217717 0.201614 1.080 0.280421
## SufferingPhys_suff:JobWelder 0.397745 0.202926 1.960 0.050224 .
## SufferingPsych_Suff:JobWelder 0.474579 0.202200 2.347 0.019086 *
## Courage_Dummy:JobSoldier -0.003398 0.165163 -0.021 0.983587
## Courage_Dummy:JobWelder 0.029231 0.165779 0.176 0.860071
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.17 on 1185 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.1807, Adjusted R-squared: 0.171
## F-statistic: 18.67 on 14 and 1185 DF, p-value: < 2.2e-16
Model comparisons
We will assess if the effects of our manipulations observed in the model hold true when accounting for attitude as a covariate (i.e., Suffering and Courage main effects in model 3 and 4).
To account for the possible effect of attitude (i.e., Halo effect), we will compare a model accounting for attitude as a covariate to a model not accounting for attitude as a covariate in an ANOVA (i.e., we will compare Model 1 to Model 3; and Model 2 to Model 4) and evaluate which model provides the best fit with the data.
Attitude is a NOT significant contributor to the model of AoV.
Diagnostics
Toggle details regarding diagnostic and robustness checks
Let’s assess homoscedasticity and normality of residuals for the main model:
the importan plots to look at are:
- QQ plot: must be a straight line.
- fitted vs residuals: must be horizontal with noise dispersed randomly across the plot.
Let’s run a robust model to assess if it changes any decision:
##
## Call: rlm(formula = AoV_mean ~ Job + Suffering * Courage_Dummy, data = LongDF_num)
## Residuals:
## Min 1Q Median 3Q Max
## -4.577057 -0.733080 0.002862 0.772786 3.353401
##
## Coefficients:
## Value Std. Error t value
## (Intercept) 4.9482 0.0761 65.0599
## JobSoldier -0.5383 0.0835 -6.4459
## JobWelder -1.2068 0.0837 -14.4137
## SufferingPhys_suff 0.6228 0.0839 7.4249
## SufferingPsych_Suff 0.5564 0.0837 6.6501
## Courage_Dummy 0.1897 0.1185 1.6008
## SufferingPhys_suff:Courage_Dummy -0.1186 0.1678 -0.7067
## SufferingPsych_Suff:Courage_Dummy -0.3345 0.1673 -1.9990
##
## Residual standard error: 1.105 on 1192 degrees of freedom
## (1 observation deleted due to missingness)
Comparing the betas (Value in rlm) and t-values does not result in decision change.
CONCLUSIONS
Let us sum up our hypotheses:
library(knitr)
library(kableExtra)
hypothesis_table <- data.frame(
Hypothesis = c(
"H1a", "H1b",
"H2a", "H2b",
"H3a", "H3b",
"H4a", "H4b",
"H5a", "H5b",
"H6",
"H7a", "H7b",
"H8a", "H8b",
"H9a", "H9b"
),
Prediction = c(
"Physical suffering, compared with no suffering, will increase victim perceptions.",
"Physical suffering, compared with no suffering, will increase hero perceptions.",
"Psychological suffering, compared with no suffering, will increase victim perceptions.",
"Psychological suffering, compared with no suffering, will increase hero perceptions.",
"Courageous individuals, compared with non-courageous individuals, will be perceived as less victimized.",
"Courageous individuals, compared with non-courageous individuals, will be perceived as more heroic.",
"The positive effect of courage on heroism will be stronger under physical suffering than under no suffering.",
"The negative effect of courage on victim perception will be stronger under physical suffering than under no suffering.",
"The positive effect of courage on heroism will be stronger under psychological suffering than under no suffering.",
"The negative effect of courage on victim perception will be stronger under psychological suffering than under no suffering.",
"Courageous workers, compared with non-courageous workers, will be perceived as more likely to endure suffering.",
"The effect of courage on perceived endurance of suffering will be stronger under physical suffering than under no suffering.",
"The effect of courage on perceived endurance of suffering will be stronger under psychological suffering than under no suffering.",
"Physical suffering, compared with no suffering, will increase perceived victimization.",
"Psychological suffering, compared with no suffering, will increase perceived victimization.",
"Physical suffering, compared with no suffering, will increase perceived vulnerability.",
"Psychological suffering, compared with no suffering, will increase perceived vulnerability."
),
Outcome = c(
"Supported", "Not supported",
"Supported", "Not supported",
"Not supported", "Not supported",
"Not supported", "Not supported",
"Not supported", "Not supported",
"Supported",
"Not supported", "Not supported",
"Supported", "Supported",
"Supported", "Supported"
),
stringsAsFactors = FALSE
)
hypothesis_table$Outcome_Formatted <- ifelse(
hypothesis_table$Outcome == "Supported",
cell_spec("Supported", color = "white", background = "#2E7D32", bold = TRUE),
cell_spec("Not supported", color = "white", background = "#B71C1C", bold = TRUE)
)
hypothesis_table_final <- hypothesis_table[, c(
"Hypothesis",
"Prediction",
"Outcome_Formatted"
)]
names(hypothesis_table_final) <- c(
"Hypothesis",
"Prediction",
"Outcome"
)
table_object <- kable(
hypothesis_table_final,
format = "html",
escape = FALSE,
align = c("l", "l", "c"),
caption = "Summary of hypothesis tests"
)
table_object <- kable_styling(
table_object,
full_width = FALSE,
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
position = "center",
font_size = 14
)
table_object <- column_spec(
table_object,
column = 1,
bold = TRUE,
width = "8em"
)
table_object <- column_spec(
table_object,
column = 2,
width = "36em"
)
table_object <- column_spec(
table_object,
column = 3,
width = "10em"
)
table_object| Hypothesis | Prediction | Outcome |
|---|---|---|
| H1a | Physical suffering, compared with no suffering, will increase victim perceptions. | Supported |
| H1b | Physical suffering, compared with no suffering, will increase hero perceptions. | Not supported |
| H2a | Psychological suffering, compared with no suffering, will increase victim perceptions. | Supported |
| H2b | Psychological suffering, compared with no suffering, will increase hero perceptions. | Not supported |
| H3a | Courageous individuals, compared with non-courageous individuals, will be perceived as less victimized. | Not supported |
| H3b | Courageous individuals, compared with non-courageous individuals, will be perceived as more heroic. | Not supported |
| H4a | The positive effect of courage on heroism will be stronger under physical suffering than under no suffering. | Not supported |
| H4b | The negative effect of courage on victim perception will be stronger under physical suffering than under no suffering. | Not supported |
| H5a | The positive effect of courage on heroism will be stronger under psychological suffering than under no suffering. | Not supported |
| H5b | The negative effect of courage on victim perception will be stronger under psychological suffering than under no suffering. | Not supported |
| H6 | Courageous workers, compared with non-courageous workers, will be perceived as more likely to endure suffering. | Supported |
| H7a | The effect of courage on perceived endurance of suffering will be stronger under physical suffering than under no suffering. | Not supported |
| H7b | The effect of courage on perceived endurance of suffering will be stronger under psychological suffering than under no suffering. | Not supported |
| H8a | Physical suffering, compared with no suffering, will increase perceived victimization. | Supported |
| H8b | Psychological suffering, compared with no suffering, will increase perceived victimization. | Supported |
| H9a | Physical suffering, compared with no suffering, will increase perceived vulnerability. | Supported |
| H9b | Psychological suffering, compared with no suffering, will increase perceived vulnerability. | Supported |
In a nutshell, the courage condition appears to have ’’’‘worked’’’’, in the sense that it successfully influenced the perception of willingness to endure suffering - characterised in their measures by a prioritisation of the mission over the worker’s own health. So…
However, this form of prioritisation (that we call courage - but participants might disagree with us here, see failed manipulation checks) does not influence perceived heroism, perceived victim status, and does not characterise the effects of suffering on victim-status.
This study is thus a bag of mixed findings, but overall, we did not validate our main hypotheses. As a reminder, our main problematic here is: Both heroes and victims are characterised by suffering – but we can distinguish them by their perceived courage. We can’t say nothing with regards to that problematic as, in our study, suffering only characterised victims, and courage did not influence heroism nor victim status. As we say in France: chou blanc.