Quantitative Methods for
International Politics
IPOL 3270 • Fall 2026
November 1, 2026
Quick review so far
Estimands
Bootstrapping
Inference = using a sample to say something about the population
In the flavor of statistics we’re doing, there’s a true, fixed population parameter out in the world
But we only have one sample, so we can’t see the sampling distribution!
Assume its shape
Math: CLT says it should be normal, so use SE formulas
Simulate it
Bootstrapping: resample our sample a bunch of times
Every quantitative study has to answer one question
What is your estimand?

Estimand
The thing you want to know
The population parameter

Estimator
The method for guessing it
A formula or procedure you apply to a sample

Estimate
The number you get
The result from one specific sample

| M&Ms | Tunisia | |
|---|---|---|
| Estimand | p_\text{green}: proportion of green M&Ms made in Janaszówek | p: proportion of all Tunisian adults who have thought about emigrating |
| Estimator | Green M&Ms ÷ all M&Ms in a sample from Carrefour | “Yes” answers ÷ all answers in a random sample |
| Estimate | \widehat{p}_\text{green} = 0.17 | \widehat{p} = 0.425 |
| Estimand | Parameter | Statistic | Example |
|---|---|---|---|
| Proportion | p | \widehat{p} | Tunisians who have thought about emigrating |
| Mean | \mu | \bar{x} | Average age of Tunisian adults |
| Median | m | \widehat{m} | Typical number of countries visited |
| Difference in proportions | p_1 - p_2 | \widehat{p}_1 - \widehat{p}_2 | Emigration: internet users vs. non-users |
| Difference in means | \mu_1 - \mu_2 | \bar{x}_1 - \bar{x}_2 | Democracy score: GCC vs. non-GCC countries |
| Regression slope | \beta_1 | b_1 | Relationship between age and thinking about emigrating |
“Do people in the Arab world
want to leave?”
Proportion of all Tunisian adults in 2023–24 who say they’ve thought about emigrating
Is thinking about emigrating more common among young Tunisians?
| Estimand | Estimate | What it tells us |
|---|---|---|
| p_\text{young} - p_\text{older} | 34.8 points | Gap between people 18–29 and everyone older |
| Slope of age, \beta_1 | -1.2 points per year | How the chance changes with each extra year of age |
Same question, different numbers! Decide which one matches your question before you calculate anything
For each one:
Simulation
Our virtual vat of M&Ms, our pretend Tunisia
But you need the whole population. If you had it, you wouldn’t need a sample!
Math
\text{SE} = \sqrt{\frac{\widehat{p} (1 - \widehat{p})}{n}}
But you need a formula, and a friendly formula doesn’t exist for everything
What’s the standard error of a median?
(or any of these estimands, really?)
Bootstrapping: using the sample you have to make lots of new samples
Take a bootstrap sample
Sample with replacement, same size as the original
Calculate a statistic from that bootstrap sample
Mean, median, proportion, difference, slope, whatever
Repeat a bunch of times
1,000 times or more
Look at all the statistics
That’s the bootstrap distribution
Some M&Ms show up twice or more and some don’t show up at all, so \widehat{p} changes from resample to resample
How many countries has a typical GU-Q student been to?
Write how many countries you’ve been to on the board
library(tidyverse)
library(moderndive)
# Numbers from the board
countries <- tibble(
n_countries = c(8, 11, 21, 4, 23, 19, 16,
11, 5, 3, 4, 8, 8, 16, 30,
8, 9, 10, 11, 12, 13)
)
countries |>
summarize(stat = median(n_countries))
ggplot(countries, aes(x = n_countries)) +
geom_histogram(binwidth = 1, color = "white")Median = 11
Does this reflect all of GU-Q? How confident are we that this number is right? We don’t know what the sampling distribution looks like!
How many countries has a typical GU-Q student been to?
Bootstrapping, continued
Confidence intervals
Comparing with intervals
Estimand
The thing you want to know
The population parameter

Estimator
The method for guessing it
A formula or procedure you apply to a sample

Estimate
The number you get
The result from one specific sample

