(Keep working in the R script from Exercise 1 — you already have
Dat. If not: the starter code and the "Stuck?" box are in
Exercise 1.)
ols_1 <- lm_robust(poverty ~ state_ownership, data = Dat)
modelsummary(
list("Poverty" = ols_1),
statistic = NULL, # No statistical inference (yet)
gof_map = c("nobs", "r.squared")
)
| Poverty | |
|---|---|
| (Intercept) | 15.914 |
| state_ownership | 2.742 |
| Num.Obs. | 161 |
| R2 | 0.017 |
# comment) interpreting that slope —
descriptively, as in the lecture. Then compare:Across 161 countries, one unit more state ownership of the economy (≈ one standard deviation on the V-Dem scale) is associated with, on average, 2.74 percentage points more of the population in extreme poverty.
(Direction, size, units — and no causal language: "is associated with", not "leads to".)
ols_2 <- lm_robust(poverty ~ civ_liberties, data = Dat)
modelsummary(
list("Poverty" = ols_2),
statistic = NULL,
gof_map = c("nobs", "r.squared")
)
| Poverty | |
|---|---|
| (Intercept) | 32.503 |
| civ_liberties | -26.738 |
| Num.Obs. | 161 |
| R2 | 0.106 |
One sentence: countries with a one-unit stronger civil liberties have, on average, 26.7 percentage points less of their population in extreme poverty.
Which of the two is the better model of the variance of poverty across the world?
Now the missing edge ③: make a scatter plot with civil liberties on the Y-axis and state ownership of the economy on the X-axis.
ggplot(data = Dat, aes(y = civ_liberties, x = state_ownership)) +
geom_text(aes(label = country)) +
labs(y = "Civil liberties",
x = "State ownership of the economy (V-Dem, reversed)") +
theme_minimal()
Before computing: judging from your scatter plot, the correlation on edge ③ is …
Regress civil liberties on state ownership. With a one-unit increase in state ownership, civil liberties change by: (two digits).
ols_3 <- lm_robust(civ_liberties ~ state_ownership, data = Dat)
modelsummary(
list("Civil liberties" = ols_3),
statistic = NULL,
gof_map = c("nobs", "r.squared")
)
| Civil liberties | |
|---|---|
| (Intercept) | 0.571 |
| state_ownership | -0.176 |
| Num.Obs. | 161 |
| R2 | 0.479 |
Make one regression table with all three models — the complete triangle — and discuss with your neighbour, in three steps:
modelsummary(
list("Poverty" = ols_1, "Poverty" = ols_2, "Civil liberties" = ols_3),
statistic = NULL,
gof_map = c("nobs", "r.squared")
)
| Poverty | Poverty | Civil liberties | |
|---|---|---|---|
| (Intercept) | 15.914 | 32.503 | 0.571 |
| state_ownership | 2.742 | -0.176 | |
| civ_liberties | -26.738 | ||
| Num.Obs. | 161 | 161 | 161 |
| R2 | 0.017 | 0.106 | 0.479 |
Talking points: (a) Edge ③ is by far the strongest — state ownership comes with far fewer civil liberties; edge ① is the weakest — no systematic poverty payoff. (b) One case is an anecdote; across all countries the average pattern shows no poverty advantage. (And is China's poverty reduction because of state ownership, or of markets, growth, or something else entirely?) (c) These are descriptive comparisons of different countries that differ in many further ways — confounding. What we would need is the topic of the coming weeks: designs and methods that identify causal effects.
Bonus (for the fast): rerun edge ① without China and Vietnam. Does the conclusion change? What does that tell you about how sensitive our verdict is to single cases?
ols_1b <- lm_robust(poverty ~ state_ownership,
data = Dat %>% filter(!country %in% c("China", "Viet Nam")))
modelsummary(
list("All countries" = ols_1, "Without CHN & VNM" = ols_1b),
statistic = NULL,
gof_map = c("nobs", "r.squared")
)
| All countries | Without CHN & VNM | |
|---|---|---|
| (Intercept) | 15.914 | 16.417 |
| state_ownership | 2.742 | 3.142 |
| Num.Obs. | 161 | 159 |
| R2 | 0.017 | 0.022 |
The slope barely moves — the "no poverty payoff" conclusion does not hinge on the two famous cases. Checking whether results survive removing influential cases is called a robustness check — remember it for your term paper.