Logistic Regression: Interpreting Results

August 24, 2026

Interpreting Logistic Regression Results

The Model Equation


\[\log\left(\frac{p}{1-p}\right) = -1.16-0.33\times \text{logGDPpc}\]

What Are Log-Odds?


  • Logistic regression coefficients are on the log-odds scale
  • The direction of the effect is easy to read (positive = more likely, negative = less likely)
  • But the magnitude is hard to interpret directly
  • We need to transform the coefficients into something more intuitive

Odds Ratios


  • For a more intuitive interpretation, we can exponentiate the coefficients
  • The exponentiated coefficient is the odds ratio
  • For each one-unit increase in the predictor, the odds of the outcome are multiplied by the odds ratio

Interpreting the Odds Ratio


\[\log\left(\frac{p}{1-p}\right) = -1.16-0.33\times \text{logGDPpc}\]


For each one unit increase in log GDP per capita, the odds of conflict onset are multiplied by approximately 0.718, assuming other variables are held constant.


This means that an increase in GDP per capita is associated with a decrease in the odds of conflict onset. The odds decrease by about 28.2% for each unit increase in log GDP per capita.

Calculating Odds Ratios in R


library(broom)

tidy(conflict_model, exponentiate = TRUE) |>
  select(term, estimate, p.value)
# A tibble: 2 × 3
  term           estimate  p.value
  <chr>             <dbl>    <dbl>
1 (Intercept)       0.365 1.47e- 2
2 wbgdppc2011est    0.700 2.31e-12

Your Turn!


  • Run a bivariate logistic regression with a different predictor (e.g., v2x_polyarchy, ethfrac)
  • Use tidy(..., exponentiate = TRUE) to get the odds ratios
  • Interpret the results:
    • Is the effect positive or negative?
    • How much do the odds of conflict onset change per unit increase?

Predicted Probabilities

Calculating Predicted Probabilities


Probability of conflict onset for a country with log GDP per capita of 9 (about $8,000):

\[\log\left(\frac{p}{1-p}\right) = -1.16-0.33\times 9 = -4.13\]

\[\frac{p}{1-p} = \exp(-4.13) = 0.016\]

\[p = \frac{0.016}{1 + 0.016} = 0.0158\]

Using marginaleffects

library(marginaleffects)

# select some countries for a given year
selected_countries <- conflict_df |>
  filter(
    gw_name %in% c("United States of America", "Venezuela", "Rwanda"),
    year == 1999)

# calculate predicted probabilities
marg_effects <- predictions(conflict_model, newdata = selected_countries)

tidy(marg_effects) |>
  select(estimate, p.value, conf.low, conf.high, gw_name)

Using marginaleffects


# A tibble: 5 × 5
  wbgdppc2011est estimate conf.low conf.high GDP_approx
           <dbl>    <dbl>    <dbl>     <dbl> <chr>     
1              6   0.0411  0.0322     0.0525 ~$403     
2              7   0.0291  0.0242     0.0351 ~$1097    
3              8   0.0206  0.0175     0.0242 ~$2981    
4              9   0.0145  0.0119     0.0176 ~$8103    
5             10   0.0102  0.00784    0.0132 ~$22026   

Your Turn!


  • Select your favorite three countries and a recent year
  • Calculate the predicted probability of conflict onset using the marginaleffects package
  • If you have time, try to verify one calculation by hand