Study 6a

library(here)
library(readr)
library(psych)
library(tidyverse)
library(apaTables)
hb1 <- read_csv(here("data","s12.csv"))

hb1$condition <- as.factor(hb1$condition)
hb1$condition <- relevel(hb1$condition, "non_zero_sum")

summary(hb1$condition)
## non_zero_sum     zero_sum 
##          296          297

Hostile Bias Measure

# Define the reverse_key() function
reverse_key <- function(x) {
  8 - x
}

hab_df <- select(hb1, contains("story_"), -contains("retalia"))
colnames(hab_df)
##  [1] "zs_story_1_hostile"                 "zs_story_1_benign"                 
##  [3] "zs_story_2_hostile"                 "zs_story_2_benign"                 
##  [5] "zs_story_3_hostile"                 "zs_story_3_benign"                 
##  [7] "zs_story_4_hostile"                 "zs_story_4_benign"                 
##  [9] "nzs_story_1_hostile"                "nzs_story_1_benign"                
## [11] "nzs_story_2_hostile"                "nzs_story_2_benign"                
## [13] "nzs_story_3_hostile"                "nzs_story_3_benign"                
## [15] "nzs_story_4_hostile"                "nzs_story_4_benign"                
## [17] "zs_story_1_benign_recoded"          "zs_story_2_benign_recoded"         
## [19] "zs_story_3_benign_recoded"          "zs_story_4_benign_recoded"         
## [21] "nzs_story_1_benign_recoded"         "nzs_story_2_benign_recoded"        
## [23] "nzs_story_3_benign_recoded"         "nzs_story_4_benign_recoded"        
## [25] "story_1_hostile_attribution"        "story_1_benign_attribution_recoded"
## [27] "story_2_hostile_attribution"        "story_2_benign_attribution_recoded"
## [29] "story_3_hostile_attribution"        "story_3_benign_attribution_recoded"
## [31] "story_4_hostile_attribution"        "story_4_benign_attribution_recoded"
# Apply reverse_key() to variables ending with "_benign" and rename with "_recoded"
hb1 <- hb1 %>%
  mutate(across(ends_with("_benign"), ~ reverse_key(.x), .names = "{.col}_recoded"))


# Checking for perfect negative correlation to confirm recoding

cor.test(hb1$zs_story_2_benign_recoded, hb1$zs_story_2_benign) 
## 
##  Pearson's product-moment correlation
## 
## data:  hb1$zs_story_2_benign_recoded and hb1$zs_story_2_benign
## t = -Inf, df = 295, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -1 -1
## sample estimates:
## cor 
##  -1
hb1_df <- select(hb1, ends_with("hostile") | ends_with("benign_recoded"))

colnames(hb1_df)
##  [1] "zs_story_1_hostile"         "zs_story_2_hostile"        
##  [3] "zs_story_3_hostile"         "zs_story_4_hostile"        
##  [5] "nzs_story_1_hostile"        "nzs_story_2_hostile"       
##  [7] "nzs_story_3_hostile"        "nzs_story_4_hostile"       
##  [9] "zs_story_1_benign_recoded"  "zs_story_2_benign_recoded" 
## [11] "zs_story_3_benign_recoded"  "zs_story_4_benign_recoded" 
## [13] "nzs_story_1_benign_recoded" "nzs_story_2_benign_recoded"
## [15] "nzs_story_3_benign_recoded" "nzs_story_4_benign_recoded"
# Combining Columns with Corresponding Questions 

hb1$story_1_hostile_attribution <- coalesce(hb1_df$zs_story_1_hostile, hb1_df$nzs_story_1_hostile)
hb1$story_1_benign_attribution_recoded <- coalesce(hb1_df$zs_story_1_benign_recoded, hb1_df$nzs_story_1_benign_recoded)

hb1$story_2_hostile_attribution <- coalesce(hb1_df$zs_story_2_hostile, hb1_df$nzs_story_2_hostile)
hb1$story_2_benign_attribution_recoded <- coalesce(hb1_df$zs_story_2_benign_recoded, hb1_df$nzs_story_2_benign_recoded)

hb1$story_3_hostile_attribution <- coalesce(hb1_df$zs_story_3_hostile, hb1_df$nzs_story_3_hostile)
hb1$story_3_benign_attribution_recoded <- coalesce(hb1_df$zs_story_3_benign_recoded, hb1_df$nzs_story_3_benign_recoded)

hb1$story_4_hostile_attribution <- coalesce(hb1_df$zs_story_4_hostile, hb1_df$nzs_story_4_hostile)
hb1$story_4_benign_attribution_recoded <- coalesce(hb1_df$zs_story_4_benign_recoded, hb1_df$nzs_story_4_benign_recoded)

hostile_attributions_df <- select(hb1, contains("attribution"))
# Hostile Attributions Scale Reliability

hostile_omega <-psych::omega(hostile_attributions_df)

hostile_omega$omega.tot
## [1] 0.9088958
hostile_alpha <- psych::alpha(hostile_attributions_df)
hostile_alpha$total
##  raw_alpha std.alpha   G6(smc) average_r      S/N        ase     mean       sd
##  0.8060585 0.8097642 0.9257618 0.3472923 4.256634 0.01263508 3.435708 1.046911
##   median_r
##  0.2666043
hb1$hostile_bias_mean <- rowMeans(hostile_attributions_df)

Descriptive Statistics

library(tidyverse)

summary_stats <- hb1 %>%
  group_by(condition) %>%
  summarise(mean_retaliate = mean(retaliate_mean, na.rm = TRUE),
            sd_retaliate = sd(retaliate_mean, na.rm = TRUE),
            se_retaliate = sd(retaliate_mean, na.rm = TRUE) / sqrt(n()),
            mean_hostile_bias = mean(hostile_bias_mean, na.rm = TRUE),
            sd_hostile_bias = sd(hostile_bias_mean, na.rm = TRUE),
            se_hostile_bias = sd(hostile_bias_mean, na.rm = TRUE) / sqrt(n()))

print(summary_stats)
## # A tibble: 2 × 7
##   condition    mean_retaliate sd_retaliate se_retaliate mean_hostile_bias
##   <fct>                 <dbl>        <dbl>        <dbl>             <dbl>
## 1 non_zero_sum           2.53         1.29       0.0751              3.27
## 2 zero_sum               2.60         1.22       0.0709              3.60
## # ℹ 2 more variables: sd_hostile_bias <dbl>, se_hostile_bias <dbl>

Hypothesis 6a

Zero-sum configurations of success increase hostile attributions.

# Load the necessary packages
library(tidyverse)

# Perform the t-test
t_test_results <- hb1 %>%
  group_by(condition) %>%
  summarise(
    mean_hostile_bias = mean(hostile_bias_mean),
    sd_hostile_bias = sd(hostile_bias_mean),
    se_hostile_bias = sd(hostile_bias_mean) / sqrt(n())
  ) %>%
  ungroup() %>%
  mutate(condition = as.factor(condition))

# Conduct the t-test
t_test <- t.test(hostile_bias_mean ~ condition, data = hb1)
t_test_2 <- t.test(retaliate_mean~ condition, data = hb1)

# Extract the t-value, degrees of freedom, and p-value from the t-test results
t_value <- t_test$statistic
df <- t_test$parameter
p_value <- t_test$p.value

# Print the t-test results, t-value, degrees of freedom, and p-value
print(t_test_results)
## # A tibble: 2 × 4
##   condition    mean_hostile_bias sd_hostile_bias se_hostile_bias
##   <fct>                    <dbl>           <dbl>           <dbl>
## 1 non_zero_sum              3.27            1.05          0.0609
## 2 zero_sum                  3.60            1.02          0.0593
cat("\n")
cat("T-value: ", t_value, "\n")
## T-value:  -3.897193
cat("Degrees of Freedom: ", df, "\n")
## Degrees of Freedom:  590.4961
cat("P-value: ", p_value, "\n")
## P-value:  0.0001084607
cohen.d(hb1$hostile_bias_mean, hb1$condition)
## Call: cohen.d(x = hb1$hostile_bias_mean, group = hb1$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,]  0.16   0.32  0.48
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 0.32
## r equivalent of difference between two means
## data 
## 0.16
cohen.d(hb1$retaliate_mean, hb1$condition)
## Call: cohen.d(x = hb1$retaliate_mean, group = hb1$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,]  -0.1   0.06  0.22
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 0.058
## r equivalent of difference between two means
## data 
## 0.03
cohen.d(hb1$zsm_mean, hb1$condition)
## Call: cohen.d(x = hb1$zsm_mean, group = hb1$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,] -0.18  -0.02  0.14
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 0.018
## r equivalent of difference between two means
##  data 
## -0.01

As predicted, participants interpreted the same behaviors by others in competitions for the same rewards as more hostile when those rewards were structured as a zero-sum game (M = 3.60, SD = 1.02) compared to when they were structured as a non-zero-sum game (M = 3.27, SD = 1.05; t(590.5) = 3.90, p <.001, d = .32, 95 %CI[.16. .48]).

Hypothesis 6b

Zero-sum mindset predicts hostile attributions across situations, including in objectively non-zero-sum situations.

