PROJECT 14 / GLOBAL ANALYTICS · LIVE DASHBOARD

World Happiness,
moving through time.

Explore country scores, ranking shifts, regional patterns, factor relationships, and a 2019 out-of-time regression test. This portfolio version runs entirely in the browser and pulls the same pinned public dataset used by the Streamlit project.

2015–2019 · pinned public World Happiness datasetPreparing live data…
2015
10
—Countries in current view
—Average happiness score
—Top country
—Top-to-bottom spread

01 / GLOBAL VIEW

Happiness across countries

Move the year slider or press Play to watch the map update.

What this shows: broad geographic patterns and country-level movement over time. Similar colors do not establish geographic causation.

02 / RANKING RACE

Top countries

What this shows: how the highest-scoring countries and their relative positions change from year to year.

03 / REGIONS

Regional averages

What this shows: average scores summarize countries within regions and should not be read as uniform experiences within a region.

04 / FACTOR RELATIONSHIPS

How selected factors move with happiness

Choose a factor above; the points update with the selected year.

What this shows: association, not causation. Factor values are not isolated policy effects.

05 / TIME

Regional trend

06 / ASSOCIATION

Factor correlation

What this shows: Pearson correlation summarizes linear association in the current region filter; it does not establish cause.

07 / OUT-OF-TIME MODEL

Can 2015–2018 relationships explain 2019?

The browser reproduces the interpretable linear-regression baseline used in the Streamlit project.

—2019 holdout R²
—2019 holdout RMSE
—2019 holdout MAE

How to read this model: the regression is trained on 2015–2018 and tested on unseen 2019 rows. Coefficients remain descriptive associations, not causal effects.

DATASETWorld Happiness Report · 2015–2019
SIZE782 country-year observations · 5 annual snapshots
SOURCEWorld Happiness annual datasets · pinned public historical mirror ↗

MEASURED EVIDENCE

What can be verified.

The evidence below comes from the pinned data and the implemented analytical workflow. It avoids adding presentation metrics that the project itself does not calculate.

782Country-year observations

158 rows in 2015, 157 in 2016, 155 in 2017, and 156 in both 2018 and 2019.

5Annual snapshots

The interactive timeline covers 2015 through 2019 without a manual upload step.

6Normalized factor dimensions

GDP per capita, social support, life expectancy, freedom, generosity, and corruption are reconciled across changing annual schemas.

2019Out-of-time holdout

The regression trains on 2015–2018 and evaluates on unseen 2019 rows using R², RMSE, and MAE.

VALIDATION

Year-specific source columns are normalized into a common schema, region labels are recovered from known historical records where later files omit them, and ranks are recalculated within each year. The regression is evaluated out of time rather than reported only on its training data. Its runtime metrics measure predictive generalization for 2019; they do not validate causal claims about what makes countries happier.

01

Why this project matters

World Happiness rankings are widely quoted as annual league tables, but a single rank hides movement over time, regional context, the closeness of neighboring scores, and the relationships among the socioeconomic factors reported alongside happiness. This project turns five separate annual datasets into one exploratory view so those changes can be inspected rather than reduced to a headline ranking.

02

What was developed

A reproducible analytical pipeline normalizes changing World Happiness schemas, restores region context, computes within-year ranks, and powers animated country, regional, factor, correlation, and trend views. An interpretable linear regression then learns from 2015–2018 and is tested on 2019. The same analysis exists as a Streamlit application and as this browser-native GitHub Pages dashboard.

03

What it means

The dashboard makes it possible to see which country and regional patterns persist, which rankings shift, and which factors move most closely with reported happiness scores. The holdout model adds a stricter question: whether relationships learned from earlier years transfer to the next year. None of these relationships should be interpreted as isolated causal effects or policy prescriptions.

04 / FROM PROJECT TO PRACTICAL USE

From global rankings to an explorable analytical product.

The workflow demonstrates how multi-year public indicators can be transformed into an accessible decision-support and communication layer. Similar techniques can support international-development research, policy briefing, social-indicator monitoring, education, nonprofit reporting, comparative country analysis, and executive dashboards where the audience needs both a high-level story and the ability to inspect the underlying variation.

05 / LIMITATION

What the project does not solve yet.

The analysis uses country-level aggregates and a five-year historical window, so it cannot explain individual wellbeing or current conditions. Annual schema changes require normalization, survey and measurement uncertainty remain, and correlations or regression coefficients do not establish causality. The linear model is an interpretable baseline rather than a complete theory of national happiness.

06 / NEXT ITERATION

Future advancement

Extend the time series beyond 2019 only after validating later schema changes, add uncertainty and confidence-interval views where available, introduce country-comparison bookmarking, and evaluate richer panel or nonlinear models against the current interpretable baseline. A future version could also make the model diagnostics and residual patterns filterable by region without weakening the causal cautions already built into the project.

METHOD

One dataset.
Two deployments.

The original project remains a Streamlit application. This portfolio deployment is deliberately client-side: the browser requests the pinned CSV directly, normalizes the year-specific schemas, restores historical region labels, computes ranks and summary statistics, and renders Plotly charts without requiring a Python server.

  • No CSV upload step.
  • Source pinned to a specific upstream Git commit.
  • Same 2015–2019 analytical scope as the project app.
  • Regression uses 2015–2018 training rows and a 2019 holdout.

TECHNICAL TOOLKIT

PythonPandasPlotlyStreamlitScikit-learnJavaScriptGitHub Pages