Module: Stats lab
Test the environmental Kuznets curve yourself
The environmental Kuznets curve (EKC) proposes that pollution per person rises with income in early development, peaks, then falls as countries get richer. Fit the model to real cross-country data, change the year and the variables, and see whether the curve survives.
The lab
Fossil CO₂ per person against GDP per person, 2022
153 countries with at least 1 million people. Axes are on a log scale (both); the model is fitted to the transformed values.
Method notes
Exercises
With the defaults (2022, log GDP per person vs log CO₂ per person, quadratic), is there an inverted U? Report b₁, b₂ and the turning point.
Show a hint
Check the signs of the coefficients in the equation box and the turning-point figure.
Compare the R² of the linear and quadratic fits. Does the extra term add much? Why can R² never fall when you add a variable?
Check your reasoning
Adding a regressor can only reduce or keep the residual sum of squares, so R² weakly rises. Compare the gain with the coefficient’s standard error: if b₂ is less than about twice its standard error, the evidence for curvature is weak.
How far above or below the fitted line is Canada? List three Canadian characteristics that the model leaves out and that might explain the gap.
Check your reasoning
Canada typically sits well above the line: cold climate (heating), long distances (transport), and a large oil, gas and mining sector. A low-carbon grid pushes the other way. All are omitted variables.
Change the year to 1990, 2005 and 2022. Does the turning point move? What might that mean?
Check your reasoning
If the turning point rises or falls over time, the relationship is not stable, which is evidence against a single structural EKC and consistent with technology and trade shifting the curve.
Swap the y variable to the low-carbon share of electricity (switch off log y). Is it related to income? What does the scatter suggest about endowments like hydro and nuclear?
Check your reasoning
The relationship is weak. Many low- and middle-income countries have high low-carbon shares because of hydro, while some rich countries rely on fossil fuels. Geography and past policy choices matter more than income.
Download the CSV and reproduce the quadratic fit in Python with statsmodels. Add robust standard errors. Do your conclusions change?
Show a hint
import statsmodels.formula.api as smf; smf.ols('np.log(co2) ~ np.log(gdp) + I(np.log(gdp)**2)', data=df).fit(cov_type='HC1').summary()