test <- lm(hb1$hostile_bias_mean ~  hb1$zsm_mean + hb1$condition)
summary(test)
## 
## Call:
## lm(formula = hb1$hostile_bias_mean ~ hb1$zsm_mean + hb1$condition)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1266 -0.6644 -0.0026  0.5856  3.2353 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            2.29135    0.11236  20.393  < 2e-16 ***
## hb1$zsm_mean           0.34932    0.03485  10.024  < 2e-16 ***
## hb1$conditionzero_sum  0.33815    0.07862   4.301 1.99e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9572 on 590 degrees of freedom
## Multiple R-squared:  0.1669, Adjusted R-squared:  0.1641 
## F-statistic: 59.11 on 2 and 590 DF,  p-value: < 2.2e-16
#Standardized
test <- lm(scale(hb1$hostile_bias_mean) ~  scale(hb1$zsm_mean) + as.factor(hb1$condition))
summary(test)
## 
## Call:
## lm(formula = scale(hb1$hostile_bias_mean) ~ scale(hb1$zsm_mean) + 
##     as.factor(hb1$condition))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.98649 -0.63463 -0.00244  0.55936  3.09033 
## 
## Coefficients:
##                                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      -0.16177    0.05314  -3.044  0.00244 ** 
## scale(hb1$zsm_mean)               0.37667    0.03758  10.024  < 2e-16 ***
## as.factor(hb1$condition)zero_sum  0.32300    0.07509   4.301 1.99e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9143 on 590 degrees of freedom
## Multiple R-squared:  0.1669, Adjusted R-squared:  0.1641 
## F-statistic: 59.11 on 2 and 590 DF,  p-value: < 2.2e-16
# Interaction
test <- lm(hb1$hostile_bias_mean ~ hb1$condition * hb1$zsm_mean)
summary(test)
## 
## Call:
## lm(formula = hb1$hostile_bias_mean ~ hb1$condition * hb1$zsm_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0016 -0.6691  0.0038  0.5798  3.2663 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                         2.05813    0.14831  13.877  < 2e-16 ***
## hb1$conditionzero_sum               0.80243    0.20899   3.840 0.000137 ***
## hb1$zsm_mean                        0.43258    0.04911   8.808  < 2e-16 ***
## hb1$conditionzero_sum:hb1$zsm_mean -0.16634    0.06942  -2.396 0.016881 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9533 on 589 degrees of freedom
## Multiple R-squared:  0.175,  Adjusted R-squared:  0.1708 
## F-statistic: 41.64 on 3 and 589 DF,  p-value: < 2.2e-16
#Standardized
test <- lm(scale(hb1$hostile_bias_mean) ~ as.factor(hb1$condition) * scale(hb1$zsm_mean))
summary(test)
## 
## Call:
## lm(formula = scale(hb1$hostile_bias_mean) ~ as.factor(hb1$condition) * 
##     scale(hb1$zsm_mean))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.86709 -0.63909  0.00359  0.55384  3.11996 
## 
## Coefficients:
##                                                      Estimate Std. Error
## (Intercept)                                          -0.16257    0.05293
## as.factor(hb1$condition)zero_sum                      0.32301    0.07479
## scale(hb1$zsm_mean)                                   0.46645    0.05296
## as.factor(hb1$condition)zero_sum:scale(hb1$zsm_mean) -0.17936    0.07486
##                                                      t value Pr(>|t|)    
## (Intercept)                                           -3.071  0.00223 ** 
## as.factor(hb1$condition)zero_sum                       4.319 1.84e-05 ***
## scale(hb1$zsm_mean)                                    8.808  < 2e-16 ***
## as.factor(hb1$condition)zero_sum:scale(hb1$zsm_mean)  -2.396  0.01688 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9106 on 589 degrees of freedom
## Multiple R-squared:  0.175,  Adjusted R-squared:  0.1708 
## F-statistic: 41.64 on 3 and 589 DF,  p-value: < 2.2e-16
nrow(hb1)
## [1] 593

Hypothesis 6c

Zero-sum mindset predicts greater intention to retaliate against the perceived aggressor across situations, including in objectively non-zero-sum situations.

test <- lm(hb1$retaliate_mean ~ hb1$condition + hb1$zsm_mean)
summary(test)
## 
## Call:
## lm(formula = hb1$retaliate_mean ~ hb1$condition + hb1$zsm_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1592 -0.7728 -0.1754  0.6509  3.6720 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            1.03096    0.12957   7.957 9.06e-15 ***
## hb1$conditionzero_sum  0.08299    0.09066   0.915     0.36    
## hb1$zsm_mean           0.53409    0.04019  13.290  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.104 on 590 degrees of freedom
## Multiple R-squared:  0.231,  Adjusted R-squared:  0.2284 
## F-statistic: 88.63 on 2 and 590 DF,  p-value: < 2.2e-16
test <- lm(scale(hb1$retaliate_mean) ~ as.factor(hb1$condition) + scale(hb1$zsm_mean))
summary(test)
## 
## Call:
## lm(formula = scale(hb1$retaliate_mean) ~ as.factor(hb1$condition) + 
##     scale(hb1$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5141 -0.6150 -0.1396  0.5180  2.9222 
## 
## Coefficients:
##                                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      -0.03308    0.05106  -0.648    0.517    
## as.factor(hb1$condition)zero_sum  0.06604    0.07215   0.915    0.360    
## scale(hb1$zsm_mean)               0.47982    0.03610  13.290   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8784 on 590 degrees of freedom
## Multiple R-squared:  0.231,  Adjusted R-squared:  0.2284 
## F-statistic: 88.63 on 2 and 590 DF,  p-value: < 2.2e-16
test <- lm(scale(hb1$retaliate_mean) ~ as.factor(hb1$condition) + scale(hb1$zsm_mean) + hb1$sex + hb1$age + hb1$education + hb1$income)
summary(test)
## 
## Call:
## lm(formula = scale(hb1$retaliate_mean) ~ as.factor(hb1$condition) + 
##     scale(hb1$zsm_mean) + hb1$sex + hb1$age + hb1$education + 
##     hb1$income)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7413 -0.5817 -0.1083  0.4783  2.9488 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       6.846e-01  1.833e-01   3.734 0.000207 ***
## as.factor(hb1$condition)zero_sum  7.038e-02  7.013e-02   1.003 0.316064    
## scale(hb1$zsm_mean)               4.348e-01  3.608e-02  12.052  < 2e-16 ***
## hb1$sex                          -8.898e-02  6.788e-02  -1.311 0.190415    
## hb1$age                          -1.598e-02  2.565e-03  -6.232 8.82e-10 ***
## hb1$education                    -8.419e-05  2.612e-02  -0.003 0.997429    
## hb1$income                        2.833e-03  7.648e-03   0.370 0.711211    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8518 on 586 degrees of freedom
## Multiple R-squared:  0.2818, Adjusted R-squared:  0.2744 
## F-statistic: 38.32 on 6 and 586 DF,  p-value: < 2.2e-16
# Fit the linear regression model
test <- lm(hb1$retaliate_mean ~ hb1$condition * hb1$zsm_mean)


# Create dummy variables for the categorical variable "condition"
condition_dummies <- model.matrix(~ hb1$condition - 1)

# Fit the linear regression model using the dummy variables and the interaction term
test <- lm(hb1$retaliate_mean ~ condition_dummies * hb1$zsm_mean)

# Extract the coefficient estimates from the model
coefficients <- coef(test)

# Calculate the standard deviation of the predictor variable
sd_zsm_mean <- sd(hb1$zsm_mean)

# Calculate the standardized beta coefficients
standardized_coefficients <- coefficients / c(sd_zsm_mean, sd_zsm_mean)

Retaliation By Condition

# Perform the t-test
t_test_results <- hb1 %>%
  group_by(condition) %>%
  summarise(
    mean_retaliation = mean(retaliate_mean),
    sd_retaliate_ = sd(retaliate_mean),
    se_retaliate = sd(retaliate_mean) / sqrt(n())
  ) %>%
  ungroup() %>%
  mutate(condition = as.factor(condition))

# Conduct the t-test
t_test <- t.test(retaliate_mean ~ condition, data = hb1)

# Extract the t-value, degrees of freedom, and p-value from the t-test results
t_value <- t_test$statistic
df <- t_test$parameter
p_value <- t_test$p.value

# Print the t-test results, t-value, degrees of freedom, and p-value
print(t_test_results)
## # A tibble: 2 × 4
##   condition    mean_retaliation sd_retaliate_ se_retaliate
##   <fct>                   <dbl>         <dbl>        <dbl>
## 1 non_zero_sum             2.53          1.29       0.0751
## 2 zero_sum                 2.60          1.22       0.0709
cat("\n")
cat("T-value: ", t_value, "\n")
## T-value:  -0.7001923
cat("Degrees of Freedom: ", df, "\n")
## Degrees of Freedom:  588.9897
cat("P-value: ", p_value, "\n")
## P-value:  0.4840837

Interaction by Condition

#Unstandardized
test_1 <- lm(hb1$retaliate_mean ~ hb1$condition * hb1$zsm_mean)
summary(test_1)
## 
## Call:
## lm(formula = hb1$retaliate_mean ~ hb1$condition * hb1$zsm_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3561 -0.7975 -0.1719  0.6821  3.6960 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                         0.85044    0.17149   4.959 9.27e-07 ***
## hb1$conditionzero_sum               0.44236    0.24164   1.831   0.0677 .  
## hb1$zsm_mean                        0.59853    0.05679  10.540  < 2e-16 ***
## hb1$conditionzero_sum:hb1$zsm_mean -0.12875    0.08027  -1.604   0.1092    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.102 on 589 degrees of freedom
## Multiple R-squared:  0.2344, Adjusted R-squared:  0.2305 
## F-statistic:  60.1 on 3 and 589 DF,  p-value: < 2.2e-16

Standardized

#hb1$condition <- if_else(hb1$condition =="non_zero_sum", 0,1)
test_2 <- lm(scale(hb1$retaliate_mean) ~ as.factor(hb1$condition) * scale(hb1$zsm_mean))
summary(test_2)
## 
## Call:
## lm(formula = scale(hb1$retaliate_mean) ~ as.factor(hb1$condition) * 
##     scale(hb1$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6709 -0.6347 -0.1368  0.5428  2.9413 
## 
## Coefficients:
##                                                      Estimate Std. Error
## (Intercept)                                          -0.03359    0.05099
## as.factor(hb1$condition)zero_sum                      0.06605    0.07205
## scale(hb1$zsm_mean)                                   0.53771    0.05102
## as.factor(hb1$condition)zero_sum:scale(hb1$zsm_mean) -0.11567    0.07211
##                                                      t value Pr(>|t|)    
## (Intercept)                                           -0.659    0.510    
## as.factor(hb1$condition)zero_sum                       0.917    0.360    
## scale(hb1$zsm_mean)                                   10.540   <2e-16 ***
## as.factor(hb1$condition)zero_sum:scale(hb1$zsm_mean)  -1.604    0.109    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8772 on 589 degrees of freedom
## Multiple R-squared:  0.2344, Adjusted R-squared:  0.2305 
## F-statistic:  60.1 on 3 and 589 DF,  p-value: < 2.2e-16
test <- lm(scale(hb1$hostile_bias_mean) ~ scale(hb1$zsm_mean) * hb1$condition)
summary(test)
## 
## Call:
## lm(formula = scale(hb1$hostile_bias_mean) ~ scale(hb1$zsm_mean) * 
##     hb1$condition)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.86709 -0.63909  0.00359  0.55384  3.11996 
## 
## Coefficients:
##                                           Estimate Std. Error t value Pr(>|t|)
## (Intercept)                               -0.16257    0.05293  -3.071  0.00223
## scale(hb1$zsm_mean)                        0.46645    0.05296   8.808  < 2e-16
## hb1$conditionzero_sum                      0.32301    0.07479   4.319 1.84e-05
## scale(hb1$zsm_mean):hb1$conditionzero_sum -0.17936    0.07486  -2.396  0.01688
##                                              
## (Intercept)                               ** 
## scale(hb1$zsm_mean)                       ***
## hb1$conditionzero_sum                     ***
## scale(hb1$zsm_mean):hb1$conditionzero_sum *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9106 on 589 degrees of freedom
## Multiple R-squared:  0.175,  Adjusted R-squared:  0.1708 
## F-statistic: 41.64 on 3 and 589 DF,  p-value: < 2.2e-16
ggplot(hb1, aes(hb1$zsm_mean, hb1$hostile_bias_mean, color = condition)) + geom_smooth(method =lm)

