To compute the likelihood of a country being targed by a democracy using the same sample and explanatory variables as the main hypotheses and add the fitted values to the dataset.
Data: Compute Logit for Targeted_by_democracy
Show the code
# compute logit for sidea_targeted_by_democracytargeted_by_democracy <-glm(sidea_targeted_by_democracy ~ sidea_revisionist_domestic + sidea_national_military_capabilities + sideb_national_military_capabilities + sidea_military_support + sidea_winning_coalition_size + cold_war + t + t2 + t3, family =binomial(link ="logit"), na.action = na.exclude, data = autocracies) targeted_by_democracy2 <-glm(sidea_targeted_by_democracy ~ sidea_revisionist_domestic + sidea_dynamic_leader + sidea_national_military_capabilities + sideb_national_military_capabilities + sidea_military_support + sidea_winning_coalition_size + cold_war + t + t2 + t3, family =binomial(link ="logit"), na.action = na.exclude, data = autocracies) targeted_by_democracy3 <-glm(sidea_targeted_by_democracy ~ sidea_revisionist_domestic * sidea_dynamic_leader + sidea_national_military_capabilities + sideb_national_military_capabilities + sidea_military_support + sidea_winning_coalition_size + cold_war + t + t2 + t3, family =binomial(link ="logit"), na.action = na.exclude, data = autocracies) t1b_multi <-glm(sidea_targeted_by_democracy ~ sidea_aristocracy_support + sidea_state_bureaucracy + sidea_ethnic_racial_support + sidea_urban_worker_support + sidea_rural_middle_class_support + sidea_agrarian_elite_support + sidea_business_elite_support+ sidea_military_support + sidea_religious_support + sidea_party_elite_support + sidea_local_elite_support + sidea_rural_worker_support + sidea_foreign_government_support +sidea_national_military_capabilities + sideb_national_military_capabilities + sidea_winning_coalition_size + cold_war + t + t2 + t3 + sidea_muslim, family =binomial(link ="logit"), na.action = na.exclude, data = autocracies)stargazer(targeted_by_democracy, targeted_by_democracy2, targeted_by_democracy3, type ="text")
## plot preds for targeted_by_democracyplot_model(targeted_by_democracy, type ="pred", terms ="sidea_revisionist_domestic", title ="GLM model Predicted Probabilities")
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
## plot predicted probabitilies for targeted_by_democracy2 using sjplot plot_modelplot_model(targeted_by_democracy2, type ="pred", terms =c("sidea_dynamic_leader","sidea_revisionist_domestic"), title ="GLM Model \n Predicted Probabilities")
Data were 'prettified'. Consider using `terms="sidea_dynamic_leader
[all]"` to get smooth plots.
Show the code
plot_model(targeted_by_democracy2, type ="pred", terms =c("sidea_revisionist_domestic", "sidea_dynamic_leader"), title ="GLM Model \n Predicted Probabilities")
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
## plot targeted_by_democracy3 interactionplot_model(targeted_by_democracy3, type ="int", terms =c("sidea_dynamic_leader","sidea_revisionist_domestic"), title ="GLM model with interaction effects \n Predicted Probabilities")
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Data: Add fitted data as probability with variable name prob_targeted_by_dem
Show the code
#Calculate the fitted values (logits)autocracies$logit_targeted_by_dem <-predict(targeted_by_democracy, type ="link") # 2. Convert logits to probabilities using the logistic function (plogis)autocracies$probability_targeted_by_dem <-plogis(autocracies$logit_targeted_by_dem) write.csv(autocracies,here("data","consolidated_autocracies_2.csv"))
Compare coefficients with standard error adjustment
Show the code
# Extract coefficients and standard errorscoef1 <-coef(targets_democracy)["sidea_revisionist_domestic"]se1 <-summary(targets_democracy)$coefficients["sidea_revisionist_domestic", "Std. Error"]coef2 <-coef(targeted_by_democracy)["sidea_revisionist_domestic"]se2 <-summary(targeted_by_democracy)$coefficients["sidea_revisionist_domestic", "Std. Error"]# Calculate the difference in coefficientsdiff_coef <- coef1 - coef2diff_coef
sidea_revisionist_domestic
0.3360576
Show the code
# Calculate the standard error of the differencese_diff <-sqrt(se1^2+ se2^2)se_diff
[1] 0.1217173
Show the code
z <- diff_coef / se_diffz
sidea_revisionist_domestic
2.760967
Plot predicted probabilities of targets and targeted_by_democracy models
Show the code
# Use plot_model to plot predicted probabilities of each # Plot for Model 1plot1 <-plot_model(targets_democracy, type ="pred", terms ="sidea_revisionist_domestic", title ="Targets Democracy Predicted Probabilities", ci.lvl =0.99) +theme_minimal()
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
# Plot for Model 2plot2 <-plot_model(targeted_by_democracy, type ="pred", terms ="sidea_revisionist_domestic", title ="Targeted by Democracy Predicted Probabilities", ci.lvl =0.99) +theme_minimal()
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
# Extract data from plot1data1 <- plot1$data %>%mutate(model ="Targets Democracy") # Add a model identifier# Extract data from plot2data2 <- plot2$data %>%mutate(model ="Targeted by Democracy") # Add a model identifier# Combine datacombined_data <-rbind(data1, data2)ggplot(combined_data, aes(x = x, y = predicted, color = model, fill = model)) +geom_line() +geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha =0.3, color =NA) +labs(title ="Predicted Probabilities with 99% Confidence Intervals",x ="Domestic Revisionist Ideology (x)",y ="Predicted Probability" ) +theme_minimal() +scale_color_discrete(name ="Model") +scale_fill_discrete(name ="Model")
Warning: Removed 4 rows containing missing values or values outside the scale range
(`geom_line()`).
Warning in max(ids, na.rm = TRUE): no non-missing arguments to max; returning
-Inf
Show the code
# Use plot_model to plot predicted probabilities of each # Plot for Model 3plot3 <-plot_model(targets_democracy2, type ="pred", terms ="sidea_revisionist_domestic", title ="Targets Democracy Predicted Probabilities", ci.lvl =0.99) +theme_minimal()
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
# Plot for Model 4plot4 <-plot_model(targeted_by_democracy2, type ="pred", terms ="sidea_revisionist_domestic", title ="Targeted by Democracy Predicted Probabilities", ci.lvl =0.99) +theme_minimal()
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
# Extract data from plot1data3 <- plot3$data %>%mutate(model ="Targets Democracy") # Add a model identifier# Extract data from plot2data4 <- plot4$data %>%mutate(model ="Targeted by Democracy") # Add a model identifier# Combine datacombined_data2 <-rbind(data3, data4)ggplot(combined_data2, aes(x = x, y = predicted, color = model, fill = model)) +geom_line() +geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha =0.3, color =NA) +labs(title ="Predicted Probabilities with 99% Confidence Intervals",x ="Domestic Revisionist Ideology (x)",y ="Predicted Probability" ) +theme_minimal() +scale_color_discrete(name ="Model") +scale_fill_discrete(name ="Model")
Warning: Removed 4 rows containing missing values or values outside the scale range
(`geom_line()`).
no non-missing arguments to max; returning -Inf
Show the code
# Use plot_model to plot predicted probabilities of each # Plot for Model 5plot5 <-plot_model(targets_democracy3, type ="pred", terms ="sidea_revisionist_domestic", title ="Targets Democracy Predicted Probabilities", ci.lvl =0.99) +theme_minimal()
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
# Plot for Model 6plot6 <-plot_model(targeted_by_democracy3, type ="pred", terms ="sidea_revisionist_domestic", title ="Targeted by Democracy Predicted Probabilities", ci.lvl =0.99) +theme_minimal()
Data were 'prettified'. Consider using
`terms="sidea_revisionist_domestic [all]"` to get smooth plots.
Show the code
# Extract data from plot5data5 <- plot5$data %>%mutate(model ="Targets Democracy") # Add a model identifier# Extract data from plot6data6 <- plot6$data %>%mutate(model ="Targeted by Democracy") # Add a model identifier# Combine datacombined_data3 <-rbind(data5, data6)ggplot(combined_data3, aes(x = x, y = predicted, color = model, fill = model)) +geom_line() +geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha =0.3, color =NA) +labs(title ="Predicted Probabilities with 99% Confidence Intervals",x ="Domestic Revisionist Ideology (x)",y ="Predicted Probability" ) +theme_minimal() +scale_color_discrete(name ="Model") +scale_fill_discrete(name ="Model")
Warning: Removed 4 rows containing missing values or values outside the scale range
(`geom_line()`).
no non-missing arguments to max; returning -Inf