H1 Stress, experiences with discrimination, and rejection sensitivity will predict inequality-driven mistrust
H2 Hypothesis 1 will be replicated with a new sample and in a mini meta-analysis
H3 Inequality-driven mistrust will predict misinformation acceptance, accurate information acceptance, and increased susceptibility to misinformation
H4 Experiences with discrimination and rejection sensitivity predict misinformation acceptance but not accurate information acceptance, mediated by inequality-driven mistrust
Loading
Load Libraries
Code
library(psych)library(kableExtra)library(ggplot2)library(tidyr)library(dplyr)library(nFactors)# remotes::install_version("lavaan", version = "0.6.17")library(lavaan)library(semPlot)library(tidySEM)library(stringr)library(corrplot)library(mifa) # MI covariance matrix for EFAlibrary(mice) # underlying imputation enginelibrary(sjPlot)library(metafor)library(broom)# library(DiagrammeR)library(lme4)library(lmerTest)
d <-na.omit(subset(df1, select=c(grep("Q39_", colnames(df1)))))labels <-c(Q39_1 ="Less Courtesy",Q39_2 ="Less Respect",Q39_3 ="Poorer Service",Q39_4 ="Seen as Not Smart",Q39_5 ="Seen as Threatening",Q39_6 ="Seen as Dishonest",Q39_8 ="Inferior",Q39_9 ="Insulted",Q39_10 ="Threatened/Harassed")names(d) <- labelsd_long <-stack(d)names(d_long) <-c("value", "variable")ggplot(d_long, aes(x = value)) +geom_histogram(binwidth =1, fill ="steelblue", color ="white") +facet_wrap(~ variable, labeller =label_wrap_gen(width =30)) +theme_minimal()
EFA 1
Code
ev <-eigen(cor(d)) # get eigenvaluesap <-parallel(subject=nrow(d),var=ncol(d),rep=100,cent=.05) # run the parallel analysis, gives us another perspective on how many factors should be used in the modelnS <-nScree(x=ev$values, aparallel=ap$eigen$qevpea) # creates the scree plotplotnScree(nS) # shows us the scree plot, look for the elbows
Call:
factanal(x = d, factors = 1, rotation = "promax")
Uniquenesses:
Less Courtesy Less Respect Poorer Service Seen as Not Smart
0.175 0.151 0.684 0.542
Seen as Threatening Seen as Dishonest Inferior Insulted
0.804 0.658 0.504 0.678
Threatened/Harassed
0.716
Loadings:
Factor1
Less Courtesy 0.908
Less Respect 0.921
Poorer Service 0.562
Seen as Not Smart 0.677
Seen as Threatening 0.443
Seen as Dishonest 0.585
Inferior 0.705
Insulted 0.568
Threatened/Harassed 0.533
Factor1
SS loadings 4.089
Proportion Var 0.454
Test of the hypothesis that 1 factor is sufficient.
The chi square statistic is 373.2 on 27 degrees of freedom.
The p-value is 1.39e-62
EFA 2
Code
d <-subset(d, select =-c(`Seen as Threatening`, `Threatened/Harassed`, `Insulted`, `Poorer Service`))ev <-eigen(cor(d)) # get eigenvaluesap <-parallel(subject=nrow(d),var=ncol(d),rep=100,cent=.05) # run the parallel analysis, gives us another perspective on how many factors should be used in the modelnS <-nScree(x=ev$values, aparallel=ap$eigen$qevpea) # creates the scree plotplotnScree(nS) # shows us the scree plot, look for the elbows
Call:
factanal(x = d, factors = 1, rotation = "promax")
Uniquenesses:
Less Courtesy Less Respect Seen as Not Smart Seen as Dishonest
0.132 0.111 0.595 0.712
Inferior
0.545
Loadings:
Factor1
Less Courtesy 0.931
Less Respect 0.943
Seen as Not Smart 0.637
Seen as Dishonest 0.536
Inferior 0.674
Factor1
SS loadings 2.904
Proportion Var 0.581
Test of the hypothesis that 1 factor is sufficient.
The chi square statistic is 125.02 on 5 degrees of freedom.
The p-value is 2.71e-25
d <-na.omit(subset(df1, select=c(grep("Q40_", colnames(df1)))))labels <-c(Q40_1 ="Hiring Discrimination",Q40_2 ="Seen as Untrustworthy",Q40_3 ="Seen as Dangerous",Q40_4 ="Devalued",Q40_5 ="Looked Down On",Q40_6 ="Seen as Less Intelligent")names(d) <- labelsd_long <-stack(d)names(d_long) <-c("value", "variable")ggplot(d_long, aes(x = value)) +geom_histogram(binwidth =1, fill ="steelblue", color ="white") +facet_wrap(~ variable, labeller =label_wrap_gen(width =30)) +theme_minimal()
EFA 1
Code
ev <-eigen(cor(d)) # get eigenvaluesap <-parallel(subject=nrow(d),var=ncol(d),rep=100,cent=.05) # run the parallel analysis, gives us another perspective on how many factors should be used in the modelnS <-nScree(x=ev$values, aparallel=ap$eigen$qevpea) # creates the scree plotplotnScree(nS) # shows us the scree plot, look for the elbows
Call:
factanal(x = d, factors = 1, rotation = "promax")
Uniquenesses:
Hiring Discrimination Seen as Untrustworthy Seen as Dangerous
0.529 0.488 0.556
Devalued Looked Down On Seen as Less Intelligent
0.125 0.138 0.357
Loadings:
Factor1
Hiring Discrimination 0.686
Seen as Untrustworthy 0.716
Seen as Dangerous 0.666
Devalued 0.935
Looked Down On 0.928
Seen as Less Intelligent 0.802
Factor1
SS loadings 3.807
Proportion Var 0.635
Test of the hypothesis that 1 factor is sufficient.
The chi square statistic is 140.3 on 9 degrees of freedom.
The p-value is 8.97e-26
Call:
factanal(x = d, factors = 2, rotation = "promax")
Uniquenesses:
Hiring Discrimination Seen as Untrustworthy Seen as Dangerous
0.538 0.246 0.322
Devalued Looked Down On Seen as Less Intelligent
0.145 0.085 0.355
Loadings:
Factor1 Factor2
Hiring Discrimination 0.541
Seen as Untrustworthy 0.860
Seen as Dangerous 0.859
Devalued 0.864
Looked Down On 1.014
Seen as Less Intelligent 0.661
Factor1 Factor2
SS loadings 2.505 1.547
Proportion Var 0.418 0.258
Cumulative Var 0.418 0.675
Factor Correlations:
Factor1 Factor2
Factor1 1.000 0.782
Factor2 0.782 1.000
Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 18.69 on 4 degrees of freedom.
The p-value is 0.000906
EFA 2
Code
d <-subset(d, select =-c(`Seen as Dangerous`))ev <-eigen(cor(d)) # get eigenvaluesap <-parallel(subject=nrow(d),var=ncol(d),rep=100,cent=.05) # run the parallel analysis, gives us another perspective on how many factors should be used in the modelnS <-nScree(x=ev$values, aparallel=ap$eigen$qevpea) # creates the scree plotplotnScree(nS) # shows us the scree plot, look for the elbows
Call:
factanal(x = d, factors = 1, rotation = "promax")
Uniquenesses:
Hiring Discrimination Seen as Untrustworthy Devalued
0.531 0.518 0.129
Looked Down On Seen as Less Intelligent
0.119 0.360
Loadings:
Factor1
Hiring Discrimination 0.685
Seen as Untrustworthy 0.694
Devalued 0.933
Looked Down On 0.939
Seen as Less Intelligent 0.800
Factor1
SS loadings 3.343
Proportion Var 0.669
Test of the hypothesis that 1 factor is sufficient.
The chi square statistic is 23.77 on 5 degrees of freedom.
The p-value is 0.000241
d <-na.omit(subset(df1, select=c(grep("Q18_", colnames(df1)))))labels <-c(Q18_1 ="Unfair Treatment Expected",Q18_2 ="Information Untruthful",Q18_3 ="Distrust from Experience",Q18_4 ="Insincere Intentions",Q18_5 ="Can't Trust Others",Q18_6 ="Will Be Taken Advantage Of",Q18_7 ="No One Would Help",Q18_8 ="Others Out to Get Me",Q18_9 ="Distrust Authority",Q18_11 ="Officials Untrustworthy",Q18_12 ="Treated Unjustly",Q18_13 ="Prefer Self-Research",Q18_14 ="Faith Leads to Hurt",Q18_15 ="Question Why Told Things",Q18_16 ="Ignore Others' Advice")# shorten labels to max 40 characters (you can adjust the number)# labels <- str_trunc(labels, width = 60, side = "right")# replace column namesnames(d) <- labelsd_long <-stack(d)names(d_long) <-c("value", "variable")ggplot(d_long, aes(x = value)) +geom_histogram(binwidth =1, fill ="steelblue", color ="white") +facet_wrap(~ variable, labeller =label_wrap_gen(width =30)) +theme_minimal()
EFA 1
Code
ev <-eigen(cor(d)) # get eigenvaluesap <-parallel(subject=nrow(d),var=ncol(d),rep=100,cent=.05) # run the parallel analysis, gives us another perspective on how many factors should be used in the modelnS <-nScree(x=ev$values, aparallel=ap$eigen$qevpea) # creates the scree plotplotnScree(nS) # shows us the scree plot, look for the elbows
Call:
factanal(x = d, factors = 3, rotation = "promax")
Uniquenesses:
Unfair Treatment Expected Information Untruthful
0.546 0.648
Distrust from Experience Insincere Intentions
0.231 0.155
Can't Trust Others Will Be Taken Advantage Of
0.342 0.497
No One Would Help Others Out to Get Me
0.684 0.535
Distrust Authority Officials Untrustworthy
0.342 0.450
Treated Unjustly Prefer Self-Research
0.391 0.757
Faith Leads to Hurt Question Why Told Things
0.435 0.388
Ignore Others' Advice
0.692
Loadings:
Factor1 Factor2 Factor3
Information Untruthful 0.622
Others Out to Get Me 0.697
Distrust Authority 0.932
Officials Untrustworthy 0.821
Treated Unjustly 0.780
Distrust from Experience 0.926
Insincere Intentions 0.942
Can't Trust Others 0.632
Faith Leads to Hurt 0.714
Question Why Told Things 0.884
Ignore Others' Advice 0.571
Unfair Treatment Expected 0.481
Will Be Taken Advantage Of 0.433
No One Would Help
Prefer Self-Research 0.444
Factor1 Factor2 Factor3
SS loadings 3.557 2.454 1.898
Proportion Var 0.237 0.164 0.127
Cumulative Var 0.237 0.401 0.527
Factor Correlations:
Factor1 Factor2 Factor3
Factor1 1.000 0.683 0.721
Factor2 0.683 1.000 0.692
Factor3 0.721 0.692 1.000
Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 121.21 on 63 degrees of freedom.
The p-value is 1.48e-05
EFA 2
Code
d <-subset(d, select =-c(`No One Would Help`))ev <-eigen(cor(d)) # get eigenvaluesap <-parallel(subject=nrow(d),var=ncol(d),rep=100,cent=.05) # run the parallel analysis, gives us another perspective on how many factors should be used in the modelnS <-nScree(x=ev$values, aparallel=ap$eigen$qevpea) # creates the scree plotplotnScree(nS) # shows us the scree plot, look for the elbows
Call:
factanal(x = d, factors = 3, rotation = "promax")
Uniquenesses:
Unfair Treatment Expected Information Untruthful
0.548 0.643
Distrust from Experience Insincere Intentions
0.230 0.155
Can't Trust Others Will Be Taken Advantage Of
0.342 0.498
Others Out to Get Me Distrust Authority
0.556 0.340
Officials Untrustworthy Treated Unjustly
0.432 0.393
Prefer Self-Research Faith Leads to Hurt
0.749 0.423
Question Why Told Things Ignore Others' Advice
0.413 0.688
Loadings:
Factor1 Factor2 Factor3
Information Untruthful 0.614
Others Out to Get Me 0.657
Distrust Authority 0.915
Officials Untrustworthy 0.823
Treated Unjustly 0.763
Distrust from Experience 0.919
Insincere Intentions 0.931
Can't Trust Others 0.628
Faith Leads to Hurt 0.722
Question Why Told Things 0.836
Ignore Others' Advice 0.567
Unfair Treatment Expected 0.470
Will Be Taken Advantage Of 0.431
Prefer Self-Research 0.451
Factor1 Factor2 Factor3
SS loadings 3.267 2.411 1.805
Proportion Var 0.233 0.172 0.129
Cumulative Var 0.233 0.406 0.535
Factor Correlations:
Factor1 Factor2 Factor3
Factor1 1.00 0.670 0.700
Factor2 0.67 1.000 0.679
Factor3 0.70 0.679 1.000
Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 85.57 on 52 degrees of freedom.
The p-value is 0.00231
corrout1 <-corr.test(subset(df1, select=c(60:72)))corrplot( corrout1$r,p.mat = corrout1$p, # add p-valuessig.level =0.05, # hide correlations above this p-valueinsig ="pch", # or "pch" to mark nonsignificant onesmethod ="color",type ="upper",tl.col ="black",tl.srt =45,addCoef.col ="black",number.cex =0.8)
S2
Code
corrout2 <-corr.test(subset(df2, select=c(216:242)))corrplot( corrout2$r,p.mat = corrout2$p, # add p-valuessig.level =0.05, # hide correlations above this p-valueinsig ="pch", # or "pch" to mark nonsignificant onesmethod ="color",type ="upper",tl.col ="black",tl.srt =45,addCoef.col ="black",number.cex =0.8)
Student Status & SES
Code
t.test(parent_edu ~ samp, data = df1)
Welch Two Sample t-test
data: parent_edu by samp
t = -12.26, df = 368.52, p-value < 2.2e-16
alternative hypothesis: true difference in means between group Prolific and group SONA is not equal to 0
95 percent confidence interval:
-1.3390379 -0.9688569
sample estimates:
mean in group Prolific mean in group SONA
2.546053 3.700000
Code
t.test(parent_edu ~ samp, data = df2)
Welch Two Sample t-test
data: parent_edu by samp
t = -8.0798, df = 83.629, p-value = 4.312e-12
alternative hypothesis: true difference in means between group Prolific and group SONA is not equal to 0
95 percent confidence interval:
-1.5966197 -0.9658899
sample estimates:
mean in group Prolific mean in group SONA
2.577236 3.858491
Hypothesis 1
H1 Stress, experiences with discrimination, and rejection sensitivity will predict inequality-driven mistrust
H3 Inequality-driven mistrust will predict misinformation acceptance, accurate information acceptance, and increased susceptibility to misinformation
Findings
IDM predicts misinformation acceptance (b = .14, p = .049) but not accurate information acceptance (b = .04, p = .549). Students are lower in misinformation (b = -.65, p < .001) and accurate information (b = -.71, p < .001) acceptance. IDM also predicts increased susceptability to misinformation acceptance (using residualized change approach; b = .11, p = .045). Students have lower susceptability to misinformation than non-students, but the difference is only borderline significant (b = -.23, p = .080).
Conclusions
IDM predicts misinformation acceptance and increased susceptability to misinformation, but not accurate information acceptance.
Call:
lm(formula = mis_dang_z ~ acc_dang_z + idm_z + samp, data = df2)
Residuals:
Min 1Q Median 3Q Max
-2.56046 -0.55236 0.04106 0.62231 1.94738
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.09610 0.08672 1.108 0.2695
acc_dang_z 0.42090 0.07460 5.642 7.7e-08 ***
idm_z 0.14944 0.07137 2.094 0.0379 *
sampSONA -0.24012 0.16541 -1.452 0.1486
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.8955 on 156 degrees of freedom
(24 observations deleted due to missingness)
Multiple R-squared: 0.246, Adjusted R-squared: 0.2315
F-statistic: 16.97 on 3 and 156 DF, p-value: 1.376e-09
Hypothesis 4
H4 Experiences with discrimination and rejection sensitivity predict misinformation acceptance but not accurate information acceptance, mediated by inequality-driven mistrust
Findings
Overall, model is consistent with the hypothesized pathway but does not confirm it.
Conclusions
Analyses
All Posts
Code
model <-' # Direct effects on mis_z (c-prime paths) mis_z ~ c1*discrim_z + c2*reject_z + samp # Direct effects on acc_z (c-prime paths) acc_z ~ c3*discrim_z + c4*reject_z + samp # Effects of predictors on mediator (a paths) idm_z ~ a1*discrim_z + a2*reject_z + samp # Effect of mediator on outcomes (b paths) mis_z ~ b1*idm_z acc_z ~ b2*idm_z # Residual covariance between outcomes mis_z ~~ acc_z # Contrast: does IDM differentially predict mis_z vs acc_z? b_diff := b1 - b2 # Indirect effects on mis_z indirect_discrim_mis := a1*b1 indirect_reject_mis := a2*b1 # Indirect effects on acc_z indirect_discrim_acc := a1*b2 indirect_reject_acc := a2*b2 # Total effects on mis_z total_discrim_mis := c1 + (a1*b1) total_reject_mis := c2 + (a2*b1) # Total effects on acc_z total_discrim_acc := c3 + (a1*b2) total_reject_acc := c4 + (a2*b2)'# Fit the model# fit <- sem(model, data = df2, se = "bootstrap", bootstrap = 5000)# saveRDS(fit, file = "mediation_fit9.rds")fit6 <-readRDS("mediation_fit9.rds")# Summarize resultssummary(fit6, fit.measures =TRUE, ci =TRUE)
lavaan 0.6.17 ended normally after 12 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 15
Number of observations 184
Model Test User Model:
Test statistic 0.000
Degrees of freedom 0
Model Test Baseline Model:
Test statistic 231.974
Degrees of freedom 12
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 1.000
Tucker-Lewis Index (TLI) 1.000
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -665.763
Loglikelihood unrestricted model (H1) NA
Akaike (AIC) 1361.526
Bayesian (BIC) 1409.750
Sample-size adjusted Bayesian (SABIC) 1362.242
Root Mean Square Error of Approximation:
RMSEA 0.000
90 Percent confidence interval - lower 0.000
90 Percent confidence interval - upper 0.000
P-value H_0: RMSEA <= 0.050 NA
P-value H_0: RMSEA >= 0.080 NA
Standardized Root Mean Square Residual:
SRMR 0.000
Parameter Estimates:
Standard errors Bootstrap
Number of requested bootstrap draws 5000
Number of successful bootstrap draws 5000
Regressions:
Estimate Std.Err z-value P(>|z|) ci.lower ci.upper
mis_z ~
discrim_z (c1) 0.057 0.086 0.664 0.507 -0.109 0.229
reject_z (c2) -0.080 0.092 -0.867 0.386 -0.250 0.108
samp -0.677 0.156 -4.326 0.000 -0.983 -0.372
acc_z ~
discrim_z (c3) -0.060 0.088 -0.686 0.492 -0.229 0.117
reject_z (c4) -0.048 0.100 -0.477 0.633 -0.241 0.152
samp -0.682 0.159 -4.291 0.000 -1.002 -0.377
idm_z ~
discrim_z (a1) 0.190 0.071 2.664 0.008 0.054 0.329
reject_z (a2) 0.478 0.067 7.161 0.000 0.343 0.606
samp -0.380 0.129 -2.955 0.003 -0.634 -0.133
mis_z ~
idm_z (b1) 0.161 0.091 1.764 0.078 -0.015 0.339
acc_z ~
idm_z (b2) 0.101 0.093 1.090 0.276 -0.088 0.275
Covariances:
Estimate Std.Err z-value P(>|z|) ci.lower ci.upper
.mis_z ~~
.acc_z 0.526 0.070 7.542 0.000 0.380 0.651
Variances:
Estimate Std.Err z-value P(>|z|) ci.lower ci.upper
.mis_z 0.862 0.077 11.165 0.000 0.688 0.993
.acc_z 0.872 0.094 9.318 0.000 0.669 1.033
.idm_z 0.588 0.065 9.036 0.000 0.452 0.708
Defined Parameters:
Estimate Std.Err z-value P(>|z|) ci.lower ci.upper
b_diff 0.060 0.097 0.614 0.539 -0.125 0.258
indrct_dscrm_m 0.031 0.023 1.345 0.179 -0.003 0.084
indrct_rjct_ms 0.077 0.044 1.736 0.082 -0.007 0.165
indrct_dscrm_c 0.019 0.019 0.993 0.321 -0.018 0.061
indrct_rjct_cc 0.048 0.045 1.073 0.283 -0.043 0.135
total_dscrm_ms 0.088 0.085 1.029 0.304 -0.075 0.259
total_rejct_ms -0.003 0.087 -0.034 0.973 -0.171 0.172
total_dscrm_cc -0.041 0.087 -0.473 0.636 -0.210 0.128
total_rejct_cc 0.001 0.095 0.008 0.994 -0.182 0.190