| M&Ms | Tunisia | |
|---|---|---|
| Estimand | p_\text{green}: proportion of green M&Ms made in Janaszówek | p: proportion of all Tunisian adults who have thought about emigrating |
| Estimator | Green M&Ms ÷ all M&Ms in a sample from Carrefour | “Yes” answers ÷ all answers in a random sample |
| Estimate | \widehat{p}_\text{green} = 0.17 | \widehat{p} = 0.425 |
Make a good enough guess about the true population parameter
How do we know if the guess is good?
How confident are we that we captured the actual population parameter?
Every sample statistic (mean, median, correlation, slope, etc.) has some variability
If we take a bunch of samples, that statistic will bounce around
We can measure that variability with math or simulation
21 students; typical student has been to 11 countries
Bootstrapping tells us about sampling variation—
it doesn’t create a random sample!
1,000 medians instead of our handful on the board. Lumpy, because a median of whole numbers can only land on a few values!
A seed lets you make the same random numbers every time you run your code
Any whole number
library(tidyverse)
library(moderndive)
library(infer)
# The statistic from our actual data
obs_median <- un_member_states_2024 |>
specify(response = gdp_per_capita) |>
calculate(stat = "median")
# The bootstrap distribution
set.seed(1234)
boot_median <- un_member_states_2024 |>
specify(response = gdp_per_capita) |>
generate(reps = 1000, type = "bootstrap") |>
calculate(stat = "median")
visualize(boot_median) +
geom_vline(xintercept = obs_median$stat)Mean: $18,177
Median: $6,696
A bootstrap distribution only knows what’s in your sample
Math
Bootstrap
When both work, they should give you about the same answer
Most published research reports math-based standard errors
Intuition!
Point estimate
Fishing with a spear
One number: \widehat{p} = 0.4
Almost certainly misses by a little
Interval estimate
Fishing with a net
A range: 30% to 50%
Much better chance of catching the fish
How wide should the net be? It depends on the sampling variation
Write a range that’s exactly as wide as your window. No phones!
Example: a window 10 years wide → (1630 to 1640)
1 point for each window that caught the answer
Choose your own range!
| Question | 3 points if width ≤ | 2 points if width ≤ | 1 point if wider |
|---|---|---|---|
| 11. In what year was the Universal Declaration of Human Rights adopted? | 2 years | 10 years | ✓ |
| 12. In what year was the Kingdom of Saudi Arabia founded? | 2 years | 10 years | ✓ |
| 13. How big is Qatar, in square kilometers? | 1,000 km² | 3,000 km² | ✓ |
| 14. How long is the Suez Canal, in kilometers? | 10 km | 50 km | ✓ |
| 15. How many countries are parties to the Convention on the Rights of the Child? | 10 countries | 50 countries | ✓ |
Wider nets catch more
but tell you less!
A plausible range of values for the true population parameter
The bootstrap distribution’s standard deviation is the standard error, so plug it in to the same equation from last week
\widehat{p} \pm 1.96 \times \text{SE}_\text{bootstrap}
0.4 \pm 1.96 \times 0.049
30.4% to 49.6%
Only works when the bootstrap distribution is bell-shaped!
Skip the standard error: a 95% confidence interval is the middle 95% of the bootstrap distribution
| Method | Lower | Upper |
|---|---|---|
| Bootstrap: standard error | 30.4% | 49.6% |
| Bootstrap: percentile | 30.0% | 50.0% |
| Last week: formula | 30.4% | 49.6% |
When the distribution is bell-shaped, they’re basically identical!
Standard error
Needs a bell-shaped distribution
Good for proportions, means, differences, and slopes
Helps show where the formulas come from
Percentile
Works for almost any statistic
Good for lumpy or skewed distributions, like our medians
Median age: 39 to 50
Our median countries: 8 to 13
| Method | lower_ci | upper_ci |
|---|---|---|
| Standard error | 0.149 | 0.192 |
| Percentile | 0.149 | 0.193 |
95% confidence intervals for our M&Ms’ \widehat{p}_\text{green}
Tempting, but wrong
“There’s a 95% chance that the true p is between 30% and 50%”
People do this all the time! People with PhDs! You will too!
Legal and correct
“There’s a 95% chance that the interval (30%, 50%) captures the true p”
“We’re 95% confident the interval (30%, 50%) captures the true p”
One random sample of 94 Tunisians gives a 95% confidence interval for the median age of 39 to 50.
A. 95% of Tunisians in this sample have a median age between 39 and 50
B. 95% of all Tunisians are between 39 and 50 years old
C. We’re 95% confident that the median age of all Tunisians is between 39 and 50
D. We’re 95% confident that the median age in this sample is between 39 and 50
C! The interval is about the population’s median, not individual people and not our sample
A pollster surveys a random sample of 800 Jordanians and finds a 90% confidence interval for the proportion who trust their government.
A. If they ran many identical polls, about 90% of the intervals would capture the true proportion
B. About 90% of Jordanians who trust their government would respond to the poll
C. If they repeated the poll 20 times, about 18 of the intervals would capture the true proportion
D. There’s a 90% chance that the true proportion is in this specific interval
A and C! D is tempting, but wrong
Imagine a planner takes a random sample of 200 apartment listings in Doha and calculates a 95% confidence interval for average rent: QAR 15,000 to QAR 27,000.
A. If they took another sample of 200, there’s a 95% chance its mean would be between QAR 15,000 and QAR 27,000
B. About 95% of the apartments in the sample rent for QAR 15,000 to QAR 27,000
C. We’re 95% confident that the interval captured the true average rent
D. There’s a 95% chance that the true average rent is between QAR 15,000 and QAR 27,000
C!

Are Tunisian women more likely to have thought about emigrating than men?
"diff in means"0.1 points (-3.8 to 3.9)
Includes 0: no difference is plausible
26.1 points (22.3 to 29.9)
Way above 0: no difference is not plausible
| term | estimate | std_error | statistic | p_value | lower_ci | upper_ci |
|---|---|---|---|---|---|---|
| intercept | 0.9755 | 0.0275 | 35.5153 | 0 | 0.9217 | 1.0294 |
| age | -0.0124 | 0.0006 | -21.2940 | 0 | -0.0135 | -0.0112 |
lower_ci and upper_ci are a 95% confidence interval from a formulacalculate(stat = "slope"): -0.0133 to -0.0114