cohen.d(hb1$zsm_mean, hb1$condition)
## Call: cohen.d(x = hb1$zsm_mean, group = hb1$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,] -0.18  -0.02  0.14
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 0.018
## r equivalent of difference between two means
##  data 
## -0.01
cohen.d(hb1$retaliate_mean, hb1$condition)
## Call: cohen.d(x = hb1$retaliate_mean, group = hb1$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,]  -0.1   0.06  0.22
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 0.058
## r equivalent of difference between two means
## data 
## 0.03
test <- lm(scale(hb1$retaliate_mean) ~ hb1$condition)
summary(test)
## 
## Call:
## lm(formula = scale(hb1$retaliate_mean) ~ hb1$condition)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2728 -0.8173 -0.2205  0.5754  3.3607 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)
## (Intercept)           -0.02882    0.05815  -0.496    0.620
## hb1$conditionzero_sum  0.05754    0.08217   0.700    0.484
## 
## Residual standard error: 1 on 591 degrees of freedom
## Multiple R-squared:  0.000829,   Adjusted R-squared:  -0.0008616 
## F-statistic: 0.4904 on 1 and 591 DF,  p-value: 0.484

Study 6b - Pre-registered replication

In this study we replicate our test of the hypothesis that zero-sum configurations of success promote hostile attributions (beyond effect of the competitive situation in general). We also add a manipulation check— measuring situational zero-sum beliefs comparing between the conditions to verify that our descriptions of the zero-sum configurations do in fact boost zero-sum beliefs about those situations.

Removing Failed Attention Checks

First, we will remove any participants who failed the attention check:

“We would like to make sure that people are paying attention to our survey. To show that you have done so, please write below the number of letters that are in the word”Friday”.”

(Responses that contain any variation of “six” “6” or “Six” etc. pass the attention check while participants who write something else, such as “friday” or “5” etc. will be excluded.)

levels(as.factor(hb$att_check)) # Inspecting unique entries
## [1] "6"                      "6 (six)"                "6 or six"              
## [4] "6 Six"                  "friday has six letters" "six"                   
## [7] "Six"                    "SIX"                    "Six."
nrow(hb) #total n
## [1] 986
hb <- filter(hb, hb$att_check == "six" | hb$att_check == "Six" | hb$att_check == "6"  | hb$att_check == "6 (six)" | hb$att_check == "6 Six" | hb$att_check == "Six." | hb$att_check == "SIX" | hb$att_check == "6 or six" | hb$att_check == "friday has six letters") 

levels(as.factor(hb$att_check))
## [1] "6"                      "6 (six)"                "6 or six"              
## [4] "6 Six"                  "friday has six letters" "six"                   
## [7] "Six"                    "SIX"                    "Six."
nrow(hb) # remaining number of participants
## [1] 986
summary(as.factor(hb$condition))
## non_zero_sum     zero_sum 
##          498          488
nrow(hb)
## [1] 986
# Describe Condition Allocations
hb$condition <- as.factor(hb$condition)

levels(hb$condition)
## [1] "non_zero_sum" "zero_sum"
summary((hb$condition)) #Noting an unused blank level 
## non_zero_sum     zero_sum 
##          498          488
hb$condition <- droplevels(hb$condition)
levels(hb$condition) 
## [1] "non_zero_sum" "zero_sum"

Describing Participants

describe(hb$age)
##    vars   n  mean    sd median trimmed   mad min max range skew kurtosis   se
## X1    1 986 41.91 14.16     39   40.99 14.83  18  84    66 0.53    -0.51 0.45
summary(as.factor(hb$race))/nrow(hb)
## numeric(0)
summary(as.factor(hb$sex))/nrow(hb)
##          1          2          3 
## 0.70892495 0.27890467 0.01217039
nrow(hb)
## [1] 986

Manipulation Check

First we test whether our experimental manipulations of reward structures (described as either zero-sum or non-zero-sum) are interpreted accordingly such that zero-sum beliefs are stronger in the zero-sum condition compared to the non-zero-sum condition.

# Creating a dataframe with ratings of situationally-specific zero-sum beliefs

manip_check_df <- select(hb, contains("man_ch"))

colnames(manip_check_df) # Coalescing matching items across conditions
##  [1] "zs_marathon_man_ch_1" "zs_marathon_man_ch_2" "zs_job_man_ch_1"     
##  [4] "zs_job_man_ch_2"      "zs_politics_man_ch_1" "zs_politics_man_ch_2"
##  [7] "zs_academic_man_ch_1" "zs_academic_man_ch_2" "nzs_marathon_man_ch1"
## [10] "nzs_marathon_man_ch2" "nzs_job_man_ch1"      "nzs_job_man_ch2"     
## [13] "nzs_politics_man_ch1" "nzs_politics_man_ch2" "nzs_academic_man_ch1"
## [16] "nzs_academic_man_ch2"
hb$mc_marathon_1 <- coalesce(manip_check_df$zs_marathon_man_ch_1, manip_check_df$nzs_marathon_man_ch1)

hb$mc_marathon_2 <- coalesce(manip_check_df$zs_marathon_man_ch_2, manip_check_df$nzs_marathon_man_ch2)

hb$mc_job_1   <- coalesce(manip_check_df$zs_job_man_ch_1, manip_check_df$nzs_job_man_ch1)

hb$mc_job_2   <- coalesce(manip_check_df$zs_job_man_ch_2, manip_check_df$nzs_job_man_ch2)

hb$mc_politics_1 <- coalesce(manip_check_df$zs_politics_man_ch_1, manip_check_df$nzs_politics_man_ch1)

hb$mc_politics_2 <- coalesce(manip_check_df$zs_politics_man_ch_2, manip_check_df$nzs_politics_man_ch2)

hb$mc_academic_1 <- coalesce(manip_check_df$zs_academic_man_ch_1, manip_check_df$nzs_academic_man_ch1)

hb$mc_academic_2 <- coalesce(manip_check_df$zs_academic_man_ch_2, manip_check_df$nzs_academic_man_ch2)

manip_check_df <- select(hb, starts_with("mc_"))

summary(complete.cases(manip_check_df))
##    Mode    TRUE 
## logical     986
psych::alpha(manip_check_df)
## 
## Reliability analysis   
## Call: psych::alpha(x = manip_check_df)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean  sd median_r
##       0.96      0.96    0.97      0.74  23 0.0021  3.8 2.1     0.73
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.95  0.96  0.96
## Duhachek  0.95  0.96  0.96
## 
##  Reliability if an item is dropped:
##               raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## mc_marathon_1      0.96      0.96    0.96      0.76  22   0.0022 0.0056  0.75
## mc_marathon_2      0.95      0.95    0.96      0.75  21   0.0023 0.0068  0.75
## mc_job_1           0.95      0.95    0.97      0.74  20   0.0024 0.0074  0.74
## mc_job_2           0.95      0.95    0.96      0.73  19   0.0026 0.0072  0.70
## mc_politics_1      0.95      0.95    0.96      0.73  19   0.0025 0.0068  0.71
## mc_politics_2      0.95      0.95    0.96      0.73  19   0.0026 0.0066  0.71
## mc_academic_1      0.95      0.95    0.97      0.74  20   0.0024 0.0070  0.73
## mc_academic_2      0.95      0.95    0.96      0.74  20   0.0024 0.0077  0.71
## 
##  Item statistics 
##                 n raw.r std.r r.cor r.drop mean  sd
## mc_marathon_1 986  0.83  0.83  0.81   0.78  4.2 2.4
## mc_marathon_2 986  0.85  0.85  0.83   0.80  4.3 2.4
## mc_job_1      986  0.88  0.88  0.87   0.85  3.8 2.4
## mc_job_2      986  0.91  0.91  0.90   0.88  3.9 2.4
## mc_politics_1 986  0.90  0.90  0.89   0.87  3.5 2.3
## mc_politics_2 986  0.92  0.92  0.91   0.89  3.7 2.4
## mc_academic_1 986  0.86  0.86  0.85   0.82  3.5 2.3
## mc_academic_2 986  0.88  0.88  0.86   0.84  3.5 2.3
## 
## Non missing response frequency for each item
##                  1    2    3    4    5    6    7 miss
## mc_marathon_1 0.24 0.14 0.05 0.02 0.09 0.23 0.23    0
## mc_marathon_2 0.23 0.13 0.06 0.03 0.09 0.22 0.24    0
## mc_job_1      0.25 0.19 0.08 0.03 0.08 0.18 0.20    0
## mc_job_2      0.25 0.18 0.06 0.04 0.08 0.18 0.21    0
## mc_politics_1 0.32 0.18 0.05 0.05 0.10 0.16 0.15    0
## mc_politics_2 0.30 0.16 0.06 0.05 0.08 0.18 0.17    0
## mc_academic_1 0.31 0.18 0.06 0.05 0.11 0.16 0.12    0
## mc_academic_2 0.31 0.16 0.05 0.06 0.10 0.19 0.12    0
omega_man_ch <- psych::omega(manip_check_df)

omega_man_ch$omega.tot
## [1] 0.9783377
# Creating composite score of zero-sum beliefs
hb$zs_beliefs_mean <- rowMeans(manip_check_df)

Descriptive Statistics

manipulation_check_results <- hb %>%
  group_by(condition) %>%
  summarise(
    mean_zs_beliefs_mean = mean(zs_beliefs_mean, na.rm =T),
    sd_zs_beliefs_mean = sd(zs_beliefs_mean, na.rm = T),
    se_zs_beliefs_mean = sd(zs_beliefs_mean, na.rm = T) / sqrt(n())
  ) %>%
  ungroup() %>%
  mutate(condition = as.factor(condition))

