Case 03Economics · Alternative Data

Satellite Night-Light GDP Analysis

Matched night-time satellite brightness with World Bank indicators at the country-year level and tested how far night light holds up as a supporting indicator for GDP.

Period · Spring 2025

Role · Individual project

Source · GitHub repository

Quick read

The through-line of the work.

Open

The starting question

It started with a question: could traces of economic activity be seen even where official statistics are scarce, the way night-time satellite images of North Korea suggest?

Build

What I checked

I matched VIIRS night-light data with World Bank GDP, population, urbanisation, and electricity-access indicators at the country-year level for 2019–2023.

Turn

What changed my view

The simple regression's R-squared of 0.819 reproduced, but the urban-population and electricity-access moderators added little explanatory power. Brightness alone did not turn out to be enough to read an economy.

Close

Where I draw the line

The conclusion is not a new forecasting model but the data-integrity checks and the limits of interpretation needed before night light can be used as a supporting economic indicator.

01 · Start

The question I began with

When official statistics are scarce or late, how far can night-light intensity serve as a supporting indicator of economic activity?

02 · Material

The data and evidence

VIIRS night-light data and World Bank GDP, population, urban-population, and electricity-access indicators
Study period 2019–2023 · 164 countries · 820 country-year observations after merging
Simple-regression R-squared = 0.819 on the 791 observations with usable GDP
Found that the brightness column in the repository's spreadsheet was misaligned, and recorded the SPSS analysis file and the reproduce.py baseline separately from it
PythonSPSSExcelRegressionData QA

03 · Work

How I worked through it

  1. 01

    Frame the question

    Started from the need for an alternative signal where official GDP is late or limited, and took night-light intensity as the candidate indicator.

  2. 02

    Integrate country-year data

    Matched VIIRS brightness and World Bank indicators by country name and year to build a 2019–2023 panel-shaped analysis table.

  3. 03

    Test the relationship and its moderators

    Log-transformed skewed variables and added urban-population and electricity-access interaction terms to see whether the relationship changes with conditions.

  4. 04

    Fix data integrity

    Found that the brightness column in the xlsx that came with the report was misaligned, dropped the scatterplot claim, and kept only the values that the SPSS analysis file and reproduce.py reproduce.

04 · Takeaway

What the numbers suggested

In the simple regression, night-light intensity explains 81.9% of GDP variation (R-squared = 0.819, N = 791), reproducible via reproduce.py in the repository.

Adding the urban-population and electricity-access interaction terms raised explanatory power only slightly. What mattered was the baseline relationship and checking data quality, not a more complex model.

The misaligned brightness column in the accompanying xlsx could be read as a higher R-squared; the repository carries an explicit warning not to use that value.

The result is an explanatory relationship, not evidence of prediction accuracy, causation, or the ability to replace official GDP.

Not claimed

  • Does not claim predictive accuracy. R-squared is in-sample explanatory power.
  • Does not claim causation. Brightness does not create GDP.
  • Does not propose a new method. It checks how far a known relationship holds.
Important boundary: R-squared = 0.819 describes explanatory fit in the simple model; it is not 81.9% prediction accuracy.

05 · Use

Where this helps

Rather than replacing official statistics, night-light data can serve as a supporting signal for first-pass screening of countries and regions, or for monitoring change where statistics are missing.

06 · Boundary

What still needs checking

  • •973, 820, and 791 belong to different data-processing stages, so they are never used interchangeably as one sample size.
  • •The night-light–GDP relationship is an established research topic. The point of this project is not a new academic contribution but framing the question myself and verifying data integrity.
  • •Because the brightness definition could differ between the report and the files, the scatterplot claim was dropped.
  • •Claims about prediction or causation would need fixed effects and out-of-sample validation.

07 · Figures

Tables and figures

Alternative-data pipeline

Verified source
VIIRS night lights
World Bank indicators
Country-year data
Regression analysis

The diagram shows how satellite and economic indicators enter a country-year analysis. It explains provenance and process; it does not establish that night lights cause GDP.

Source · GDP project report, PPTX, XLSX, and SPSS output

Simple-model fit

Verified source

Reproduced R-squared

0.819

N = 791 · slope 0.834 · p < 0.001

Recomputed by the repository's reproduce.py from the SPSS analysis file. It is explanatory fit within the sample, not 81.9% prediction accuracy and not causal evidence.

Source · reproduce.py · SPSS analysis file (.sav) · ln(GDP) ~ ln(brightness)

Distinct dataset stages

Verified source

973

Raw rows

820

Merged observations

791

GDP observations

973, 820, and 791 refer to raw rows, merged observations, and GDP-usable observations. They are different processing stages and must not be treated as interchangeable sample sizes.

Source · reproduce.py row counts · project spreadsheet and SPSS file