EnviroSocial Canada

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.

153observations
0.91correlation r (log x, log y)
0.83R² of the quadratic fit
–turning point of the curve (none in range)
+60%Canada vs the fitted value
ln(Fossil CO₂ per person) = -16.35 + 2.716 × ln(GDP per person) − 0.0922 × ln(GDP per person)²
Standard errors: b0 ± 2.477, b1 ± 0.555, b2 ± 0.0306. A coefficient more than about twice its standard error is conventionally ‘significant’ at the 5% level.
Source: Our World in Data — CO2 and Energy datasetsHover or focus the chart for values

Method notes

Exercises

  1. 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.

    Warm-up, Reading output

    Show a hint

    Check the signs of the coefficients in the equation box and the turning-point figure.

  2. 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?

    Core, Model comparison

    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.

  3. 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.

    Core, Residuals

    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.

  4. Change the year to 1990, 2005 and 2022. Does the turning point move? What might that mean?

    Core, Robustness

    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.

  5. 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?

    Stretch, Alternative outcomes

    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.

  6. Download the CSV and reproduce the quadratic fit in Python with statsmodels. Add robust standard errors. Do your conclusions change?

    Stretch, Replication in code

    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()