manipulation_check_results 
## # A tibble: 2 × 4
##   condition    mean_zs_beliefs_mean sd_zs_beliefs_mean se_zs_beliefs_mean
##   <fct>                       <dbl>              <dbl>              <dbl>
## 1 zero_sum                     5.56               1.09             0.0496
## 2 non_zero_sum                 2.05               1.08             0.0486
# Calculate Cohen's d using two different packages
psych::cohen.d(hb$zs_beliefs_mean, hb$condition)
## Call: psych::cohen.d(x = hb$zs_beliefs_mean, group = hb$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,] -3.42  -3.23 -3.04
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 3.2
## r equivalent of difference between two means
##  data 
## -0.85
effsize::cohen.d(hb$zs_beliefs_mean, hb$condition) 
## 
## Cohen's d
## 
## d estimate: 3.225373 (large)
## 95 percent confidence interval:
##    lower    upper 
## 3.035797 3.414950

t-test

# Conducting t-test comparing zero-sum beliefs between conditions
t_test <- t.test(zs_beliefs_mean ~ condition, data = hb)

# Extract the t-value, degrees of freedom, and p-value from the t-test results
t_value <- t_test$statistic
df <- t_test$parameter
p_value <- t_test$p.value

# Print the t-test results, t-value, degrees of freedom, and p-value
print(t_test)
## 
##  Welch Two Sample t-test
## 
## data:  zs_beliefs_mean by condition
## t = 50.632, df = 983.14, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group zero_sum and group non_zero_sum is not equal to 0
## 95 percent confidence interval:
##  3.379086 3.651578
## sample estimates:
##     mean in group zero_sum mean in group non_zero_sum 
##                   5.563525                   2.048193
cat("\n")
cat("T-value: ", t_value, "\n")
## T-value:  50.63206
cat("Degrees of Freedom: ", df, "\n")
## Degrees of Freedom:  983.1442
cat("P-value: ", p_value, "\n")
## P-value:  3.675764e-276

Creating Indices

Creating hostile attribution, retaliation, and zero-sum mindset score variables.

Hostile Attributions

# Define the reverse_key() function
reverse_key <- function(x) {
  8 - x
}

hab_df <- select(hb, contains("story_"))
colnames(hab_df)
##  [1] "zs_story_1_hostile"                 "zs_story_1_benign"                 
##  [3] "zs_story_1_retaliate"               "zs_story_2_hostile"                
##  [5] "zs_story_2_benign"                  "zs_story_2_retaliate"              
##  [7] "zs_story_3_hostile"                 "zs_story_3_benign"                 
##  [9] "zs_story_3_retaliate"               "zs_story_4_hostile"                
## [11] "zs_story_4_benign"                  "zs_story_4_retaliate"              
## [13] "nzs_story_1_hostile"                "nzs_story_1_benign"                
## [15] "nzs_story_1_retaliat"               "nzs_story_2_hostile"               
## [17] "nzs_story_2_benign"                 "nzs_story_2_retaliat"              
## [19] "nzs_story_3_hostile"                "nzs_story_3_benign"                
## [21] "nzs_story_3_retaliat"               "nzs_story_4_hostile"               
## [23] "nzs_story_4_benign"                 "nzs_story_4_retaliat"              
## [25] "zs_story_1_benign_recoded"          "zs_story_2_benign_recoded"         
## [27] "zs_story_3_benign_recoded"          "zs_story_4_benign_recoded"         
## [29] "nzs_story_1_benign_recoded"         "nzs_story_2_benign_recoded"        
## [31] "nzs_story_3_benign_recoded"         "nzs_story_4_benign_recoded"        
## [33] "story_1_hostile_attribution"        "story_1_benign_attribution_recoded"
## [35] "story_2_hostile_attribution"        "story_2_benign_attribution_recoded"
## [37] "story_3_hostile_attribution"        "story_3_benign_attribution_recoded"
## [39] "story_4_hostile_attribution"        "story_4_benign_attribution_recoded"
## [41] "story_1_retaliation"                "story_2_retaliation"               
## [43] "story_3_retaliation"                "story_4_retaliation"
# Apply reverse_key() to variables ending with "_benign" and rename with "_recoded"
hb <- hb %>%
  mutate(across(ends_with("_benign"), ~ reverse_key(.x), .names = "{.col}_recoded"))

# View the updated dataset
colnames(hb)
##  [1] "zs_marathon_man_ch_1"               "zs_marathon_man_ch_2"              
##  [3] "zs_story_1_hostile"                 "zs_story_1_benign"                 
##  [5] "zs_story_1_retaliate"               "zs_job_man_ch_1"                   
##  [7] "zs_job_man_ch_2"                    "zs_story_2_hostile"                
##  [9] "zs_story_2_benign"                  "zs_story_2_retaliate"              
## [11] "zs_politics_man_ch_1"               "zs_politics_man_ch_2"              
## [13] "zs_story_3_hostile"                 "zs_story_3_benign"                 
## [15] "zs_story_3_retaliate"               "zs_academic_man_ch_1"              
## [17] "zs_academic_man_ch_2"               "zs_story_4_hostile"                
## [19] "zs_story_4_benign"                  "zs_story_4_retaliate"              
## [21] "nzs_marathon_man_ch1"               "nzs_marathon_man_ch2"              
## [23] "nzs_story_1_hostile"                "nzs_story_1_benign"                
## [25] "nzs_story_1_retaliat"               "nzs_job_man_ch1"                   
## [27] "nzs_job_man_ch2"                    "nzs_story_2_hostile"               
## [29] "nzs_story_2_benign"                 "nzs_story_2_retaliat"              
## [31] "nzs_politics_man_ch1"               "nzs_politics_man_ch2"              
## [33] "nzs_story_3_hostile"                "nzs_story_3_benign"                
## [35] "nzs_story_3_retaliat"               "nzs_academic_man_ch1"              
## [37] "nzs_academic_man_ch2"               "nzs_story_4_hostile"               
## [39] "nzs_story_4_benign"                 "nzs_story_4_retaliat"              
## [41] "zsm_1"                              "zsb_2"                             
## [43] "zsm_3"                              "zsm_4"                             
## [45] "zsm_5"                              "zsm_6"                             
## [47] "zsm_7"                              "att_check"                         
## [49] "sex"                                "education"                         
## [51] "ethnicity_1"                        "ethnicity_2"                       
## [53] "ethnicity_3"                        "ethnicity_4"                       
## [55] "ethnicity_5"                        "ethnicity_8"                       
## [57] "ethnicity_6"                        "ethnicity_7"                       
## [59] "age"                                "income"                            
## [61] "condition"                          "mc_marathon_1"                     
## [63] "mc_marathon_2"                      "mc_job_1"                          
## [65] "mc_job_2"                           "mc_politics_1"                     
## [67] "mc_politics_2"                      "mc_academic_1"                     
## [69] "mc_academic_2"                      "zs_beliefs_mean"                   
## [71] "zs_story_1_benign_recoded"          "zs_story_2_benign_recoded"         
## [73] "zs_story_3_benign_recoded"          "zs_story_4_benign_recoded"         
## [75] "nzs_story_1_benign_recoded"         "nzs_story_2_benign_recoded"        
## [77] "nzs_story_3_benign_recoded"         "nzs_story_4_benign_recoded"        
## [79] "story_1_hostile_attribution"        "story_1_benign_attribution_recoded"
## [81] "story_2_hostile_attribution"        "story_2_benign_attribution_recoded"
## [83] "story_3_hostile_attribution"        "story_3_benign_attribution_recoded"
## [85] "story_4_hostile_attribution"        "story_4_benign_attribution_recoded"
## [87] "hostile_bias_mean"                  "story_1_retaliation"               
## [89] "story_2_retaliation"                "story_3_retaliation"               
## [91] "story_4_retaliation"                "retaliate_mean"                    
## [93] "zsm_mean"
# Checking for perfect negative correlation to confirm recoding

cor.test(hb$zs_story_2_benign_recoded, hb$zs_story_2_benign) 
## 
##  Pearson's product-moment correlation
## 
## data:  hb$zs_story_2_benign_recoded and hb$zs_story_2_benign
## t = -Inf, df = 486, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -1 -1
## sample estimates:
## cor 
##  -1
hb_df <- select(hb, ends_with("hostile") | ends_with("benign_recoded"))

colnames(hb_df)
##  [1] "zs_story_1_hostile"         "zs_story_2_hostile"        
##  [3] "zs_story_3_hostile"         "zs_story_4_hostile"        
##  [5] "nzs_story_1_hostile"        "nzs_story_2_hostile"       
##  [7] "nzs_story_3_hostile"        "nzs_story_4_hostile"       
##  [9] "zs_story_1_benign_recoded"  "zs_story_2_benign_recoded" 
## [11] "zs_story_3_benign_recoded"  "zs_story_4_benign_recoded" 
## [13] "nzs_story_1_benign_recoded" "nzs_story_2_benign_recoded"
## [15] "nzs_story_3_benign_recoded" "nzs_story_4_benign_recoded"
# Also checking  reliability to confirm reverse coding

attributions_zs_df <- select(hb_df, starts_with("zs_")) # checking these separately since there will be missing values due to random assignment to conditions

