Data

For the scope of the discussion, I have removed the observations that NA values. There are about eleven rows with NA values.

#Variables and Description

miltcoup - number of successful military coups from independence to 1989

oligarchy - number years country ruled by military oligarchy from independence to 1989

pollib - Political liberalization - 0 = no civil rights for political expression, 1 = limited civil rights for expression but right to form political parties, 2 = full civil rights

parties - Number of legal political parties in 1993

pctvote - Percent voting in last election

popn - Population in millions in 1989

size - Area in 1000 square km

numelec - Total number of legislative and presidential elections

numregim - Number of regime types
library(dplyr)
library(knitr)
library(kableExtra)
library(faraway)
library(fBasics)
library(ggplot2)

Africa.df <- data.frame(africa)
Africa.C.df <- Africa.df[complete.cases(Africa.df), ]

Africa.C.df <- within(Africa.C.df, {pollib <- factor(pollib, levels = 0:2, labels = c("No Civil Rights","Limited Civil Rights","Full Civil Rights"))})

Africa.S.df <- Africa.C.df %>% select(miltcoup, oligarchy, parties, pctvote, popn, size, numelec, numregim)

tmp <-basicStats(Africa.S.df)
tmp <- data.frame(t(tmp))
tmp <- tmp[ , -which(names(tmp) %in% c("SE.Mean","LCL.Mean","UCL.Mean"))]
colnames(tmp)[which(names(tmp) == "X1..Quartile")] <- "1st. Quartile"
colnames(tmp)[which(names(tmp) == "X3..Quartile")] <- "3st. Quartile"
colnames(tmp)[which(names(tmp) == "nobs")] <- "Observations"

tmp %>%
kable(format="html", digits= 2, caption = "Sub-Saharan Africa - Miltary Coups And Politics Summary") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "respons
ive"), full_width = F, position = "left")
Sub-Saharan Africa - Miltary Coups And Politics Summary
Observations NAs Minimum Maximum 1st. Quartile 3st. Quartile Mean Median Sum Variance Stdev Skewness Kurtosis
miltcoup 36 0 0.00 6.0 0.00 2.00 1.58 1.00 57.00 3.11 1.76 1.30 0.58
oligarchy 36 0 0.00 18.0 0.00 10.00 5.22 2.00 188.00 36.18 6.01 0.68 -1.05
parties 36 0 2.00 62.0 10.00 19.50 17.08 14.00 615.00 138.99 11.79 1.68 3.71
pctvote 36 0 0.00 77.4 18.55 43.32 32.11 29.62 1156.01 321.53 17.93 0.60 -0.11
popn 36 0 0.07 113.8 1.70 11.38 11.57 5.55 416.62 420.29 20.50 3.62 14.58
size 36 0 0.50 2506.0 34.50 770.75 484.60 271.00 17445.50 309546.53 556.37 1.51 2.54
numelec 36 0 0.00 14.0 4.00 10.00 6.72 6.00 242.00 13.41 3.66 0.07 -0.97
numregim 36 0 1.00 4.0 2.00 3.25 2.75 3.00 99.00 0.94 0.97 -0.24 -1.01
table(Africa.C.df$pollib)
## 
##      No Civil Rights Limited Civil Rights    Full Civil Rights 
##                    2                    9                   25

Distribution of military coups(miltcoup) and Political liberalization(pollib).

ggplot(Africa.C.df, aes(miltcoup, fill = pollib)) +
  geom_histogram(binwidth=.5, position="dodge") + 
  labs(title = sprintf("Military Coups Vs. Political Liberalization")) + xlab("Number Of Successful Military Coups") +
  ylab("Count") + guides(fill=guide_legend(title="Political Liberalization"))

The plot shows the count of successful military coups is lower when countries have Full Civil Rights. In other words, the number of successful military coups increase when a country has No Civil Rights. It also tells, variable pollib could be a useful predictor in the model.

Method

To solve the problem, I will be using Poisson regression method. Response variable of this model is count. Poisson regression is also known as log-linear model or count regression. The main assumption of Poisson regression is mean and variance is same.

Poisson regression, \[log(\mu) = \alpha + \beta X\]

\[\mu = e^{(\alpha + \beta X)}\] \[\mu = e^{\alpha}\times e^{\beta X}\]

Where \(\mu\) is expected value\((E(Y))\) or counts.

Coefficients have a multiplicative effect on response variable \(Y\).

Model

As model contains all the variables, it is known as a full model.

Africa.glm <- glm(miltcoup~., family = poisson, data = Africa.C.df)
summary(Africa.glm)
## 
## Call:
## glm(formula = miltcoup ~ ., family = poisson, data = Africa.C.df)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.5075  -0.9533  -0.3100   0.4859   1.6459  
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)   
## (Intercept)                -0.2334274  0.9976112  -0.234  0.81500   
## oligarchy                   0.0725658  0.0353457   2.053  0.04007 * 
## pollibLimited Civil Rights -1.1032439  0.6558114  -1.682  0.09252 . 
## pollibFull Civil Rights    -1.6903057  0.6766503  -2.498  0.01249 * 
## parties                     0.0312212  0.0111663   2.796  0.00517 **
## pctvote                     0.0154413  0.0101027   1.528  0.12641   
## popn                        0.0109586  0.0071490   1.533  0.12531   
## size                       -0.0002651  0.0002690  -0.985  0.32444   
## numelec                    -0.0296185  0.0696248  -0.425  0.67054   
## numregim                    0.2109432  0.2339330   0.902  0.36720   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 65.945  on 35  degrees of freedom
## Residual deviance: 28.249  on 26  degrees of freedom
## AIC: 113.06
## 
## Number of Fisher Scoring iterations: 5

Interpretation

Full model also suggests variables pctvote, popn, size, numelec and numregim are not contributing to the model. In other words, variables are not useful in predicting an increase or decrease counts of miltcoup when other variables(oligarchy, pollib and parties) are not taken into account.

Final Model

Generating model without variables pctvote, popn, size, numelec and numregim.

Africa_2.glm <- glm(miltcoup~oligarchy + pollib + parties, family = poisson, data = Africa.C.df)
summary(Africa_2.glm)
## 
## Call:
## glm(formula = miltcoup ~ oligarchy + pollib + parties, family = poisson, 
##     data = Africa.C.df)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.3609  -1.0407  -0.3153   0.6145   1.7536  
## 
## Coefficients:
##                             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                 0.207981   0.445679   0.467   0.6407    
## oligarchy                   0.091466   0.022563   4.054 5.04e-05 ***
## pollibLimited Civil Rights -0.495414   0.475645  -1.042   0.2976    
## pollibFull Civil Rights    -1.112086   0.459492  -2.420   0.0155 *  
## parties                     0.022358   0.009098   2.458   0.0140 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 65.945  on 35  degrees of freedom
## Residual deviance: 32.822  on 31  degrees of freedom
## AIC: 107.63
## 
## Number of Fisher Scoring iterations: 5

References