OLS vs Time Fixed Effects: Why Model Choice Matters in Energy Markets After Fukushima
When we analyze real-world systems like energy markets, it's tempting to start with a simple regression and move on.
But in sectors shaped by policy shocks, macro cycles, and system-wide events (like Fukushima), the model you choose can change your conclusions—and whether your results are credible.
In our work on Societal Readiness Level (SRL)—a quantitative measure of how prepared society is to support large-scale energy technology deployment—we began with OLS as a baseline. Then we upgraded to time fixed effects panel regression to correctly isolate the SRL signal from global time shocks.
This article explains the why in a way that's useful for both engineers and researchers.
1) The Baseline: OLS
OLS estimates a relationship like this:
Where:
- is an outcome (e.g., volatility, trading volume, employment, returns) - is your key variable (e.g., SRL) - captures everything not in the model
OLS is attractive because it's:
- simple - interpretable - fast
But it relies on a strong assumption:
There are no unobserved factors that move with time and affect both X and Y.
In energy systems, that assumption is often false.
2) The Problem: Global Time Shocks Create Omitted Variable Bias
Energy markets are constantly hit by shocks that affect nearly everyone at the same time:
- major policy/regulatory changes - macroeconomic cycles (rates, inflation, demand) - commodity price shifts - geopolitical events - technology and safety standard updates - accidents and disasters (Fukushima is the clearest example)
These shocks can move both:
- SRL (public trust + institutional acceptance) - market outcomes (pricing, volatility, investment behavior)
So OLS can mistakenly attribute a system-wide shift to SRL.
3) Visual: What Goes Wrong With OLS Identification
In this diagram:
- Blue points are pre-shock - Red points are post-shock - The shock shifts outcomes for everyone - OLS “learns” that shift as if it came from SRL
Interpretation (plain English): A global shock shifts the market outcomes up/down for everyone. OLS can't “see” that shock as a separate driver, so it risks overstating SRL's effect (classic omitted variable bias).
4) The Fix: Time Fixed Effects (Panel Regression)
To properly control for global shocks, we use a fixed effects panel model:
Where:
- = firm fixed effects (time-invariant firm differences) - = time fixed effects (anything that hits all firms in period )
What changes in interpretation:
With time fixed effects, SRL's coefficient is identified from differences across firms within the same time period, not from system-wide shifts across time.
5) Visual: Fixed Effects Identification (Within-Time Comparison)
This diagram shows:
- separate time periods (each with its own vertical level) - comparisons happening within each period - global time shocks absorbed by
Interpretation: Fixed effects “soak up” system-wide shifts. The model focuses on the differences across firms within the same quarter/year—which is exactly what we want when events like Fukushima affect the whole system.
6) Why This Matters Specifically for Fukushima + SRL
Fukushima isn't just “another datapoint.” It's a structural break that simultaneously changes:
- public discourse - regulatory behavior - investor risk perception - market pricing
If SRL moves around the same time as the shock, pooled OLS can't separate:
- “SRL caused the market shift” from - “Fukushima caused SRL and market outcomes to move together”
Adding time fixed effects is a clean way to absorb the system-wide shock and avoid overstating SRL.
7) Practical Python Example (linearmodels)
Below is a clean implementation for a two-way fixed effects model using linearmodels.
import pandas as pd
from linearmodels.panel import PanelOLS
# df must be panel: one row per firm per time period
# Required columns: firm_id, date, outcome, SRL, controls...
df = df.copy()
df = df.set_index(["firm_id", "date"]) # MultiIndex
model = PanelOLS.from_formula(
"volatility ~ SRL + trading_volume + EntityEffects + TimeEffects",
data=df
)
res = model.fit(
cov_type="clustered",
cluster_entity=True,
cluster_time=True
print(res.summary)
```Why clustered standard errors? Because panel outcomes are correlated:
- within the same firm over time - within the same time period across firms
Two-way clustering handles both.
8) When OLS Is Fine vs When FE Is Necessary
OLS can be acceptable when:
- there are no major shared time shocks - the environment is stable - you're doing an early exploratory baseline
Time fixed effects are strongly recommended when:
- policy/regulatory shocks are present - macro cycles matter (they do in energy) - the key variable trends over time (often true for trust/sentiment measures) - you want policy-grade, credible inference
Conclusion
In policy-sensitive sectors like energy, model choice isn't a technical footnote—it's the difference between correlation and credible inference.
OLS is a useful baseline. But once the system is hit by shared shocks—like Fukushima—time fixed effects are often the minimum standard for rigorous analysis.
Discussion Question
When you analyze real-world systems (energy, healthcare, finance, infrastructure), how do you decide whether OLS is enough—or whether fixed effects are necessary?