psych::alpha(attributions_zs_df)
## 
## Reliability analysis   
## Call: psych::alpha(x = attributions_zs_df)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean sd median_r
##       0.78      0.78     0.9       0.3 3.5 0.011  3.7  1     0.24
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.76  0.78   0.8
## Duhachek  0.76  0.78   0.8
## 
##  Reliability if an item is dropped:
##                           raw_alpha std.alpha G6(smc) average_r S/N alpha se
## zs_story_1_hostile             0.76      0.75    0.86      0.30 3.1    0.012
## zs_story_2_hostile             0.74      0.74    0.85      0.29 2.9    0.013
## zs_story_3_hostile             0.77      0.77    0.87      0.32 3.3    0.012
## zs_story_4_hostile             0.74      0.75    0.86      0.30 2.9    0.013
## zs_story_1_benign_recoded      0.75      0.75    0.86      0.31 3.1    0.012
## zs_story_2_benign_recoded      0.74      0.74    0.85      0.29 2.9    0.013
## zs_story_3_benign_recoded      0.77      0.77    0.88      0.32 3.3    0.012
## zs_story_4_benign_recoded      0.75      0.75    0.87      0.31 3.1    0.012
##                           var.r med.r
## zs_story_1_hostile        0.045  0.24
## zs_story_2_hostile        0.050  0.21
## zs_story_3_hostile        0.048  0.25
## zs_story_4_hostile        0.052  0.21
## zs_story_1_benign_recoded 0.045  0.25
## zs_story_2_benign_recoded 0.049  0.23
## zs_story_3_benign_recoded 0.049  0.27
## zs_story_4_benign_recoded 0.050  0.26
## 
##  Item statistics 
##                             n raw.r std.r r.cor r.drop mean  sd
## zs_story_1_hostile        488  0.62  0.63  0.61   0.47  2.9 1.7
## zs_story_2_hostile        488  0.68  0.68  0.67   0.55  3.2 1.7
## zs_story_3_hostile        488  0.56  0.56  0.51   0.40  5.5 1.6
## zs_story_4_hostile        488  0.67  0.66  0.62   0.53  3.8 1.8
## zs_story_1_benign_recoded 488  0.61  0.62  0.60   0.47  2.6 1.5
## zs_story_2_benign_recoded 488  0.68  0.68  0.66   0.55  3.1 1.6
## zs_story_3_benign_recoded 488  0.55  0.56  0.50   0.39  5.3 1.7
## zs_story_4_benign_recoded 488  0.64  0.62  0.58   0.48  3.5 1.8
## 
## Non missing response frequency for each item
##                              1    2    3    4    5    6    7 miss
## zs_story_1_hostile        0.19 0.38 0.15 0.09 0.08 0.07 0.04 0.51
## zs_story_2_hostile        0.13 0.31 0.18 0.11 0.14 0.08 0.04 0.51
## zs_story_3_hostile        0.02 0.07 0.05 0.09 0.15 0.29 0.33 0.51
## zs_story_4_hostile        0.09 0.23 0.15 0.14 0.20 0.13 0.08 0.51
## zs_story_1_benign_recoded 0.19 0.45 0.16 0.06 0.05 0.06 0.03 0.51
## zs_story_2_benign_recoded 0.13 0.35 0.21 0.09 0.11 0.08 0.03 0.51
## zs_story_3_benign_recoded 0.02 0.08 0.09 0.07 0.14 0.32 0.28 0.51
## zs_story_4_benign_recoded 0.10 0.28 0.17 0.13 0.15 0.11 0.07 0.51
omega_hb_nzs <- psych::omega(attributions_zs_df)

omega_hb_nzs$omega.tot  
## [1] 0.8902172
attributions_nzs_df <- select(hb_df, starts_with("nzs_"))
alpha_hb_nzs <- psych::alpha(attributions_nzs_df, check.keys = F)
alpha_hb_nzs$total
##  raw_alpha std.alpha   G6(smc) average_r      S/N         ase     mean       sd
##  0.8088931 0.8145801 0.9064187 0.3544829 4.393165 0.009544704 3.072289 1.074551
##   median_r
##  0.2745622
omega_hb_nzs <- psych::omega(attributions_nzs_df, nfactors = 1)
omega_hb_nzs$omega.tot 
## [1] 0.8179711
hb$story_1_hostile_attribution <- coalesce(hb_df$zs_story_1_hostile, hb_df$nzs_story_1_hostile)
hb$story_1_benign_attribution_recoded <- coalesce(hb_df$zs_story_1_benign_recoded, hb_df$nzs_story_1_benign_recoded)

hb$story_2_hostile_attribution <- coalesce(hb_df$zs_story_2_hostile, hb_df$nzs_story_2_hostile)
hb$story_2_benign_attribution_recoded <- coalesce(hb_df$zs_story_2_benign_recoded, hb_df$nzs_story_2_benign_recoded)

hb$story_3_hostile_attribution <- coalesce(hb_df$zs_story_3_hostile, hb_df$nzs_story_3_hostile)
hb$story_3_benign_attribution_recoded <- coalesce(hb_df$zs_story_3_benign_recoded, hb_df$nzs_story_3_benign_recoded)

hb$story_4_hostile_attribution <- coalesce(hb_df$zs_story_4_hostile, hb_df$nzs_story_4_hostile)
hb$story_4_benign_attribution_recoded <- coalesce(hb_df$zs_story_4_benign_recoded, hb_df$nzs_story_4_benign_recoded)

hostile_attributions_df <- select(hb, contains("attribution"))


#Composite Index
hb$hostile_bias_mean <- rowMeans(hostile_attributions_df)
hb_omega <- psych::omega(hostile_attributions_df)

hb_omega$omega.tot
## [1] 0.9044275

Retaliation Measure

zs_retaliation_df <- select(hb, contains("retalia") & starts_with("zs_"))
omega_retaliation <- psych::omega(zs_retaliation_df, na.rm = T)

omega_retaliation$omega.tot
## [1] 0.8311966
nzs_retaliation_df <- select(hb, contains("retalia") & starts_with("nzs_"))
omega_retaliation <- psych::omega(nzs_retaliation_df, na.rm = T)

omega_retaliation$omega.tot
## [1] 0.8590969
#combining matching items from the conditions 
hb$story_1_retaliation <- coalesce(hb$zs_story_1_retaliate, hb$nzs_story_1_retaliat) 
hb$story_2_retaliation <- coalesce(hb$zs_story_2_retaliate, hb$nzs_story_2_retaliat) 
hb$story_3_retaliation <- coalesce(hb$zs_story_3_retaliate, hb$nzs_story_3_retaliat) 
hb$story_4_retaliation <- coalesce(hb$zs_story_4_retaliate, hb$nzs_story_4_retaliat) 

retaliation_df <- select(hb, contains("retaliation"), -contains("mean"))

ret_omega <- psych::omega(retaliation_df)

ret_omega$omega.tot
## [1] 0.8366325
hb$retaliate_mean <- rowMeans(retaliation_df, na.rm = T)

Zero-Sum Mindset

Descriptive Statistics: Hostile Attributions and Retaliation by Condition

summary_stats <- hb %>%
  group_by(condition) %>%
  summarise(mean_retaliate = mean(retaliate_mean, na.rm = TRUE),
            sd_retaliate = sd(retaliate_mean, na.rm = TRUE),
            se_retaliate = sd(retaliate_mean, na.rm = TRUE) / sqrt(n()),
            mean_hostile_bias = mean(hostile_bias_mean, na.rm = TRUE),
            sd_hostile_bias = sd(hostile_bias_mean, na.rm = TRUE),
            se_hostile_bias = sd(hostile_bias_mean, na.rm = TRUE) / sqrt(n()))

print(summary_stats)
## # A tibble: 2 × 7
##   condition    mean_retaliate sd_retaliate se_retaliate mean_hostile_bias
##   <fct>                 <dbl>        <dbl>        <dbl>             <dbl>
## 1 zero_sum               2.71         1.32       0.0598              3.74
## 2 non_zero_sum           2.35         1.24       0.0558              3.07
## # ℹ 2 more variables: sd_hostile_bias <dbl>, se_hostile_bias <dbl>

Hypothesis 1

Zero-sum configurations of success will promote hostile attributions.

# Conduct the t-test
t_test <- t.test(hostile_bias_mean ~ condition, data = hb)
t_test_2 <- t.test(retaliate_mean ~ condition, data = hb)

# Extract the t-value, degrees of freedom, and p-value from the t-test results
t_value <- t_test$statistic
df <- t_test$parameter
p_value <- t_test$p.value

# Summarize Results
t_test_results <- hb %>%
  group_by(condition) %>%
  summarise(
    mean_hostile_bias = mean(hostile_bias_mean),
    sd_hostile_bias = sd(hostile_bias_mean),
    se_hostile_bias = sd(hostile_bias_mean) / sqrt(n())
  ) %>%
  ungroup() %>%
  mutate(condition = as.factor(condition))


# Print the t-test results, t-value, degrees of freedom, and p-value
print(t_test_results)
## # A tibble: 2 × 4
##   condition    mean_hostile_bias sd_hostile_bias se_hostile_bias
##   <fct>                    <dbl>           <dbl>           <dbl>
## 1 zero_sum                  3.74            1.05          0.0474
## 2 non_zero_sum              3.07            1.07          0.0482
cat("\n")
cat("T-value: ", t_value, "\n")
## T-value:  9.933327
cat("Degrees of Freedom: ", df, "\n")
## Degrees of Freedom:  983.9738
cat("P-value: ", p_value, "\n")
## P-value:  3.180784e-22
cohen.d(hb$hostile_bias_mean, hb$condition)
## 
## Cohen's d
## 
## d estimate: 0.6325522 (medium)
## 95 percent confidence interval:
##     lower     upper 
## 0.5044687 0.7606357
cohen.d(hb$retaliate_mean, hb$condition)
## 
## Cohen's d
## 
## d estimate: 0.2815245 (small)
## 95 percent confidence interval:
##     lower     upper 
## 0.1559108 0.4071382
cohen.d(hb$zsm_mean, hb$condition)
## 
## Cohen's d
## 
## d estimate: 0.3887444 (small)
## 95 percent confidence interval:
##     lower     upper 
## 0.2625733 0.5149154

Hypothesis 2

Zero-sum mindset will predict hostile attributions even in objectively non-zero-sum situations.

We examine this in the following ways:

  • Predicting hostile attributions when controlling for condition. This demonstrates the broad effect of zero-sum mindset even when accounting for objective differences in the situation -- i.e., controlling for condition. This is the main test of this hypothesis.

  • We can also examine estimates in the non-zero-sum condition separately. We do this by filtering the sample by condition and predicting hostile attributions from zero-sum mindset.

  • We also examine the interaction between condition and zero-sum mindset when predicting hostile attributions. We predict that zero-sum mindset moderates the effect of the objective situation on interpretations of hostility such that the main effect of condition (i.e., non-zero-sum situations leading to lower hostile attributions) is attenuated for those with stronger zero-sum mindsets. Note that the planned sample size may not be sufficiently powered to detect this additional interaction effect (if smaller than previously observed) beyond the main effects of condition and zero-sum mindset. Therefore, given the pre-specified directional nature of this hypothesis, here we adopt a one-tailed significant test of the interaction term (p<.10).

