Satellite NO₂ as an Economic Indicator for Myanmar#
NO₂ Trend (OMI, 2012–2025)#
The OMI instrument provides a 13-year monthly record of tropospheric NO₂ over Myanmar. There’s a noticeable decline in NO₂ levels starting in early 2021, following the coup.
The figure below shows the OMI NO₂ time series decomposed into trend, seasonal, and residual components using STL decomposition. The trend component confirms a structural decline in NO₂ beginning around the coup. Seasonal pattern is roughly constant across the 13-year period, consistent with metereological drivers of NO₂.
Seasonal Pattern#
NO₂ in Myanmar exhibits strong seasonality, where concentrations peak in the dry season (Oct–Mar) when precipitation-driven washout is minimal, while the monsoon (Jun–Sep) suppresses NO₂ levels through wet deposition.
GDP vs NO₂ Trends by Sector#
The following figures show the standardized (z-scored) quarterly OMI NO₂ alongside GDP across all sectors. NO₂ and GDP move broadly together for Manufacturing and Construction, which are the two most combustion-intensive sectors. Mining and Trade show weaker visual co-movement but similar seasonal patterns.
Show code cell outputs
The following figures show quarter-over-quarter and year-over-year percentage changes in OMI NO₂ and GDP. The co-movement is less visually apparent in the growth rates, but there are still some periods of alignment.
NO₂–GDP Regressions#
We estimate sector-by-sector log-log OLS regressions, first without and then with quarter dummies.
Model 1: gdp_log ~ log_no2 (all sectors including Energy)
Communication: N=53
Construction: N=53
Electricity: N=53
Energy: N=53
Financial Insitutions: N=53
Manufacturing: N=53
Mining: N=53
Rental and other services: N=53
Social and Administrative: N=53
Trade: N=53
Transportation: N=53
| Dependent variable: gdp_log | |||||||||||
| Communication | Construction | Electricity | Energy | Financial Insitutions | Manufacturing | Mining | Rental and other services | Social and Administrative | Trade | Transportation | |
| (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | (11) | |
| Intercept | 13.458*** | 17.868*** | 11.557*** | 6.930 | 13.850*** | 21.838*** | 13.474*** | 13.538*** | 13.277*** | 15.539*** | 14.527*** |
| (1.986) | (2.144) | (1.200) | (7.538) | (1.718) | (2.167) | (2.536) | (1.568) | (1.586) | (2.340) | (1.270) | |
| log_no2 | 0.018 | 0.358* | -0.074 | -0.493 | 0.239 | 0.593*** | 0.096 | 0.026 | -0.011 | 0.055 | -0.007 |
| (0.176) | (0.190) | (0.106) | (0.666) | (0.152) | (0.192) | (0.224) | (0.139) | (0.140) | (0.207) | (0.112) | |
| Observations | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 |
| R2 | 0.000 | 0.065 | 0.009 | 0.011 | 0.046 | 0.158 | 0.004 | 0.001 | 0.000 | 0.001 | 0.000 |
| Adjusted R2 | -0.019 | 0.047 | -0.010 | -0.009 | 0.028 | 0.142 | -0.016 | -0.019 | -0.019 | -0.018 | -0.020 |
| Residual Std. Error | 0.448 (df=51) | 0.483 (df=51) | 0.270 (df=51) | 1.698 (df=51) | 0.387 (df=51) | 0.488 (df=51) | 0.571 (df=51) | 0.353 (df=51) | 0.357 (df=51) | 0.527 (df=51) | 0.286 (df=51) |
| F Statistic | 0.010 (df=1; 51) | 3.561* (df=1; 51) | 0.489 (df=1; 51) | 0.548 (df=1; 51) | 2.477 (df=1; 51) | 9.578*** (df=1; 51) | 0.183 (df=1; 51) | 0.035 (df=1; 51) | 0.006 (df=1; 51) | 0.071 (df=1; 51) | 0.004 (df=1; 51) |
| Note: | *p<0.1; **p<0.05; ***p<0.01 | ||||||||||
Model 2: 3-Quarter Lag#
Model 2: gdp_log ~ log_no2_lag3 (excluding Energy)
Communication: N=50
Construction: N=50
Electricity: N=50
Financial Insitutions: N=50
Manufacturing: N=50
Mining: N=50
Rental and other services: N=50
Social and Administrative: N=50
Trade: N=50
Transportation: N=50
| Dependent variable: gdp_log | ||||||||||
| Communication | Construction | Electricity | Financial Insitutions | Manufacturing | Mining | Rental and other services | Social and Administrative | Trade | Transportation | |
| (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | |
| Intercept | 11.857*** | 24.371*** | 11.205*** | 12.483*** | 27.998*** | 11.748*** | 14.573*** | 14.371*** | 30.221*** | 21.465*** |
| (1.635) | (1.632) | (1.145) | (1.601) | (1.548) | (2.478) | (1.468) | (1.460) | (1.010) | (0.851) | |
| log_no2_lag3 | -0.129 | 0.930*** | -0.108 | 0.114 | 1.135*** | -0.061 | 0.114 | 0.082 | 1.351*** | 0.605*** |
| (0.145) | (0.144) | (0.101) | (0.142) | (0.137) | (0.219) | (0.130) | (0.129) | (0.089) | (0.075) | |
| Observations | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 |
| R2 | 0.016 | 0.464 | 0.023 | 0.013 | 0.589 | 0.002 | 0.016 | 0.008 | 0.827 | 0.574 |
| Adjusted R2 | -0.004 | 0.453 | 0.003 | -0.007 | 0.581 | -0.019 | -0.005 | -0.012 | 0.823 | 0.565 |
| Residual Std. Error | 0.356 (df=48) | 0.356 (df=48) | 0.250 (df=48) | 0.349 (df=48) | 0.337 (df=48) | 0.540 (df=48) | 0.320 (df=48) | 0.318 (df=48) | 0.220 (df=48) | 0.185 (df=48) |
| F Statistic | 0.796 (df=1; 48) | 41.540*** (df=1; 48) | 1.133 (df=1; 48) | 0.650 (df=1; 48) | 68.851*** (df=1; 48) | 0.079 (df=1; 48) | 0.771 (df=1; 48) | 0.405 (df=1; 48) | 228.883*** (df=1; 48) | 64.656*** (df=1; 48) |
| Note: | *p<0.1; **p<0.05; ***p<0.01 | |||||||||
Model 3: NO₂ + Overall NTL#
Model 3: gdp_log ~ log_no2 + ntl_sum_log (excluding Energy, no seasonal controls)
Communication: N=53
Construction: N=53
Electricity: N=53
Financial Insitutions: N=53
Manufacturing: N=53
Mining: N=53
Rental and other services: N=53
Social and Administrative: N=53
Trade: N=53
Transportation: N=53
| Dependent variable: gdp_log | ||||||||||
| Communication | Construction | Electricity | Financial Insitutions | Manufacturing | Mining | Rental and other services | Social and Administrative | Trade | Transportation | |
| (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | |
| Intercept | 8.158** | 21.960*** | 9.787*** | 10.729*** | 28.740*** | -1.963 | 6.409** | 6.095** | 26.820*** | 18.207*** |
| (3.371) | (3.703) | (2.088) | (2.973) | (3.619) | (3.573) | (2.466) | (2.498) | (3.623) | (2.140) | |
| log_no2 | -0.000 | 0.372* | -0.080 | 0.228 | 0.617*** | 0.043 | 0.001 | -0.036 | 0.094 | 0.005 |
| (0.171) | (0.188) | (0.106) | (0.151) | (0.184) | (0.182) | (0.125) | (0.127) | (0.184) | (0.109) | |
| ntl_sum_log | 0.379* | -0.292 | 0.126 | 0.223 | -0.493** | 1.103*** | 0.509*** | 0.513*** | -0.806*** | -0.263** |
| (0.197) | (0.217) | (0.122) | (0.174) | (0.212) | (0.209) | (0.144) | (0.146) | (0.212) | (0.125) | |
| Observations | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 |
| R2 | 0.069 | 0.098 | 0.030 | 0.077 | 0.241 | 0.360 | 0.200 | 0.198 | 0.225 | 0.081 |
| Adjusted R2 | 0.032 | 0.062 | -0.009 | 0.040 | 0.210 | 0.334 | 0.168 | 0.166 | 0.195 | 0.044 |
| Residual Std. Error | 0.436 (df=50) | 0.479 (df=50) | 0.270 (df=50) | 0.385 (df=50) | 0.468 (df=50) | 0.462 (df=50) | 0.319 (df=50) | 0.323 (df=50) | 0.469 (df=50) | 0.277 (df=50) |
| F Statistic | 1.851 (df=2; 50) | 2.720* (df=2; 50) | 0.781 (df=2; 50) | 2.076 (df=2; 50) | 7.918*** (df=2; 50) | 14.068*** (df=2; 50) | 6.256*** (df=2; 50) | 6.172*** (df=2; 50) | 7.278*** (df=2; 50) | 2.209 (df=2; 50) |
| Note: | *p<0.1; **p<0.05; ***p<0.01 | |||||||||
Model 4: Seasonal Controls#
Model 4: gdp_log ~ log_no2 + quarter (excluding Energy)
Communication: N=53
Construction: N=53
Electricity: N=53
Financial Insitutions: N=53
Manufacturing: N=53
Mining: N=53
Rental and other services: N=53
Social and Administrative: N=53
Trade: N=53
Transportation: N=53
| Dependent variable: gdp_log | ||||||||||
| Communication | Construction | Electricity | Financial Insitutions | Manufacturing | Mining | Rental and other services | Social and Administrative | Trade | Transportation | |
| (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | |
| Intercept | -2.814 | 12.710*** | 18.968*** | 8.487 | 17.609*** | -8.537 | 3.296 | 7.771 | 22.979*** | 14.954*** |
| (6.455) | (3.955) | (3.938) | (5.378) | (2.872) | (8.117) | (5.055) | (5.353) | (3.018) | (2.528) | |
| log_no2 | -1.496** | -0.137 | 0.616* | -0.269 | 0.188 | -1.953** | -0.928* | -0.525 | 0.740** | 0.028 |
| (0.598) | (0.366) | (0.365) | (0.498) | (0.266) | (0.752) | (0.468) | (0.496) | (0.279) | (0.234) | |
| quarter[T.2] | -0.833** | -1.054*** | 0.462** | -0.650** | -0.963*** | -1.215*** | -0.625** | -0.387 | -0.279* | -0.311** |
| (0.344) | (0.211) | (0.210) | (0.286) | (0.153) | (0.432) | (0.269) | (0.285) | (0.161) | (0.135) | |
| quarter[T.3] | -1.468** | -0.647* | 0.700** | -0.483 | -0.639** | -2.023*** | -0.987** | -0.538 | 0.349 | -0.114 |
| (0.559) | (0.343) | (0.341) | (0.466) | (0.249) | (0.703) | (0.438) | (0.464) | (0.262) | (0.219) | |
| quarter[T.4] | -1.140** | -0.051 | 0.459* | -0.422 | 0.188 | -1.471** | -0.591* | -0.307 | 1.160*** | 0.330* |
| (0.445) | (0.272) | (0.271) | (0.371) | (0.198) | (0.559) | (0.348) | (0.369) | (0.208) | (0.174) | |
| Observations | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 | 53 |
| R2 | 0.127 | 0.737 | 0.118 | 0.228 | 0.878 | 0.156 | 0.141 | 0.059 | 0.863 | 0.672 |
| Adjusted R2 | 0.054 | 0.715 | 0.045 | 0.163 | 0.868 | 0.086 | 0.070 | -0.020 | 0.851 | 0.645 |
| Residual Std. Error | 0.431 (df=48) | 0.264 (df=48) | 0.263 (df=48) | 0.359 (df=48) | 0.192 (df=48) | 0.542 (df=48) | 0.338 (df=48) | 0.357 (df=48) | 0.202 (df=48) | 0.169 (df=48) |
| F Statistic | 1.745 (df=4; 48) | 33.632*** (df=4; 48) | 1.606 (df=4; 48) | 3.535** (df=4; 48) | 86.146*** (df=4; 48) | 2.216* (df=4; 48) | 1.974 (df=4; 48) | 0.746 (df=4; 48) | 75.365*** (df=4; 48) | 24.608*** (df=4; 48) |
| Note: | *p<0.1; **p<0.05; ***p<0.01 | |||||||||
Model 4a: Rainfall Control (No Quarter FE)#
We control for the physical mechanism behind NO₂ seasonality by adding rainfall as a control variable instead of quarter fixed effects.
Model 5: QoQ % Change (No Lag)#
Model 5: gdp_qoq ~ no2_qoq (excluding Energy)
Communication: N=52
Construction: N=52
Electricity: N=52
Financial Insitutions: N=52
Manufacturing: N=52
Mining: N=52
Rental and other services: N=52
Social and Administrative: N=52
Trade: N=52
Transportation: N=52
| Dependent variable: gdp_qoq | ||||||||||
| Communication | Construction | Electricity | Financial Insitutions | Manufacturing | Mining | Rental and other services | Social and Administrative | Trade | Transportation | |
| (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | |
| Intercept | 0.140 | 0.184** | 0.019 | 0.050 | 0.224** | 0.032 | 0.035 | 0.026 | 0.289** | 0.091 |
| (0.092) | (0.085) | (0.020) | (0.045) | (0.110) | (0.027) | (0.024) | (0.021) | (0.127) | (0.064) | |
| no2_qoq | 0.077 | 0.120 | -0.062* | 0.262*** | 0.255 | 0.219*** | 0.046 | 0.012 | -0.118 | -0.078 |
| (0.157) | (0.147) | (0.034) | (0.077) | (0.189) | (0.046) | (0.042) | (0.036) | (0.219) | (0.110) | |
| Observations | 52 | 52 | 52 | 52 | 52 | 52 | 52 | 52 | 52 | 52 |
| R2 | 0.005 | 0.013 | 0.062 | 0.187 | 0.035 | 0.308 | 0.024 | 0.002 | 0.006 | 0.010 |
| Adjusted R2 | -0.015 | -0.007 | 0.043 | 0.171 | 0.016 | 0.294 | 0.005 | -0.018 | -0.014 | -0.010 |
| Residual Std. Error | 0.645 (df=50) | 0.600 (df=50) | 0.140 (df=50) | 0.317 (df=50) | 0.772 (df=50) | 0.190 (df=50) | 0.170 (df=50) | 0.149 (df=50) | 0.896 (df=50) | 0.450 (df=50) |
| F Statistic | 0.239 (df=1; 50) | 0.667 (df=1; 50) | 3.302* (df=1; 50) | 11.519*** (df=1; 50) | 1.829 (df=1; 50) | 22.278*** (df=1; 50) | 1.232 (df=1; 50) | 0.118 (df=1; 50) | 0.292 (df=1; 50) | 0.499 (df=1; 50) |
| Note: | *p<0.1; **p<0.05; ***p<0.01 | |||||||||
Model 6: QoQ % Change (3-Quarter Lag)#
Model 6: gdp_qoq ~ no2_qoq_lag3 (excluding Energy)
Communication: N=49
Construction: N=49
Electricity: N=49
Financial Insitutions: N=49
Manufacturing: N=49
Mining: N=49
Rental and other services: N=49
Social and Administrative: N=49
Trade: N=49
Transportation: N=49
| Dependent variable: gdp_qoq | ||||||||||
| Communication | Construction | Electricity | Financial Insitutions | Manufacturing | Mining | Rental and other services | Social and Administrative | Trade | Transportation | |
| (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | |
| Intercept | 0.126 | 0.114* | 0.026 | 0.088* | 0.123** | 0.054 | 0.018 | 0.014 | 0.100** | 0.011 |
| (0.093) | (0.060) | (0.019) | (0.050) | (0.058) | (0.032) | (0.020) | (0.017) | (0.048) | (0.042) | |
| no2_qoq_lag3 | -0.019 | 0.760*** | -0.120*** | 0.020 | 1.160*** | 0.078 | 0.194*** | 0.122*** | 1.439*** | 0.617*** |
| (0.159) | (0.103) | (0.032) | (0.085) | (0.099) | (0.055) | (0.034) | (0.029) | (0.081) | (0.072) | |
| Observations | 49 | 49 | 49 | 49 | 49 | 49 | 49 | 49 | 49 | 49 |
| R2 | 0.000 | 0.537 | 0.234 | 0.001 | 0.745 | 0.041 | 0.412 | 0.274 | 0.870 | 0.610 |
| Adjusted R2 | -0.021 | 0.527 | 0.218 | -0.020 | 0.740 | 0.021 | 0.400 | 0.258 | 0.867 | 0.601 |
| Residual Std. Error | 0.638 (df=47) | 0.415 (df=47) | 0.128 (df=47) | 0.343 (df=47) | 0.398 (df=47) | 0.222 (df=47) | 0.136 (df=47) | 0.117 (df=47) | 0.327 (df=47) | 0.290 (df=47) |
| F Statistic | 0.015 (df=1; 47) | 54.412*** (df=1; 47) | 14.347*** (df=1; 47) | 0.056 (df=1; 47) | 137.561*** (df=1; 47) | 2.020 (df=1; 47) | 32.936*** (df=1; 47) | 17.721*** (df=1; 47) | 314.456*** (df=1; 47) | 73.445*** (df=1; 47) |
| Note: | *p<0.1; **p<0.05; ***p<0.01 | |||||||||
Model 7: YoY % Change (No Lag)#
Model 7: gdp_yoy ~ no2_yoy (excluding Energy)
Communication: N=49
Construction: N=49
Electricity: N=49
Financial Insitutions: N=49
Manufacturing: N=49
Mining: N=49
Rental and other services: N=49
Social and Administrative: N=49
Trade: N=49
Transportation: N=49
| Dependent variable: gdp_yoy | ||||||||||
| Communication | Construction | Electricity | Financial Insitutions | Manufacturing | Mining | Rental and other services | Social and Administrative | Trade | Transportation | |
| (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | |
| Intercept | 0.266** | 0.076** | 0.034* | 0.114*** | 0.034* | 0.185*** | 0.099*** | 0.104*** | 0.008 | 0.032* |
| (0.117) | (0.029) | (0.019) | (0.033) | (0.017) | (0.032) | (0.021) | (0.026) | (0.018) | (0.017) | |
| no2_yoy | -1.714* | -0.454* | 0.037 | -0.249 | -0.105 | -0.727*** | -0.191 | -0.190 | 0.045 | -0.216 |
| (0.924) | (0.226) | (0.152) | (0.258) | (0.137) | (0.249) | (0.165) | (0.206) | (0.144) | (0.136) | |
| Observations | 49 | 49 | 49 | 49 | 49 | 49 | 49 | 49 | 49 | 49 |
| R2 | 0.068 | 0.079 | 0.001 | 0.020 | 0.012 | 0.153 | 0.028 | 0.018 | 0.002 | 0.051 |
| Adjusted R2 | 0.048 | 0.059 | -0.020 | -0.001 | -0.009 | 0.135 | 0.007 | -0.003 | -0.019 | 0.030 |
| Residual Std. Error | 0.818 (df=47) | 0.200 (df=47) | 0.135 (df=47) | 0.228 (df=47) | 0.122 (df=47) | 0.220 (df=47) | 0.146 (df=47) | 0.182 (df=47) | 0.128 (df=47) | 0.120 (df=47) |
| F Statistic | 3.441* (df=1; 47) | 4.036* (df=1; 47) | 0.061 (df=1; 47) | 0.936 (df=1; 47) | 0.582 (df=1; 47) | 8.523*** (df=1; 47) | 1.336 (df=1; 47) | 0.847 (df=1; 47) | 0.095 (df=1; 47) | 2.509 (df=1; 47) |
| Note: | *p<0.1; **p<0.05; ***p<0.01 | |||||||||
Cross-Correlation Analysis#
Cross-correlation functions (CCF) between NO₂ and GDP at various lags, to identify the lead/lag structure of the relationship.
Methodological caveat: These are associations, not causal estimates. Omitted variables may confound the relationship. The small sample (~48 quarters per sector) limits statistical power and prevents adding many controls simultaneously.