We opted to investigate whether race of the victim of police violence was associated with the odds of the police officer having charges laid against them. Charges in this case specifically relate to legal ramifications, and do not include discipline or civil suits against the police officer without charges. Due to small cell counts, race was operationalized to include only white and Black individuals.
Crude analyses show that, in instances where the victim of police violence is Black, the odds of charges being laid is increased by 133% (95% CI: 1.59, 3.42).
glm(charges ~ race_rec, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
OR = exp(estimate),
CI_lower = exp(estimate - 1.96 * std.error),
CI_upper = exp(estimate + 1.96 * std.error)
) %>%
select(term, OR, starts_with("CI")) %>%
mutate(
term = str_replace(term, "race_rec", "Race: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | OR | CI_lower | CI_upper |
---|---|---|---|
(Intercept) | 0.015 | 0.011 | 0.020 |
Race: Black | 2.331 | 1.591 | 3.417 |
OR = Odds Ratio, CI = Confidence Interval
We considered year during which the event occurred as a potential confounder, due to a hypothesized association between time since incident and charges administered. We also considered gender and age of the individual killed by police as potential confounders.
Based on the results in the tables below, and using the 10% change rule in the beta estimate as a requirement for confounding along with a priori hypothesis, we included gender and symptoms of mental illness as confounders.
#Year - Not significant, not further explored
glm(charges ~ year, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | 77.937 | 88.553 | 0.880 | 0.379 |
year | -0.041 | 0.044 | -0.923 | 0.356 |
#Gender - Significant, further explored
glm(charges ~ gender, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
term = str_replace(term, "gender", "Gender: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | -2.434 | 0.222 | -10.949 | 0 |
Gender: Male | -1.543 | 0.247 | -6.248 | 0 |
#Symptoms of MI - Significant, further explored
glm(charges ~ MI, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | -3.631 | 0.101 | -35.838 | 0.000 |
MI | -1.135 | 0.333 | -3.404 | 0.001 |
#Age - Not significant, not further explored
glm(charges ~ age_rec, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
term = str_replace(term, "age_rec", "Age: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | -3.758 | 0.125 | -30.178 | 0.000 |
Age: [40,60) | -0.156 | 0.222 | -0.703 | 0.482 |
Age: [60,100) | -0.164 | 0.431 | -0.382 | 0.703 |
Age: [0,20) | 0.242 | 0.380 | 0.638 | 0.523 |
After adjustment for gender and symptoms of mental illness, among victims of police violence who are Black, the odds of charges being laid against the police officer increase by 142% (95% CI: 1.63, 3.60). While the direction of association is opposite than we were anticipating, it is possible that the odds of charges being laid are higher when the victim is Black because the reasons behind carrying out these violent actions are not well justified. Ideally, we would be able to further investigate this with data regarding the reason for police stops or police intervention, but we were not able to do so.
glm(charges ~ race_rec + gender + MI, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
aOR = exp(estimate),
CI_lower = exp(estimate - 1.96 * std.error),
CI_upper = exp(estimate + 1.96 * std.error)
) %>%
select(term, aOR, starts_with("CI")) %>%
mutate(
term = str_replace(term, "race_rec", "Race: "),
term = str_replace(term, "gender", "Gender: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | aOR | CI_lower | CI_upper |
---|---|---|---|
(Intercept) | 0.088 | 0.054 | 0.142 |
Race: Black | 2.424 | 1.633 | 3.597 |
Gender: Male | 0.160 | 0.097 | 0.265 |
MI | 0.336 | 0.173 | 0.653 |
MI = Symptoms of mental illness; aOR = Adjusted Odds Ratio, CI = Confidence Interval
Given the concerns regarding our adjusted model, we opted to carry out a sensitivity analysis investigating whether this association changed when excluding pending cases. We aimed to explore whether a pending investigation was the cause for what seems like a spuriously inflated OR. However, adjusted analyses show that in instances where the victim of police violence is Black, the odds of charges being laid is increased by 128% (95% CI: 1.52, 3.32), adjusting for gender and symptoms of mental illness. Restricting to solved cases did not change this association.
mpv_solved =
mpv_df_charges %>%
filter(resolved == "1")
glm(charges ~ race_rec + gender + MI, data = mpv_solved, family = binomial()) %>%
broom::tidy() %>%
mutate(
aOR = exp(estimate),
CI_lower = exp(estimate - 1.96 * std.error),
CI_upper = exp(estimate + 1.96 * std.error)
) %>%
select(term, aOR, starts_with("CI")) %>%
mutate(
term = str_replace(term, "race_rec", "Race: "),
term = str_replace(term, "gender", "Gender: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | aOR | CI_lower | CI_upper |
---|---|---|---|
(Intercept) | 0.239 | 0.144 | 0.397 |
Race: Black | 2.284 | 1.516 | 3.442 |
Gender: Male | 0.188 | 0.110 | 0.323 |
MI | 0.326 | 0.166 | 0.638 |
MI = Symptoms of mental illness; aOR = Adjusted Odds Ratio, CI = Confidence Interval
Given that we found symptoms of mental illness to be negatively associated with charges laid against police, we opted to investigate this variable more. We set out to explore whether there was an association between gender and recording a victim as having symptoms of mental illness. Crude analyses show that being male was protective against recorded symptoms of mental illness (OR: 0.60, 95% CI: 0.46, 0.78).
glm(MI ~ gender, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
OR = exp(estimate),
CI_lower = exp(estimate - 1.96 * std.error),
CI_upper = exp(estimate + 1.96 * std.error)
) %>%
select(term, OR, starts_with("CI")) %>%
mutate(
term = str_replace(term, "gender", "Gender: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | OR | CI_lower | CI_upper |
---|---|---|---|
(Intercept) | 0.492 | 0.382 | 0.633 |
Gender: Male | 0.603 | 0.464 | 0.782 |
OR = Odds Ratio, CI = Confidence Interval
We considered age and race as potential confounders of the relationship between gender and symptoms of mental illness. Similar to the model above, we used the 10% change rule in the beta estimate as a requirement for confounding along with a priori hypotheses. We included both age and race in the final adjusted model.
#Age - Significant, further explored
glm(MI ~ age_rec, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
term = str_replace(term, "age_rec", "Age: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | -1.331 | 0.046 | -29.108 | 0.000 |
Age: [40,60) | 0.331 | 0.074 | 4.495 | 0.000 |
Age: [60,100) | 0.808 | 0.126 | 6.398 | 0.000 |
Age: [0,20) | -0.420 | 0.175 | -2.394 | 0.017 |
#Race - Significant, further explored
glm(MI ~ race_rec, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
term = str_replace(term, "race_rec", "Race: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | -0.898 | 0.039 | -23.001 | 0 |
Race: Black | -0.921 | 0.077 | -11.908 | 0 |
After adjustment for age and race, we found no association between gender and recorded symptoms of mental illness (aOR: 0.68, 95% CI: 0.52, 0.89). While we should avoid interpreting covariates other than the exposure of interest due to Table 2 fallacy, they are presented here for completeness.
glm(MI ~ gender + race_rec + age_rec, data = mpv_df_charges, family = binomial()) %>%
broom::tidy() %>%
mutate(
OR = exp(estimate),
CI_lower = exp(estimate - 1.96 * std.error),
CI_upper = exp(estimate + 1.96 * std.error)
) %>%
select(term, OR, starts_with("CI")) %>%
mutate(
term = str_replace(term, "gender", "Gender: "),
term = str_replace(term, "race_rec", "Race: "),
term = str_replace(term, "age_rec", "Age: ")) %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = c("striped", "hover"))
term | OR | CI_lower | CI_upper |
---|---|---|---|
(Intercept) | 0.519 | 0.397 | 0.678 |
Gender: Male | 0.682 | 0.522 | 0.890 |
Race: Black | 0.435 | 0.372 | 0.509 |
Age: [40,60) | 1.191 | 1.027 | 1.381 |
Age: [60,100) | 1.886 | 1.466 | 2.426 |
Age: [0,20) | 0.760 | 0.536 | 1.078 |
MI = Symptoms of mental illness; aOR = Adjusted Odds Ratio, CI = Confidence Interval