#Creating separate dataframe for non-zero-sum condition
non_zs_condition_df <- filter(hb, hb$condition =="non_zero_sum")
nrow(non_zs_condition_df)
## [1] 498
zs_condition_df <- filter(hb, hb$condition =="zero_sum")
nrow(zs_condition_df)
## [1] 488
# Main Hypothesis Test
test <- lm(hb$hostile_bias_mean ~  hb$zsm_mean + hb$condition)
summary(test)
## 
## Call:
## lm(formula = hb$hostile_bias_mean ~ hb$zsm_mean + hb$condition)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1796 -0.6944 -0.0230  0.6271  4.1735 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               2.86446    0.10127  28.286  < 2e-16 ***
## hb$zsm_mean               0.27514    0.02825   9.739  < 2e-16 ***
## hb$conditionnon_zero_sum -0.54892    0.06580  -8.342 2.45e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.014 on 983 degrees of freedom
## Multiple R-squared:  0.1711, Adjusted R-squared:  0.1694 
## F-statistic: 101.4 on 2 and 983 DF,  p-value: < 2.2e-16
#Standardized
test <- lm(scale(hb$hostile_bias_mean) ~  scale(hb$zsm_mean) + as.factor(hb$condition))
summary(test)
## 
## Call:
## lm(formula = scale(hb$hostile_bias_mean) ~ scale(hb$zsm_mean) + 
##     as.factor(hb$condition))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8578 -0.6241 -0.0207  0.5636  3.7511 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          0.24918    0.04165   5.983 3.07e-09 ***
## scale(hb$zsm_mean)                   0.28813    0.02958   9.739  < 2e-16 ***
## as.factor(hb$condition)non_zero_sum -0.49336    0.05914  -8.342 2.45e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9114 on 983 degrees of freedom
## Multiple R-squared:  0.1711, Adjusted R-squared:  0.1694 
## F-statistic: 101.4 on 2 and 983 DF,  p-value: < 2.2e-16
# Examining Interaction
test <- lm(hb$hostile_bias_mean ~ hb$condition * hb$zsm_mean)
summary(test)
## 
## Call:
## lm(formula = hb$hostile_bias_mean ~ hb$condition * hb$zsm_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9569 -0.6717 -0.0098  0.6104  4.2597 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                           3.11849    0.12967  24.049  < 2e-16 ***
## hb$conditionnon_zero_sum             -1.06853    0.17920  -5.963 3.46e-09 ***
## hb$zsm_mean                           0.19563    0.03798   5.151 3.13e-07 ***
## hb$conditionnon_zero_sum:hb$zsm_mean  0.17606    0.05652   3.115  0.00189 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.01 on 982 degrees of freedom
## Multiple R-squared:  0.1792, Adjusted R-squared:  0.1767 
## F-statistic: 71.46 on 3 and 982 DF,  p-value: < 2.2e-16
ggplot(hb, aes(hb$zsm_mean, hb$hostile_bias_mean, color = hb$condition)) + geom_smooth(method = lm)

# Interaction Standardized
test <- lm(scale(hb$hostile_bias_mean) ~ hb$condition * scale(hb$zsm_mean))
summary(test)
## 
## Call:
## lm(formula = scale(hb$hostile_bias_mean) ~ hb$condition * scale(hb$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6576 -0.6037 -0.0088  0.5486  3.8286 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                  0.26524    0.04178   6.348
## hb$conditionnon_zero_sum                    -0.49031    0.05889  -8.326
## scale(hb$zsm_mean)                           0.20487    0.03977   5.151
## hb$conditionnon_zero_sum:scale(hb$zsm_mean)  0.18437    0.05918   3.115
##                                             Pr(>|t|)    
## (Intercept)                                 3.33e-10 ***
## hb$conditionnon_zero_sum                    2.78e-16 ***
## scale(hb$zsm_mean)                          3.13e-07 ***
## hb$conditionnon_zero_sum:scale(hb$zsm_mean)  0.00189 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9074 on 982 degrees of freedom
## Multiple R-squared:  0.1792, Adjusted R-squared:  0.1767 
## F-statistic: 71.46 on 3 and 982 DF,  p-value: < 2.2e-16
apa.reg.table(test)
## 
## 
## Regression results using scale(hb$hostile_bias_mean) as the criterion
##  
## 
##                                    Predictor       b       b_95%_CI sr2
##                                  (Intercept)  0.27**   [0.18, 0.35]    
##                     hb$conditionnon_zero_sum -0.49** [-0.61, -0.37] .06
##                           scale(hb$zsm_mean)  0.20**   [0.13, 0.28] .02
##  hb$conditionnon_zero_sum:scale(hb$zsm_mean)  0.18**   [0.07, 0.30] .01
##                                                                        
##                                                                        
##                                                                        
##   sr2_95%_CI             Fit
##                             
##   [.03, .08]                
##   [.01, .04]                
##  [-.00, .02]                
##                  R2 = .179**
##              95% CI[.14,.22]
##                             
## 
## Note. A significant b-weight indicates the semi-partial correlation is also significant.
## b represents unstandardized regression weights. 
## sr2 represents the semi-partial correlation squared.
## Square brackets are used to enclose the lower and upper limits of a confidence interval.
## * indicates p < .05. ** indicates p < .01.
## 
# Non-Zero-Sum Condition Only Estimates
test <- lm(scale(hostile_bias_mean) ~  scale(zsm_mean), data = non_zs_condition_df)
summary(test)
## 
## Call:
## lm(formula = scale(hostile_bias_mean) ~ scale(zsm_mean), data = non_zs_condition_df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.3083 -0.6539 -0.0054  0.5490  3.9642 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     7.304e-16  4.160e-02   0.000        1    
## scale(zsm_mean) 3.743e-01  4.164e-02   8.988   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9283 on 496 degrees of freedom
## Multiple R-squared:  0.1401, Adjusted R-squared:  0.1383 
## F-statistic: 80.79 on 1 and 496 DF,  p-value: < 2.2e-16
ggplot(hb, aes(hb$zsm_mean, hb$retaliate_mean, color = hb$condition)) + geom_smooth(method = lm)

ggplot(hb, aes(hb$zsm_mean, hb$zs_beliefs_mean, color = hb$condition)) + geom_smooth(method = lm)

ggplot(hb, aes(hb$zsm_mean, hb$hostile_bias_mean, color = hb$condition)) + geom_smooth(method = lm)

Hypothesis 3

Zero-sum mindset will predict greater intention to retaliate across conditions, including in objectively non-zero-sum situations.

We examine this by predicting retaliation when controlling for condition. This demonstrates the broad effect of zero-sum mindset even when accounting for objective differences in the situation – controlling for condition.

# Main Hypothesis test: unstandardized estimates
test <- lm(hb$retaliate_mean ~ hb$zsm_mean + hb$condition)
summary(test)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ hb$zsm_mean + hb$condition)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1526 -0.8162 -0.1312  0.5990  4.5973 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               1.20821    0.11634  10.385   <2e-16 ***
## hb$zsm_mean               0.47114    0.03245  14.517   <2e-16 ***
## hb$conditionnon_zero_sum -0.15164    0.07559  -2.006   0.0451 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.165 on 983 degrees of freedom
## Multiple R-squared:  0.1926, Adjusted R-squared:  0.1909 
## F-statistic: 117.2 on 2 and 983 DF,  p-value: < 2.2e-16
# Main Hypothesis test: standardized estimates
test <- lm(scale(hb$retaliate_mean) ~ scale(hb$zsm_mean))
summary(test)
## 
## Call:
## lm(formula = scale(hb$retaliate_mean) ~ scale(hb$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5268 -0.6599 -0.0947  0.4888  3.4929 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        1.522e-15  2.869e-02    0.00        1    
## scale(hb$zsm_mean) 4.350e-01  2.870e-02   15.16   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9009 on 984 degrees of freedom
## Multiple R-squared:  0.1893, Adjusted R-squared:  0.1884 
## F-statistic: 229.7 on 1 and 984 DF,  p-value: < 2.2e-16
test <- lm(scale(hb$retaliate_mean) ~ as.factor(hb$condition) + scale(hb$zsm_mean))
summary(test)
## 
## Call:
## lm(formula = scale(hb$retaliate_mean) ~ as.factor(hb$condition) + 
##     scale(hb$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4343 -0.6302 -0.1013  0.4625  3.5498 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          0.05914    0.04111   1.439   0.1506    
## as.factor(hb$condition)non_zero_sum -0.11709    0.05837  -2.006   0.0451 *  
## scale(hb$zsm_mean)                   0.42386    0.02920  14.517   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8995 on 983 degrees of freedom
## Multiple R-squared:  0.1926, Adjusted R-squared:  0.1909 
## F-statistic: 117.2 on 2 and 983 DF,  p-value: < 2.2e-16

Exploratory

Retaliation

We also examine intention to retaliate by condition (main effect) and the interaction between condition and zero-sum mindset. (Note: These are not pre-registered hypotheses.)

# Perform the t-test
t_test_results <- hb %>%
  group_by(condition) %>%
  summarise(
    mean_retaliation = mean(retaliate_mean),
    sd_retaliate_ = sd(retaliate_mean),
    se_retaliate = sd(retaliate_mean) / sqrt(n())
  ) %>%
  ungroup() %>%
  mutate(condition = as.factor(condition))


# Conduct the t-test
t_test <- t.test(retaliate_mean ~ condition, data = hb)

# Extract the t-value, degrees of freedom, and p-value from the t-test results
t_value <- t_test$statistic
df <- t_test$parameter
p_value <- t_test$p.value

# Print the t-test results, t-value, degrees of freedom, and p-value
print(t_test_results)
## # A tibble: 2 × 4
##   condition    mean_retaliation sd_retaliate_ se_retaliate
##   <fct>                   <dbl>         <dbl>        <dbl>
## 1 zero_sum                 2.71          1.32       0.0598
## 2 non_zero_sum             2.35          1.24       0.0558
cat("\n")
cat("T-value: ", t_value, "\n")
## T-value:  4.417096
cat("Degrees of Freedom: ", df, "\n")
## Degrees of Freedom:  977.6667
cat("P-value: ", p_value, "\n")
## P-value:  1.111959e-05
#Unstandardized
test_1 <- lm(hb$retaliate_mean ~ hb$condition * hb$zsm_mean)
summary(test_1)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ hb$condition * hb$zsm_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3755 -0.8206 -0.1064  0.6013  4.5911 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                           1.36170    0.14950   9.108   <2e-16 ***
## hb$conditionnon_zero_sum             -0.46558    0.20661  -2.253   0.0244 *  
## hb$zsm_mean                           0.42311    0.04379   9.663   <2e-16 ***
## hb$conditionnon_zero_sum:hb$zsm_mean  0.10637    0.06516   1.632   0.1029    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.164 on 982 degrees of freedom
## Multiple R-squared:  0.1948, Adjusted R-squared:  0.1923 
## F-statistic: 79.17 on 3 and 982 DF,  p-value: < 2.2e-16
# Standardized
# Create dummy variables for the categorical variable "condition"
condition_dummies <- model.matrix(~ hb$condition - 1)

# Fit the linear regression model using the dummy variables and the interaction term
test <- lm(hb$retaliate_mean ~ condition_dummies * hb$zsm_mean)

summary(test)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ condition_dummies * hb$zsm_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3755 -0.8206 -0.1064  0.6013  4.5911 
## 
## Coefficients: (2 not defined because of singularities)
##                                                       Estimate Std. Error
## (Intercept)                                            0.89612    0.14260
## condition_dummieshb$conditionzero_sum                  0.46558    0.20661
## condition_dummieshb$conditionnon_zero_sum                   NA         NA
## hb$zsm_mean                                            0.52948    0.04825
## condition_dummieshb$conditionzero_sum:hb$zsm_mean     -0.10637    0.06516
## condition_dummieshb$conditionnon_zero_sum:hb$zsm_mean       NA         NA
##                                                       t value Pr(>|t|)    
## (Intercept)                                             6.284 4.95e-10 ***
## condition_dummieshb$conditionzero_sum                   2.253   0.0244 *  
## condition_dummieshb$conditionnon_zero_sum                  NA       NA    
## hb$zsm_mean                                            10.973  < 2e-16 ***
## condition_dummieshb$conditionzero_sum:hb$zsm_mean      -1.632   0.1029    
## condition_dummieshb$conditionnon_zero_sum:hb$zsm_mean      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.164 on 982 degrees of freedom
## Multiple R-squared:  0.1948, Adjusted R-squared:  0.1923 
## F-statistic: 79.17 on 3 and 982 DF,  p-value: < 2.2e-16
# Extract the coefficient estimates from the model
coefficients <- coef(test)

# Calculate the standard deviation of the predictor variable
sd_zsm_mean <- sd(hb$zsm_mean)

# Calculate the standardized beta coefficients
standardized_coefficients <- coefficients / c(sd_zsm_mean, sd_zsm_mean)


#Standardized
hb$condition_binary <- if_else(hb$condition =="non_zero_sum", 0,1)

test_2 <- lm(scale(hb$retaliate_mean) ~ hb$condition * scale(hb$zsm_mean))
summary(test_2)
## 
## Call:
## lm(formula = scale(hb$retaliate_mean) ~ hb$condition * scale(hb$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6064 -0.6336 -0.0821  0.4643  3.5450 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                  0.06747    0.04139   1.630
## hb$conditionnon_zero_sum                    -0.11551    0.05833  -1.980
## scale(hb$zsm_mean)                           0.38065    0.03939   9.663
## hb$conditionnon_zero_sum:scale(hb$zsm_mean)  0.09570    0.05862   1.632
##                                             Pr(>|t|)    
## (Intercept)                                   0.1034    
## hb$conditionnon_zero_sum                      0.0479 *  
## scale(hb$zsm_mean)                            <2e-16 ***
## hb$conditionnon_zero_sum:scale(hb$zsm_mean)   0.1029    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8987 on 982 degrees of freedom
## Multiple R-squared:  0.1948, Adjusted R-squared:  0.1923 
## F-statistic: 79.17 on 3 and 982 DF,  p-value: < 2.2e-16
ggplot(hb, aes(hb$zsm_mean, hb$retaliate_mean, color = condition)) +geom_smooth()

cohen.d(hb$retaliate_mean, hb$condition)
## 
## Cohen's d
## 
## d estimate: 0.2815245 (small)
## 95 percent confidence interval:
##     lower     upper 
## 0.1559108 0.4071382

Zero-Sum Mindset and Situational Zero-Sum Beliefs in Explicitly Non-Zero-Sum Situations

We also examine whether people with stronger zero-sum mindsets will hold stronger zero-sum beliefs (the manipulation check questions) compared to those with lower/non-zero-sum mindsets) even in the explicitly non-zero-sum situations.

We examine this in the following ways:

  1. Filtering the sample by condition (examining only those randomly assigned to each condition separately) and then predicting situationally-specific zero-sum beliefs from zero-sum mindset, we can examine whether zero-sum mindset predicts stronger zero-sum beliefs beyond the effect of the objectively described structure of the situation.

  2. We examine the interaction between condition and zero-sum mindset when predicting zero-sum beliefs about situations.

test_1 <- lm(scale(non_zs_condition_df$zs_beliefs_mean) ~ scale(non_zs_condition_df$zsm_mean))
summary(test_1)
## 
## Call:
## lm(formula = scale(non_zs_condition_df$zs_beliefs_mean) ~ scale(non_zs_condition_df$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.3990 -0.5884 -0.1337  0.4676  3.4570 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                         6.521e-16  3.942e-02    0.00        1    
## scale(non_zs_condition_df$zsm_mean) 4.771e-01  3.946e-02   12.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8797 on 496 degrees of freedom
## Multiple R-squared:  0.2276, Adjusted R-squared:  0.2261 
## F-statistic: 146.2 on 1 and 496 DF,  p-value: < 2.2e-16
test_1 <- lm(scale(zs_condition_df$zsm_mean) ~ scale(zs_condition_df$zs_beliefs_mean))
summary(test_1)
## 
## Call:
## lm(formula = scale(zs_condition_df$zsm_mean) ~ scale(zs_condition_df$zs_beliefs_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.0959 -0.7255 -0.1621  0.6803  2.8874 
## 
## Coefficients:
##                                         Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            3.096e-15  4.432e-02   0.000        1
## scale(zs_condition_df$zs_beliefs_mean) 2.084e-01  4.436e-02   4.697 3.43e-06
##                                           
## (Intercept)                               
## scale(zs_condition_df$zs_beliefs_mean) ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.979 on 486 degrees of freedom
## Multiple R-squared:  0.04343,    Adjusted R-squared:  0.04146 
## F-statistic: 22.07 on 1 and 486 DF,  p-value: 3.434e-06
test_2a <- lm(scale(hb$zs_beliefs_mean) ~ scale(hb$zsm_mean) + hb$condition)
test_2 <- lm(hb$zs_beliefs_mean ~ hb$zsm_mean * hb$condition)
#unstandardized estimates

summary(test_2a)
## 
## Call:
## lm(formula = scale(hb$zs_beliefs_mean) ~ scale(hb$zsm_mean) + 
##     hb$condition)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.75748 -0.32438 -0.01771  0.30749  1.98551 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               0.82358    0.02269   36.30   <2e-16 ***
## scale(hb$zsm_mean)        0.18020    0.01612   11.18   <2e-16 ***
## hb$conditionnon_zero_sum -1.63062    0.03222  -50.61   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4965 on 983 degrees of freedom
## Multiple R-squared:  0.754,  Adjusted R-squared:  0.7535 
## F-statistic:  1506 on 2 and 983 DF,  p-value: < 2.2e-16
test_2b <- lm(scale(hb$zs_beliefs_mean) ~  hb$condition_binary + scale(hb$zsm_mean) ) #standardized estimates

summary(test_2b)
## 
## Call:
## lm(formula = scale(hb$zs_beliefs_mean) ~ hb$condition_binary + 
##     scale(hb$zsm_mean))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.75748 -0.32438 -0.01771  0.30749  1.98551 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -0.80704    0.02246  -35.94   <2e-16 ***
## hb$condition_binary  1.63062    0.03222   50.61   <2e-16 ***
## scale(hb$zsm_mean)   0.18020    0.01612   11.18   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4965 on 983 degrees of freedom
## Multiple R-squared:  0.754,  Adjusted R-squared:  0.7535 
## F-statistic:  1506 on 2 and 983 DF,  p-value: < 2.2e-16
low_zsm_threshold <- mean(hb$zsm_mean) - (1 * sd(hb$zsm_mean))
high_zsm_threshold <- mean(hb$zsm_mean) + (1 * sd(hb$zsm_mean))


hb$zsm_binary <- "Middle"
hb$zsm_binary <- if_else(hb$zsm_mean < low_zsm_threshold, "Low ZSM", hb$zsm_binary)
hb$zsm_binary <- if_else(hb$zsm_mean > high_zsm_threshold, "High ZSM", hb$zsm_binary)

hb_dichotomized <- filter(hb, !hb$zsm_binary == "Middle")
hb_high_zsm <- filter(hb, hb$zsm_binary == "High ZSM")
hb_low_zsm <- filter(hb, hb$zsm_binary == "Low ZSM")

nrow(hb_high_zsm)
## [1] 172
nrow(hb_low_zsm)
## [1] 132
psych::cohen.d(hb_high_zsm$zs_beliefs_mean, hb_high_zsm$condition)
## Call: psych::cohen.d(x = hb_high_zsm$zs_beliefs_mean, group = hb_high_zsm$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,] -2.68  -2.29 -1.89
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 2.3
## r equivalent of difference between two means
##  data 
## -0.74
psych::cohen.d(hb_low_zsm$zs_beliefs_mean, hb_low_zsm$condition)
## Call: psych::cohen.d(x = hb_low_zsm$zs_beliefs_mean, group = hb_low_zsm$condition)
## Cohen d statistic of difference between two means
##      lower effect upper
## [1,] -4.64  -4.03 -3.42
## 
## Multivariate (Mahalanobis) distance between groups
## [1] 4
## r equivalent of difference between two means
##  data 
## -0.89
test <- lm(scale(hb$zsm_mean) ~ hb$condition * hb$zs_beliefs_mean)
summary(test)
## 
## Call:
## lm(formula = scale(hb$zsm_mean) ~ hb$condition * hb$zs_beliefs_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1668 -0.6349 -0.1218  0.5275  3.2581 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                 -0.90188    0.21559  -4.183
## hb$conditionnon_zero_sum                    -0.12344    0.23287  -0.530
## hb$zs_beliefs_mean                           0.19677    0.03802   5.175
## hb$conditionnon_zero_sum:hb$zs_beliefs_mean  0.21158    0.05375   3.937
##                                             Pr(>|t|)    
## (Intercept)                                 3.13e-05 ***
## hb$conditionnon_zero_sum                       0.596    
## hb$zs_beliefs_mean                          2.76e-07 ***
## hb$conditionnon_zero_sum:hb$zs_beliefs_mean 8.85e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9188 on 982 degrees of freedom
## Multiple R-squared:  0.1585, Adjusted R-squared:  0.1559 
## F-statistic: 61.63 on 3 and 982 DF,  p-value: < 2.2e-16
ggplot(hb, aes(hb$zsm_mean, hb$zs_beliefs_mean, color = condition)) + geom_smooth(method = lm)

test <- lm(hb$retaliate_mean ~ hb$condition)
summary(test)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ hb$condition)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7136 -1.1024 -0.2136  0.6476  4.6476 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               2.71363    0.05808   46.72  < 2e-16 ***
## hb$conditionnon_zero_sum -0.36122    0.08173   -4.42  1.1e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.283 on 984 degrees of freedom
## Multiple R-squared:  0.01947,    Adjusted R-squared:  0.01847 
## F-statistic: 19.53 on 1 and 984 DF,  p-value: 1.098e-05
test <- lm(hb$retaliate_mean ~ hb$condition * hb$zs_beliefs_mean)
summary(test)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ hb$condition * hb$zs_beliefs_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7432 -0.7905 -0.1483  0.6750  4.3905 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                  2.23687    0.28279   7.910
## hb$conditionnon_zero_sum                    -1.04985    0.30546  -3.437
## hb$zs_beliefs_mean                           0.08569    0.04988   1.718
## hb$conditionnon_zero_sum:hb$zs_beliefs_mean  0.48329    0.07050   6.855
##                                             Pr(>|t|)    
## (Intercept)                                 6.91e-15 ***
## hb$conditionnon_zero_sum                    0.000613 ***
## hb$zs_beliefs_mean                          0.086086 .  
## hb$conditionnon_zero_sum:hb$zs_beliefs_mean 1.26e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.205 on 982 degrees of freedom
## Multiple R-squared:  0.1367, Adjusted R-squared:  0.1341 
## F-statistic: 51.83 on 3 and 982 DF,  p-value: < 2.2e-16
test <- lm(hb$retaliate_mean ~ hb$hostile_bias_mean)
summary(test)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ hb$hostile_bias_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4660 -0.6212 -0.0603  0.5453  3.7398 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           0.10991    0.10521   1.045    0.296    
## hb$hostile_bias_mean  0.71119    0.02938  24.210   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.026 on 984 degrees of freedom
## Multiple R-squared:  0.3733, Adjusted R-squared:  0.3727 
## F-statistic: 586.1 on 1 and 984 DF,  p-value: < 2.2e-16
test <- lm(scale(hb$retaliate_mean) ~ hb$condition * scale(hb$zsm_mean))
summary(test)
## 
## Call:
## lm(formula = scale(hb$retaliate_mean) ~ hb$condition * scale(hb$zsm_mean))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6064 -0.6336 -0.0821  0.4643  3.5450 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                  0.06747    0.04139   1.630
## hb$conditionnon_zero_sum                    -0.11551    0.05833  -1.980
## scale(hb$zsm_mean)                           0.38065    0.03939   9.663
## hb$conditionnon_zero_sum:scale(hb$zsm_mean)  0.09570    0.05862   1.632
##                                             Pr(>|t|)    
## (Intercept)                                   0.1034    
## hb$conditionnon_zero_sum                      0.0479 *  
## scale(hb$zsm_mean)                            <2e-16 ***
## hb$conditionnon_zero_sum:scale(hb$zsm_mean)   0.1029    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8987 on 982 degrees of freedom
## Multiple R-squared:  0.1948, Adjusted R-squared:  0.1923 
## F-statistic: 79.17 on 3 and 982 DF,  p-value: < 2.2e-16
test <- lm(hb$retaliate_mean ~ hb$hostile_bias_mean + hb$condition)
summary(test)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ hb$hostile_bias_mean + hb$condition)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4854 -0.6593 -0.0497  0.5645  3.6771 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              -0.01373    0.12419  -0.111   0.9120    
## hb$hostile_bias_mean      0.72854    0.03077  23.674   <2e-16 ***
## hb$conditionnon_zero_sum  0.12786    0.06845   1.868   0.0621 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.024 on 983 degrees of freedom
## Multiple R-squared:  0.3755, Adjusted R-squared:  0.3742 
## F-statistic: 295.6 on 2 and 983 DF,  p-value: < 2.2e-16
test <- lm(hb$retaliate_mean ~ hb$hostile_bias_mean + hb$condition + hb$zsm_mean)
summary(test)
## 
## Call:
## lm(formula = hb$retaliate_mean ~ hb$hostile_bias_mean + hb$condition + 
##     hb$zsm_mean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3415 -0.6272 -0.0227  0.5525  3.2037 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              -0.60672    0.13077  -4.640 3.96e-06 ***
## hb$hostile_bias_mean      0.63360    0.03058  20.719  < 2e-16 ***
## hb$conditionnon_zero_sum  0.19615    0.06528   3.005  0.00273 ** 
## hb$zsm_mean               0.29681    0.02836  10.465  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9722 on 982 degrees of freedom
## Multiple R-squared:  0.4382, Adjusted R-squared:  0.4365 
## F-statistic: 255.3 on 3 and 982 DF,  p-value: < 2.2e-16
ggplot(hb, aes(hb$zsm_mean, hb$retaliate_mean, color = condition)) + geom_smooth(method = lm)

ggplot(hb, aes(hb$hostile_bias_mean, hb$retaliate_mean, color = condition)) + geom_smooth(method = lm)

ggplot(hb, aes(hb$zs_beliefs_mean, hb$retaliate_mean, color = condition)) + geom_smooth(method = lm)

ggplot(hb, aes(hb$zsm_mean, hb$zs_beliefs_mean, color = condition)) + geom_smooth(method = lm)

cor.test(hb$zsm_mean, hb$zs_beliefs_mean)
## 
##  Pearson's product-moment correlation
## 
## data:  hb$zsm_mean and hb$zs_beliefs_mean
## t = 11.19, df = 984, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.2794067 0.3902244
## sample estimates:
##       cor 
## 0.3359778
cor.test(zs_condition_df$zsm_mean, zs_condition_df$zs_beliefs_mean)
## 
##  Pearson's product-moment correlation
## 
## data:  zs_condition_df$zsm_mean and zs_condition_df$zs_beliefs_mean
## t = 4.6974, df = 486, p-value = 3.434e-06
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.1218914 0.2917658
## sample estimates:
##       cor 
## 0.2083998
cor.test(non_zs_condition_df$zsm_mean, non_zs_condition_df$zs_beliefs_mean)
## 
##  Pearson's product-moment correlation
## 
## data:  non_zs_condition_df$zsm_mean and non_zs_condition_df$zs_beliefs_mean
## t = 12.09, df = 496, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4062465 0.5422204
## sample estimates:
##       cor 
## 0.4770834
ggplot(hb, aes(hb$zsm_mean, hb$zs_beliefs_mean, color = condition)) + geom_jitter() +geom_smooth(method = lm) + theme_classic() + xlab("Zero-Sum Mindset") + ylab("Situational Zero-Sum Beliefs")

library(ggplot2)

# We use a single call to 'geom_smooth' and specify linetype and color in the 'aes' function.
ggplot(hb, aes(x = zsm_mean, y = zs_beliefs_mean)) + 
  geom_jitter(aes(color = condition), size = 1, alpha = 0.5) +  # Adjust size and alpha as needed
  geom_smooth(
    method = lm, aes(linetype = condition, color = condition), 
    se = TRUE, 
    show.legend = TRUE
  ) +
  scale_color_manual(
    values = c("red1", "darkgray"),
    labels = c("Zero-Sum Condition", "Non-Zero-Sum Condition"),
    name = "Condition"
  ) +
  scale_linetype_manual(
    values = c("solid", "dotted"),
    labels = c("Non-Zero-Sum Condition", "Zero-Sum Condition"),
    name = "Condition"
  ) +
  theme_classic() +
  xlab("Zero-Sum Mindset") +
  ylab("Situational Zero-Sum Beliefs")

ggplot(hb, aes(x = zsm_mean, y = hostile_bias_mean))  +  # Adjust size and alpha as needed
  geom_smooth(
    method = lm, aes(linetype = condition, color = condition), 
    se = TRUE, 
    show.legend = TRUE
  )  +
  scale_linetype_manual(
    values = c("solid", "dotted"),
    labels = c("Non-Zero-Sum Condition", "Zero-Sum Condition"),
    name = "Condition"
  ) +
  theme_classic() +
  xlab("Zero-Sum Mindset") +
  ylab("Situational Zero-Sum Beliefs") +
  scale_color_manual(
    values = c( "red2", "darkgray"),
    labels = c("Zero-Sum Condition", "Non-Zero-Sum Condition"),
    name = "Condition"
  )

ggplot(hb, aes(x = zsm_mean, y = hostile_bias_mean))  +  # Adjust size and alpha as needed
  geom_smooth(
    method = lm, aes(linetype = condition, color = condition), 
    se = TRUE, 
    show.legend = TRUE
  )  +
  scale_linetype_manual(
    values = c("solid", "dotted"),
    labels = c("Non-Zero-Sum Condition", "Zero-Sum Condition"),
    name = "Condition"
  ) +
  theme_classic() +
  xlab("Zero-Sum Mindset") +
  ylab("Hostile Attributions") +
  scale_color_manual(
    values = c( "red2", "darkgray"),
    labels = c("Zero-Sum Condition", "Non-Zero-Sum Condition"),
    name = "Condition"
  )

ggplot(hb, aes(x = zsm_mean, y = zs_beliefs_mean))  +  # Adjust size and alpha as needed
  geom_smooth(
    method = lm, aes(linetype = condition, color = condition), 
    se = TRUE, 
    show.legend = TRUE
  )  +
  scale_linetype_manual(
    values = c("solid", "dotted"),
    labels = c("Non-Zero-Sum Condition", "Zero-Sum Condition"),
    name = "Condition"
  ) +
  theme_classic() +
  xlab("Zero-Sum Mindset") +
  ylab("Situational Zero-Sum Beliefs") +
  scale_color_manual(
    values = c( "red2", "darkgray"),
    labels = c("Zero-Sum Condition", "Non-Zero-Sum Condition"),
    name = "Condition"
  )