Downloads
Each dataset is available as a labeled Stata .dta and its source file.
⇩ Download all data (ZIP)stata_codebook.do
| Dataset | Grain | Rows | Stata | Source |
|---|---|---|---|---|
bridge_nightlights | one row per upazila x three-year period | 2,513 × 13 | bridge_nightlights.dta | bridge_nightlights.csv |
bridge_employment | one row per upazila x census year | 1,053 × 20 | bridge_employment.dta | bridge_employment.csv |
bridge_yield | one row per former district x three-year period | 128 × 13 | bridge_yield.dta | bridge_yield.csv |
bridge_dhs_household | one row per village (survey cluster) x survey year | 1,543 × 20 | bridge_dhs_household.dta | bridge_dhs_household.csv |
bridge_dhs_village | one row per village (survey cluster) x survey year | 1,455 × 22 | bridge_dhs_village.dta | bridge_dhs_village.csv |
Run stata_codebook.do in Stata once to attach long-form per-variable notes to the .dta files.
Load directly in code
Every file loads straight from GitHub (raw URLs). Swap the file name to load any dataset.
Stata
* Stata 14+ : `use` reads an https URL directly
global BASE "https://raw.githubusercontent.com/cmg777/starter-academic-v501/master/content/post/python_bridge_impact/data/"
use "${BASE}bridge_nightlights.dta", clear
describe
notesPython
!pip install -q pyreadstat
import pandas as pd
BASE = "https://raw.githubusercontent.com/cmg777/starter-academic-v501/master/content/post/python_bridge_impact/data/"
df = pd.read_stata(BASE + "bridge_nightlights.dta")
# load every dataset at once
files = ["bridge_nightlights", "bridge_employment", "bridge_yield", "bridge_dhs_household", "bridge_dhs_village"]
data = {f: pd.read_stata(BASE + f + ".dta") for f in files}
# pyreadstat (richest metadata) reads LOCAL files -> download first
import pyreadstat, urllib.request
urllib.request.urlretrieve(BASE + "bridge_nightlights.dta", "bridge_nightlights.dta")
df, meta = pyreadstat.read_dta("bridge_nightlights.dta")Copy and paste this snippet in Google Colab app. https://colab.research.google.com/notebooks/empty.ipynb
R
# R : haven::read_dta auto-downloads an https URL
library(haven)
BASE <- "https://raw.githubusercontent.com/cmg777/starter-academic-v501/master/content/post/python_bridge_impact/data/"
df <- read_dta(paste0(BASE, "bridge_nightlights.dta"))Overview & sources
Companion data for a hands-on Python tutorial that evaluates the economic impact of the Jamuna (Bangabandhu) Bridge, a 4.8 km crossing that opened in June 1998, cost about US\$985 million, connected roughly 26 million people in isolated northwest Bangladesh to Dhaka, and cut freight costs by about half. The design is a two-group, non-staggered difference-in-differences: the Jamuna hinterland is treated, and the Padma hinterland — a symmetric region cut off by the other great river, whose own bridge was not started until 2015 — is the comparison. The Dhaka–Chittagong core is excluded. These five files are tidy CSV exports of the authors' original Stata replication package, unchanged in value; only the file format and column selection differ. The tutorial reproduces all 122 published coefficients to three decimals.
bridge_nightlights is the richest panel: 359 upazilas (subdistricts) × seven three-year periods of DMSP-OLS satellite luminosity, 1992–2013. bridge_employment holds three population censuses (1991, 2001, 2011) for 351 upazilas, carrying population density and the agriculture/industry/services employment shares. bridge_yield is Boro rice yield for 16 former districts over eight periods, 1988–2013. bridge_dhs_household and bridge_dhs_village are village-year records from the Demographic and Health Surveys and the Household Income and Expenditure Survey, used as a placebo test on public goods. Critical: the year column is an integer period index (1, 2, 3…), not a calendar year — annual satellite and yield data are averaged into three-year blocks. The controls interact baseline characteristics with this index, so substituting calendar years changes every coefficient.
Data sources
| Source | Provides | Reference / URL |
|---|---|---|
| Blankespoor, Emran, Shilpi and Xu (2021) | The replicated study and the complete Stata replication package these CSVs are derived from — four do-files, five .dta files, execution logs, and every intermediate result table | Blankespoor, B., Emran, M. S., Shilpi, F., & Xu, L. (2021). Bridge to bigpush or backwash? Market integration, reallocation and productivity effects of Jamuna Bridge in Bangladesh. Journal of Economic Geography. Working-paper version: World Bank Policy Research Working Paper 8508, https://doi.org/10.1596/1813-9450-8508 |
| DMSP-OLS Nighttime Lights | Satellite luminosity at 1 km pixel resolution, averaged to the upazila and then into three-year blocks (variable mn) | NOAA National Centers for Environmental Information, Earth Observation Group. https://www.ncei.noaa.gov/products/dmsp-operational-linescan-system |
| IPUMS International | Bangladesh population censuses 1991, 2001 and 2011 — individual and household records collapsed to the upazila (pop, emp, pop_agr, pop_ind, pop_serv, density, surban, prop_elec) | Minnesota Population Center. https://international.ipums.org/international/ |
| Bangladesh Bureau of Statistics | Annual Boro rice yield by former district (yld), from the Yearbook of Agricultural Statistics 2016; and the Household Income and Expenditure Survey 1995/96 | Yearbook of Agricultural Statistics 2016, Bangladesh Bureau of Statistics. |
| The DHS Program | Household and village questionnaire records for the public-goods placebo (electricity, water, sanitation, distances to schools, clinics, banks and post offices) | Bangladesh Demographic and Health Surveys 1993, 1997, 2003, 2007, 2011, 2014. https://dhsprogram.com/ |
| NOAA PREC/L | Monthly precipitation reconstruction over land, extracted at the upazila level (rainm, rainsd) | NOAA Precipitation Reconstruction over Land, NOAA Physical Sciences Laboratory. https://psl.noaa.gov/data/gridded/data.precl.html |
| Method references | The two doubly-robust estimators and the sensitivity analysis | Kline (2011, Oaxaca-Blinder as a reweighting estimator); Busso, Gregory & Kline (2013); Rambachan & Roth (2023, HonestDiD). |
Cite this data
Please cite this dataset as follows.
APA
Mendez, C. (2026). Evaluating the Impact of Infrastructure: A Beginner's Guide to Difference-in-Differences with the Jamuna Bridge — companion data [Data set]. https://carlos-mendez.org/post/python_bridge_impact/
Data derived from the replication package of Blankespoor, B., Emran, M. S., Shilpi, F., & Xu, L. (2021), Journal of Economic Geography. Please cite the original authors for the data.BibTeX
@misc{mendez2026pythonbridgeimpact,
author = {Mendez, C.},
title = {Evaluating the Impact of Infrastructure: A Beginner's Guide to Difference-in-Differences with the Jamuna Bridge — companion data},
year = {2026},
howpublished = {\url{https://carlos-mendez.org/post/python_bridge_impact/}},
note = {Data set}
}
note = {Data derived from the replication package of Blankespoor, Emran, Shilpi and Xu (2021)}Variable explorer search & filter all 51 variables
Type to filter by name or label, or use the chips to filter by type. Each row shows a mini distribution. Click a header to sort.
| Variable | Type | Distribution | Label | Definition | Units | In files | Source |
|---|---|---|---|---|---|---|---|
Age# | continuous | Mean age | Average age of household members in the village. | years | bridge_dhs_household | The DHS Program | |
Cluster# | identifier | – | Survey cluster (village) | DHS primary sampling unit — effectively a village. The unit of observation in both DHS files. | code | bridge_dhs_household, bridge_dhs_village | The DHS Program |
District# | identifier | – | District (DHS) | District identifier in the DHS files. This is the clustering and fixed-effect level for the public-goods placebo, because upazila identifiers are not released for survey rounds before 2003. | code | bridge_dhs_household, bridge_dhs_village | The DHS Program |
Division# | identifier | – | Division (DHS) | Administrative division as coded in the DHS files: 1 Barisal, 2 Chittagong, 3 Dhaka, 4 Khulna, 5 Rajshahi, 6 Sylhet. | code | bridge_dhs_household, bridge_dhs_village | The DHS Program |
DrinkWater# | continuous | Piped water | Share of households with piped drinking water. One of the few pre-bridge characteristics on which the two hinterlands differ significantly. | share (0–1) | bridge_dhs_household | The DHS Program | |
Electricity# | continuous | Access to electricity | Share of households in the village with electricity — the one household-questionnaire outcome carried into the paper's published Table 3. | share (0–1) | bridge_dhs_household | The DHS Program | |
Floor# | continuous | Cement floor | Share of households with a cement floor — a standard asset proxy. Missing for 183 rows. | share (0–1) | bridge_dhs_household | The DHS Program | |
NGO# | dummy | Income-generating NGO present | Whether an income-generating NGO operates in the village. Non-missing for only 413 rows, and the treatment terms are dropped for collinearity in the placebo regression. | 0/1 | bridge_dhs_village | The DHS Program | |
Roof# | continuous | Cement or corrugated roof | Share of households with a cement or corrugated-iron roof. | share (0–1) | bridge_dhs_household | The DHS Program | |
Toilet# | continuous | Flush toilet | Share of households with a flush toilet. | share (0–1) | bridge_dhs_household | The DHS Program | |
Urban# | continuous | Settlement type | Village classification: 1 rural area, 2 SMA, 3 municipality area, 4 other urban. | code | bridge_dhs_village | The DHS Program | |
age5# | continuous | Share under 5 | Share of the village population below five years of age. | share (0–1) | bridge_dhs_household | The DHS Program | |
age60# | continuous | Share over 60 | Share of the village population above sixty. Significantly lower in the Jamuna hinterland before the bridge — one of the demographic imbalances the paper acknowledges. | share (0–1) | bridge_dhs_household | The DHS Program | |
cinema# | continuous | Distance to cinema | Distance to the nearest cinema. Like post_office, filed under 'Presence of' in the published table but a distance in the data. | miles | bridge_dhs_village | The DHS Program | |
co_operative_soc# | dummy | Cooperative society present | Whether the village has a cooperative society. Its true short-run estimate is 0.090 (0.108); the published Table 3 prints 0.420, which is in fact the post_office coefficient — see section 18.2 of the companion post. | 0/1 | bridge_dhs_village | The DHS Program | |
density# | continuous | Population density | Population per square kilometre. This is the outcome that discriminates between the backwash and comparative-advantage theories: backwash requires it to fall, and it rises 5.9 percent in the long run. | persons per sq km | bridge_employment | IPUMS International | |
dist# | identifier | – | District code | District identifier. In the yield file this is the unit of observation (former district); elsewhere it is an upper-level grouping. | code | bridge_nightlights, bridge_employment, bridge_yield | Blankespoor et al. (2021) replication package |
dist_Thana# | continuous | Distance to thana headquarters | Distance from the village to the thana (police-subdistrict) headquarters. Non-missing for only 559 rows. | miles | bridge_dhs_village | The DHS Program | |
dist_district# | continuous | Distance to district headquarters | Distance from the village to the district headquarters. Non-missing for 618 rows. | miles | bridge_dhs_village | The DHS Program | |
dist_hos# | continuous | Distance to hospital | Distance from the village to the nearest hospital. | miles | bridge_dhs_village | The DHS Program | |
dist_satellite_clinic# | continuous | Distance to satellite clinic | Distance to the nearest satellite health clinic. The sparsest variable in the file, non-missing for only 398 rows. | miles | bridge_dhs_village | The DHS Program | |
div# | identifier | – | Division code | Administrative division: 1 Barisal, 2 Chittagong, 3 Dhaka, 4 Khulna, 5 Rajshahi. | code | bridge_nightlights, bridge_employment, bridge_yield | Blankespoor et al. (2021) replication package |
emp# | continuous | Total employment | Total employed population — the denominator of the three sectoral shares. | persons | bridge_employment | IPUMS International | |
female# | continuous | Share female | Share of the village population that is female. | share (0–1) | bridge_dhs_household | The DHS Program | |
former_dis# | identifier | – | Former district | Old-district identifier used by the agricultural statistics, which were never re-issued on the modern district boundaries. | code | bridge_yield | Bangladesh Bureau of Statistics |
geocode# | identifier | – | Upazila code | Bangladesh upazila (subdistrict) identifier, harmonised across census rounds. | code | bridge_nightlights, bridge_employment | Blankespoor et al. (2021) replication package |
grameen_bank# | continuous | Grameen Bank present | Whether the village has a Grameen Bank branch — a genuine presence indicator. | 0/1 | bridge_dhs_village | The DHS Program | |
high_school# | continuous | Distance to high school | Distance from the village to the nearest high school. Its long-run estimate of +0.535 (0.290) is the only marginally significant coefficient among the 21 public-goods tests — and it has the wrong sign for the political-economy story, since it says schools got farther away. | miles | bridge_dhs_village | The DHS Program | |
hsize# | continuous | Average household size | Mean number of members per household in the village. | persons | bridge_dhs_household | The DHS Program | |
jamuna_m# | continuous | Distance to the Jamuna bridge | Crow-fly distance from the unit centroid to the Jamuna bridge foot. | metres | bridge_nightlights, bridge_employment, bridge_yield, bridge_dhs_household, bridge_dhs_village | Blankespoor et al. (2021), from Bangladesh shapefiles | |
madrassa_school# | continuous | Distance to madrassa | Distance from the village to the nearest madrassa school. | miles | bridge_dhs_village | The DHS Program | |
mn# | continuous | Average nightlight luminosity | Mean DMSP-OLS digital-number luminosity over the upazila, averaged across the three-year block. | digital number (0–63 scale) | bridge_nightlights | DMSP-OLS, NOAA Earth Observation Group | |
padma_m# | continuous | Distance to the Padma crossing | Crow-fly distance from the unit centroid to the planned Padma bridge site. | metres | bridge_nightlights, bridge_employment, bridge_yield, bridge_dhs_household, bridge_dhs_village | Blankespoor et al. (2021), from Bangladesh shapefiles | |
pop# | continuous | Total population | Total population recorded in the census round. | persons | bridge_employment | IPUMS International | |
pop91# | continuous | Population in 1991 | Total population recorded in the 1991 census — a baseline characteristic fixed before the bridge. | persons | bridge_nightlights, bridge_employment, bridge_yield | IPUMS International | |
pop_agr# | continuous | Employed in agriculture | Number employed in agriculture. Divided by emp it gives the agriculture share, which falls 1.3 percentage points on average and 5.7 points in the farthest distance band. | persons | bridge_employment | IPUMS International | |
pop_ind# | continuous | Employed in industry | Number employed in industry and manufacturing. The share falls 1.2 percentage points in the long run — roughly a third of a 2.8 percent baseline sector. | persons | bridge_employment | IPUMS International | |
pop_serv# | continuous | Employed in services | Number employed in services — trading, transport and processing, the activities a region takes on when it starts shipping output. The share rises 2.4 percentage points in the long run. | persons | bridge_employment | IPUMS International | |
post_office# | continuous | Distance to post office | Distance to the nearest post office. NOTE: filed under 'Presence of' in the paper's published Table 3, but labelled as a distance in the source data. | miles | bridge_dhs_village | The DHS Program | |
primary_school# | continuous | Distance to primary school | Distance from the village to the nearest primary school. | miles | bridge_dhs_village | The DHS Program | |
prop_elec# | continuous | Household electrification | Proportion of households with electricity. | share (0–1) | bridge_employment | IPUMS International | |
rainm# | continuous | Mean rainfall | Average monthly precipitation over the period. | cm per month | bridge_nightlights, bridge_employment, bridge_yield | NOAA PREC/L | |
rainsd# | continuous | Rainfall variability | Standard deviation of monthly precipitation over the period — a control for weather risk, which matters directly for agricultural yield. | cm per month | bridge_nightlights, bridge_employment, bridge_yield | NOAA PREC/L | |
rural# | dummy | Rural village | 1 if the survey cluster is rural. Entered as a control in the household regression because it dominates every service-access outcome. | 0/1 | bridge_dhs_household | The DHS Program | |
smp1# | dummy | Estimation sample | Non-missing for the Jamuna and Padma hinterlands; MISSING for the Dhaka–Chittagong core. Filtering on non-missing is how the core is excluded from every regression. | 0/1 or missing | bridge_nightlights, bridge_employment, bridge_yield, bridge_dhs_household, bridge_dhs_village | Blankespoor et al. (2021) replication package | |
surban# | continuous | Urban share | Share of the upazila population classified as urban. | share (0–1) | bridge_employment | IPUMS International | |
treat# | dummy | Jamuna hinterland (treated) | 1 if the unit lies in the Jamuna hinterland, the region the bridge connected; 0 otherwise. | 0/1 | bridge_nightlights, bridge_employment, bridge_yield, bridge_dhs_household, bridge_dhs_village | Blankespoor et al. (2021) replication package | |
treatd# | dummy | Core region (excluded) | 1 for the Dhaka–Chittagong core and adjacent areas. Used only for descriptive comparison in the paper's Appendix Table AT.1, never as a DiD comparison group. | 0/1 | bridge_nightlights, bridge_employment, bridge_yield | Blankespoor et al. (2021) replication package | |
year# | year | – | Period index | Integer period index, NOT a calendar year. Nightlights: 1=1992-94, 2=1995-97, 3=1998-2000, 4=2001-04, 5=2005-07, 6=2008-10, 7=2011-13. Census: 1=1991, 2=2001, 3=2011. Yield: 1=1988-91, 2=1992-94, 3=1995-97, 4=1998-2000, 5=2001-04, 6=2005-07, 7=2008-10, 8=2011-13. DHS: 1=1994, 2=1996, 3=1997, 4=2003, 5=2007, 6=2011, 7=2013. | index | bridge_nightlights, bridge_employment, bridge_yield, bridge_dhs_household, bridge_dhs_village | Blankespoor et al. (2021) replication package |
yld# | continuous | Boro rice yield | Yield of Boro rice, the dry-season irrigated crop that dominates Bangladeshi cereal production. | metric tons per hectare | bridge_yield | Yearbook of Agricultural Statistics 2016, Bangladesh Bureau of Statistics | |
yr# | dummy | Post-bridge (DHS) | 1 for survey rounds after the bridge opened (2003 onward); 0 for 1994, 1996 and 1997. | 0/1 | bridge_dhs_household, bridge_dhs_village | Blankespoor et al. (2021) replication package |
Cross-file variable index
Which file each variable appears in (● = present).
| Variable | bridge_nightlights | bridge_employment | bridge_yield | bridge_dhs_household | bridge_dhs_village |
|---|---|---|---|---|---|
Age | ● | ||||
Cluster | ● | ● | |||
District | ● | ● | |||
Division | ● | ● | |||
DrinkWater | ● | ||||
Electricity | ● | ||||
Floor | ● | ||||
NGO | ● | ||||
Roof | ● | ||||
Toilet | ● | ||||
Urban | ● | ||||
age5 | ● | ||||
age60 | ● | ||||
cinema | ● | ||||
co_operative_soc | ● | ||||
density | ● | ||||
dist | ● | ● | ● | ||
dist_Thana | ● | ||||
dist_district | ● | ||||
dist_hos | ● | ||||
dist_satellite_clinic | ● | ||||
div | ● | ● | ● | ||
emp | ● | ||||
female | ● | ||||
former_dis | ● | ||||
geocode | ● | ● | |||
grameen_bank | ● | ||||
high_school | ● | ||||
hsize | ● | ||||
jamuna_m | ● | ● | ● | ● | ● |
madrassa_school | ● | ||||
mn | ● | ||||
padma_m | ● | ● | ● | ● | ● |
pop | ● | ||||
pop91 | ● | ● | ● | ||
pop_agr | ● | ||||
pop_ind | ● | ||||
pop_serv | ● | ||||
post_office | ● | ||||
primary_school | ● | ||||
prop_elec | ● | ||||
rainm | ● | ● | ● | ||
rainsd | ● | ● | ● | ||
rural | ● | ||||
smp1 | ● | ● | ● | ● | ● |
surban | ● | ||||
treat | ● | ● | ● | ● | ● |
treatd | ● | ● | ● | ||
year | ● | ● | ● | ● | ● |
yld | ● | ||||
yr | ● | ● |
Construction & formulas
The bridge is treated as a quasi-natural experiment: which river got a bridge first was decided by political geography — President Ershad's base in Rangpur and Prime Minister Khaleda Zia's in Bogra, both in the Jamuna hinterland — rather than by economic prospects in the northwest. The comparison region stayed isolated for the whole window because the Padma bridge was not begun until 2015.
- Mean effect:
Y_it = θ0 + μ_i + μ_t + θ1·(D_J × D_post) + Σ β_q X_qit + Σ π_m (Z_mi0 × t) + ε_it, with upazila fixed effectsμ_i, period fixed effectsμ_t, and the estimand the ATT. - Short run vs long run: replace the single post switch with two,
δ1·(D_J × D_SR)andδ2·(D_J × D_LR). This is where population density reverses sign, from −2.5% to +5.9%. - Derived controls:
mdist = min(jamuna_m, padma_m)/1000;lmdist = ln(mdist + 1);lpop91 = ln(pop91);lpop91_t = lpop91 × year;lmdist_t = lmdist × year. The trend interactions matter: unit fixed effects already absorb the time-invariant levels, so entering them alone would do nothing. Interacting them relaxes parallel trends from “all upazilas trend alike” to “upazilas that started alike trend alike”. - Rainfall logs differ by file:
ln(rainm + 1)for the nightlights panel (it contains zeros), plainln(rainm)for the census and yield panels. This is not cosmetic — it changes which rows survive. - Outcomes:
lmn = ln(mn + 1)(luminosity is bottom-coded at 1.0);lyld = ln(yld);ldensity = ln(density);sagr = pop_agr/emp,sind = pop_ind/emp,sserv = pop_serv/emp. - Two doubly-robust weights, both estimated on the
smp1sample: LWDR uses the propensity oddsp/(1−p)·(1−π)/π; KOBDR uses Kline's Oaxaca-Blinder projection of the treated covariate mean onto the comparison design. Both put weight 1 on treated units, which is what makes them ATT weights.
The datasets
Switch datasets with the tabs. Each shows the full variable dictionary plus a sortable statistics table with mini distributions and data coverage.
expand to search (Ctrl/⌘+F) or print across all datasets
Variable dictionary
| Variable | Label | Definition | Construction | Units | Source | Coverage |
|---|---|---|---|---|---|---|
geocode identifier | Upazila code | Bangladesh upazila (subdistrict) identifier, harmonised across census rounds. | Master administrative code. Upazilas that split or merged between rounds were matched by superimposing digital maps and applying area weights, so the panel is comparable over time. | code | Blankespoor et al. (2021) replication package | |
year year | Period index | Integer period index, NOT a calendar year. Nightlights: 1=1992-94, 2=1995-97, 3=1998-2000, 4=2001-04, 5=2005-07, 6=2008-10, 7=2011-13. Census: 1=1991, 2=2001, 3=2011. Yield: 1=1988-91, 2=1992-94, 3=1995-97, 4=1998-2000, 5=2001-04, 6=2005-07, 7=2008-10, 8=2011-13. DHS: 1=1994, 2=1996, 3=1997, 4=2003, 5=2007, 6=2011, 7=2013. | Annual satellite and yield series are averaged into three-year blocks to smooth transitory shocks. The bridge opened in June 1998, inside nightlights period 3 and yield period 4. | index | Blankespoor et al. (2021) replication package | |
mn continuous | Average nightlight luminosity | Mean DMSP-OLS digital-number luminosity over the upazila, averaged across the three-year block. | 1 km satellite pixels averaged to the upazila boundary, then across years. BOTTOM-CODED AT 1.0 — the minimum in the data is exactly 1.0, so most rural upazilas sit at the floor. The tutorial uses ln(mn + 1) for this reason. | digital number (0–63 scale) | DMSP-OLS, NOAA Earth Observation Group | |
div identifier | Division code | Administrative division: 1 Barisal, 2 Chittagong, 3 Dhaka, 4 Khulna, 5 Rajshahi. | Master administrative code. | code | Blankespoor et al. (2021) replication package | |
dist identifier | District code | District identifier. In the yield file this is the unit of observation (former district); elsewhere it is an upper-level grouping. | Master administrative code. | code | Blankespoor et al. (2021) replication package | |
pop91 continuous | Population in 1991 | Total population recorded in the 1991 census — a baseline characteristic fixed before the bridge. | Used in the propensity model and, interacted with the period index, as a control that lets initially-large units follow a different trajectory. | persons | IPUMS International | |
rainm continuous | Mean rainfall | Average monthly precipitation over the period. | Extracted at the upazila level from the NOAA PREC/L gridded reconstruction. Enters the regressions as ln(rainm + 1) for nightlights and ln(rainm) elsewhere. | cm per month | NOAA PREC/L | |
rainsd continuous | Rainfall variability | Standard deviation of monthly precipitation over the period — a control for weather risk, which matters directly for agricultural yield. | Extracted at the upazila level from NOAA PREC/L. Zero values become missing under the log transform, which is what removes 28 nightlights upazilas from the estimation sample. | cm per month | NOAA PREC/L | |
jamuna_m continuous | Distance to the Jamuna bridge | Crow-fly distance from the unit centroid to the Jamuna bridge foot. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
padma_m continuous | Distance to the Padma crossing | Crow-fly distance from the unit centroid to the planned Padma bridge site. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
treat dummy | Jamuna hinterland (treated) | 1 if the unit lies in the Jamuna hinterland, the region the bridge connected; 0 otherwise. | Assigned by geography: which side of which river the unit sits on. | 0/1 | Blankespoor et al. (2021) replication package | |
smp1 dummy | Estimation sample | Non-missing for the Jamuna and Padma hinterlands; MISSING for the Dhaka–Chittagong core. Filtering on non-missing is how the core is excluded from every regression. | Missing wherever treatd == 1. In the two DHS files there is no core, so this variable is numerically identical to treat. | 0/1 or missing | Blankespoor et al. (2021) replication package | |
treatd dummy | Core region (excluded) | 1 for the Dhaka–Chittagong core and adjacent areas. Used only for descriptive comparison in the paper's Appendix Table AT.1, never as a DiD comparison group. | The authors dropped core estimates from the published design after a referee pointed out that the Padma hinterland is not a valid comparison for the core. | 0/1 | Blankespoor et al. (2021) replication package |
Distribution & statistics (click a header to sort)
| Variable | Distribution | Coverage | N | Distinct | Min | Mean | Median | Max | SD |
|---|---|---|---|---|---|---|---|---|---|
geocode | – | 100% | 2,513 | 359 | — | — | — | — | — |
year | – | 100% | 2,513 | 7 | 1 | 4.0 | 4 | 7 | 2.00 |
mn | 100% | 2,513 | 1,637 | 1.00 | 6.34 | 2.44 | 64.00 | 12.48 | |
div | – | 100% | 2,513 | 4 | — | — | — | — | — |
dist | – | 100% | 2,513 | 49 | — | — | — | — | — |
pop91 | 99% | 2,485 | 353 | 52,040 | 219,938 | 205,490 | 639,540 | 101,985 | |
rainm | 100% | 2,513 | 1,415 | 0 | 51.10 | 49.91 | 147.3 | 16.95 | |
rainsd | 100% | 2,513 | 1,414 | 0 | 51.53 | 48.88 | 164.6 | 18.28 | |
jamuna_m | 100% | 2,513 | 359 | 8,421.7 | 129,656 | 119,802 | 281,563 | 58,973 | |
padma_m | 100% | 2,513 | 359 | 8,438.5 | 145,678 | 130,548 | 387,407 | 83,736 | |
treat | 100% | 2,513 | 2 | 0 | 0.354 | 0 | 1.00 | 0.478 | |
smp1 | 70% | 1,764 | 2 | 0 | 0.504 | 1.00 | 1.00 | 0.500 | |
treatd | 100% | 2,513 | 2 | 0 | 0.298 | 0 | 1.00 | 0.457 |
Variable dictionary
| Variable | Label | Definition | Construction | Units | Source | Coverage |
|---|---|---|---|---|---|---|
geocode identifier | Upazila code | Bangladesh upazila (subdistrict) identifier, harmonised across census rounds. | Master administrative code. Upazilas that split or merged between rounds were matched by superimposing digital maps and applying area weights, so the panel is comparable over time. | code | Blankespoor et al. (2021) replication package | |
year year | Period index | Integer period index, NOT a calendar year. Nightlights: 1=1992-94, 2=1995-97, 3=1998-2000, 4=2001-04, 5=2005-07, 6=2008-10, 7=2011-13. Census: 1=1991, 2=2001, 3=2011. Yield: 1=1988-91, 2=1992-94, 3=1995-97, 4=1998-2000, 5=2001-04, 6=2005-07, 7=2008-10, 8=2011-13. DHS: 1=1994, 2=1996, 3=1997, 4=2003, 5=2007, 6=2011, 7=2013. | Annual satellite and yield series are averaged into three-year blocks to smooth transitory shocks. The bridge opened in June 1998, inside nightlights period 3 and yield period 4. | index | Blankespoor et al. (2021) replication package | |
div identifier | Division code | Administrative division: 1 Barisal, 2 Chittagong, 3 Dhaka, 4 Khulna, 5 Rajshahi. | Master administrative code. | code | Blankespoor et al. (2021) replication package | |
dist identifier | District code | District identifier. In the yield file this is the unit of observation (former district); elsewhere it is an upper-level grouping. | Master administrative code. | code | Blankespoor et al. (2021) replication package | |
pop continuous | Total population | Total population recorded in the census round. | Individual census records collapsed to the upazila. | persons | IPUMS International | |
emp continuous | Total employment | Total employed population — the denominator of the three sectoral shares. | Individual census records collapsed to the upazila. | persons | IPUMS International | |
pop_agr continuous | Employed in agriculture | Number employed in agriculture. Divided by emp it gives the agriculture share, which falls 1.3 percentage points on average and 5.7 points in the farthest distance band. | Individual census records collapsed to the upazila. | persons | IPUMS International | |
pop_ind continuous | Employed in industry | Number employed in industry and manufacturing. The share falls 1.2 percentage points in the long run — roughly a third of a 2.8 percent baseline sector. | Individual census records collapsed to the upazila. Logged as ln(pop_ind + 1) in the original code because some upazilas have very few industrial workers. | persons | IPUMS International | |
pop_serv continuous | Employed in services | Number employed in services — trading, transport and processing, the activities a region takes on when it starts shipping output. The share rises 2.4 percentage points in the long run. | Individual census records collapsed to the upazila. | persons | IPUMS International | |
density continuous | Population density | Population per square kilometre. This is the outcome that discriminates between the backwash and comparative-advantage theories: backwash requires it to fall, and it rises 5.9 percent in the long run. | Census population divided by upazila land area. Enters as ln(density). | persons per sq km | IPUMS International | |
pop91 continuous | Population in 1991 | Total population recorded in the 1991 census — a baseline characteristic fixed before the bridge. | Used in the propensity model and, interacted with the period index, as a control that lets initially-large units follow a different trajectory. | persons | IPUMS International | |
rainm continuous | Mean rainfall | Average monthly precipitation over the period. | Extracted at the upazila level from the NOAA PREC/L gridded reconstruction. Enters the regressions as ln(rainm + 1) for nightlights and ln(rainm) elsewhere. | cm per month | NOAA PREC/L | |
rainsd continuous | Rainfall variability | Standard deviation of monthly precipitation over the period — a control for weather risk, which matters directly for agricultural yield. | Extracted at the upazila level from NOAA PREC/L. Zero values become missing under the log transform, which is what removes 28 nightlights upazilas from the estimation sample. | cm per month | NOAA PREC/L | |
surban continuous | Urban share | Share of the upazila population classified as urban. | Census classification. Used descriptively rather than as a regression outcome. | share (0–1) | IPUMS International | |
prop_elec continuous | Household electrification | Proportion of households with electricity. | Census household records collapsed to the upazila. Used in the paper's Appendix Table AT.1 to establish that the Jamuna hinterland lagged the core before the bridge. | share (0–1) | IPUMS International | |
jamuna_m continuous | Distance to the Jamuna bridge | Crow-fly distance from the unit centroid to the Jamuna bridge foot. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
padma_m continuous | Distance to the Padma crossing | Crow-fly distance from the unit centroid to the planned Padma bridge site. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
treat dummy | Jamuna hinterland (treated) | 1 if the unit lies in the Jamuna hinterland, the region the bridge connected; 0 otherwise. | Assigned by geography: which side of which river the unit sits on. | 0/1 | Blankespoor et al. (2021) replication package | |
smp1 dummy | Estimation sample | Non-missing for the Jamuna and Padma hinterlands; MISSING for the Dhaka–Chittagong core. Filtering on non-missing is how the core is excluded from every regression. | Missing wherever treatd == 1. In the two DHS files there is no core, so this variable is numerically identical to treat. | 0/1 or missing | Blankespoor et al. (2021) replication package | |
treatd dummy | Core region (excluded) | 1 for the Dhaka–Chittagong core and adjacent areas. Used only for descriptive comparison in the paper's Appendix Table AT.1, never as a DiD comparison group. | The authors dropped core estimates from the published design after a referee pointed out that the Padma hinterland is not a valid comparison for the core. | 0/1 | Blankespoor et al. (2021) replication package |
Distribution & statistics (click a header to sort)
| Variable | Distribution | Coverage | N | Distinct | Min | Mean | Median | Max | SD |
|---|---|---|---|---|---|---|---|---|---|
geocode | – | 100% | 1,053 | 351 | — | — | — | — | — |
year | – | 100% | 1,053 | 3 | 1 | 2.0 | 2 | 3 | 0.82 |
div | – | 100% | 1,053 | 4 | — | — | — | — | — |
dist | – | 100% | 1,053 | 49 | — | — | — | — | — |
pop | 100% | 1,053 | 1,043 | 52,040 | 261,345 | 228,840 | 1,822,620 | 168,313 | |
emp | 100% | 1,053 | 990 | 10,330 | 67,734 | 55,230 | 904,940 | 63,372 | |
pop_agr | 100% | 1,053 | 965 | 120.0 | 40,508 | 37,960 | 119,820 | 20,137 | |
pop_ind | 100% | 1,053 | 525 | 20.00 | 6,495.2 | 1,490.0 | 559,860 | 27,013 | |
pop_serv | 100% | 1,053 | 871 | 1,130.0 | 20,731 | 12,070 | 505,800 | 37,803 | |
density | 100% | 1,053 | 1,052 | 106.6 | 2,877.2 | 904.3 | 135,492 | 11,235 | |
pop91 | 100% | 1,053 | 349 | 52,040 | 219,103 | 204,840 | 639,540 | 102,188 | |
rainm | 100% | 1,053 | 613 | 0 | 53.01 | 51.59 | 147.2 | 17.25 | |
rainsd | 100% | 1,053 | 613 | 0 | 50.94 | 47.93 | 152.7 | 17.20 | |
surban | 100% | 1,053 | 985 | 0 | 0.178 | 0.099 | 1.00 | 0.234 | |
prop_elec | 100% | 1,053 | 1,048 | 0 | 0.292 | 0.225 | 0.995 | 0.256 | |
jamuna_m | 100% | 1,053 | 354 | 8,421.7 | 130,068 | 121,193 | 281,563 | 59,284 | |
padma_m | 100% | 1,053 | 354 | 8,438.5 | 145,466 | 130,241 | 387,407 | 83,784 | |
treat | 100% | 1,053 | 2 | 0 | 0.350 | 0 | 1.00 | 0.477 | |
smp1 | 71% | 744 | 2 | 0 | 0.496 | 0 | 1.00 | 0.500 | |
treatd | 100% | 1,053 | 2 | 0 | 0.293 | 0 | 1.00 | 0.456 |
Variable dictionary
| Variable | Label | Definition | Construction | Units | Source | Coverage |
|---|---|---|---|---|---|---|
former_dis identifier | Former district | Old-district identifier used by the agricultural statistics, which were never re-issued on the modern district boundaries. | Value-labelled in the original .dta: 2 Barisal, 3 Bogra, 5 Comilla, 6 Dhaka, 7 Dinajpur, 8 Faridpur, 9 Jamalpur, 10 Jessore, 12 Khulna, 13 Kishoreganj, 14 Kushtia, 15 Mymensingh, 17 Pabna, 18 Patuakhali, 19 Rajshahi, 21 Rangpur, 23 Tangail. | code | Bangladesh Bureau of Statistics | |
dist identifier | District code | District identifier. In the yield file this is the unit of observation (former district); elsewhere it is an upper-level grouping. | Master administrative code. | code | Blankespoor et al. (2021) replication package | |
year year | Period index | Integer period index, NOT a calendar year. Nightlights: 1=1992-94, 2=1995-97, 3=1998-2000, 4=2001-04, 5=2005-07, 6=2008-10, 7=2011-13. Census: 1=1991, 2=2001, 3=2011. Yield: 1=1988-91, 2=1992-94, 3=1995-97, 4=1998-2000, 5=2001-04, 6=2005-07, 7=2008-10, 8=2011-13. DHS: 1=1994, 2=1996, 3=1997, 4=2003, 5=2007, 6=2011, 7=2013. | Annual satellite and yield series are averaged into three-year blocks to smooth transitory shocks. The bridge opened in June 1998, inside nightlights period 3 and yield period 4. | index | Blankespoor et al. (2021) replication package | |
div identifier | Division code | Administrative division: 1 Barisal, 2 Chittagong, 3 Dhaka, 4 Khulna, 5 Rajshahi. | Master administrative code. | code | Blankespoor et al. (2021) replication package | |
yld continuous | Boro rice yield | Yield of Boro rice, the dry-season irrigated crop that dominates Bangladeshi cereal production. | Annual district figures averaged into three-year blocks. Enters the regressions as ln(yld). | metric tons per hectare | Yearbook of Agricultural Statistics 2016, Bangladesh Bureau of Statistics | |
pop91 continuous | Population in 1991 | Total population recorded in the 1991 census — a baseline characteristic fixed before the bridge. | Used in the propensity model and, interacted with the period index, as a control that lets initially-large units follow a different trajectory. | persons | IPUMS International | |
rainm continuous | Mean rainfall | Average monthly precipitation over the period. | Extracted at the upazila level from the NOAA PREC/L gridded reconstruction. Enters the regressions as ln(rainm + 1) for nightlights and ln(rainm) elsewhere. | cm per month | NOAA PREC/L | |
rainsd continuous | Rainfall variability | Standard deviation of monthly precipitation over the period — a control for weather risk, which matters directly for agricultural yield. | Extracted at the upazila level from NOAA PREC/L. Zero values become missing under the log transform, which is what removes 28 nightlights upazilas from the estimation sample. | cm per month | NOAA PREC/L | |
jamuna_m continuous | Distance to the Jamuna bridge | Crow-fly distance from the unit centroid to the Jamuna bridge foot. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
padma_m continuous | Distance to the Padma crossing | Crow-fly distance from the unit centroid to the planned Padma bridge site. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
treat dummy | Jamuna hinterland (treated) | 1 if the unit lies in the Jamuna hinterland, the region the bridge connected; 0 otherwise. | Assigned by geography: which side of which river the unit sits on. | 0/1 | Blankespoor et al. (2021) replication package | |
smp1 dummy | Estimation sample | Non-missing for the Jamuna and Padma hinterlands; MISSING for the Dhaka–Chittagong core. Filtering on non-missing is how the core is excluded from every regression. | Missing wherever treatd == 1. In the two DHS files there is no core, so this variable is numerically identical to treat. | 0/1 or missing | Blankespoor et al. (2021) replication package | |
treatd dummy | Core region (excluded) | 1 for the Dhaka–Chittagong core and adjacent areas. Used only for descriptive comparison in the paper's Appendix Table AT.1, never as a DiD comparison group. | The authors dropped core estimates from the published design after a referee pointed out that the Padma hinterland is not a valid comparison for the core. | 0/1 | Blankespoor et al. (2021) replication package |
Distribution & statistics (click a header to sort)
| Variable | Distribution | Coverage | N | Distinct | Min | Mean | Median | Max | SD |
|---|---|---|---|---|---|---|---|---|---|
former_dis | – | 100% | 128 | 16 | — | — | — | — | — |
dist | – | 100% | 128 | 16 | — | — | — | — | — |
year | – | 100% | 128 | 8 | 1 | 4.5 | 4 | 8 | 2.30 |
div | – | 100% | 128 | 4 | — | — | — | — | — |
yld | 100% | 128 | 128 | 1.69 | 3.19 | 3.11 | 4.34 | 0.514 | |
pop91 | 100% | 128 | 16 | 40,047,630 | 102,477,270 | 86,247,420 | 274,866,060 | 54,053,932 | |
rainm | 100% | 128 | 128 | 31.18 | 53.05 | 50.49 | 91.71 | 12.07 | |
rainsd | 100% | 128 | 128 | 34.85 | 53.21 | 49.92 | 88.89 | 12.60 | |
jamuna_m | 100% | 128 | 16 | 30,268 | 127,428 | 117,739 | 246,981 | 61,405 | |
padma_m | 100% | 128 | 16 | 44,646 | 150,197 | 139,508 | 328,842 | 72,881 | |
treat | 100% | 128 | 2 | 0 | 0.312 | 0 | 1.00 | 0.465 | |
smp1 | 69% | 88 | 2 | 0 | 0.455 | 0 | 1.00 | 0.501 | |
treatd | 100% | 128 | 2 | 0 | 0.312 | 0 | 1.00 | 0.465 |
Variable dictionary
| Variable | Label | Definition | Construction | Units | Source | Coverage |
|---|---|---|---|---|---|---|
year year | Period index | Integer period index, NOT a calendar year. Nightlights: 1=1992-94, 2=1995-97, 3=1998-2000, 4=2001-04, 5=2005-07, 6=2008-10, 7=2011-13. Census: 1=1991, 2=2001, 3=2011. Yield: 1=1988-91, 2=1992-94, 3=1995-97, 4=1998-2000, 5=2001-04, 6=2005-07, 7=2008-10, 8=2011-13. DHS: 1=1994, 2=1996, 3=1997, 4=2003, 5=2007, 6=2011, 7=2013. | Annual satellite and yield series are averaged into three-year blocks to smooth transitory shocks. The bridge opened in June 1998, inside nightlights period 3 and yield period 4. | index | Blankespoor et al. (2021) replication package | |
Cluster identifier | Survey cluster (village) | DHS primary sampling unit — effectively a village. The unit of observation in both DHS files. | DHS survey variable. | code | The DHS Program | |
Division identifier | Division (DHS) | Administrative division as coded in the DHS files: 1 Barisal, 2 Chittagong, 3 Dhaka, 4 Khulna, 5 Rajshahi, 6 Sylhet. | DHS survey variable. | code | The DHS Program | |
District identifier | District (DHS) | District identifier in the DHS files. This is the clustering and fixed-effect level for the public-goods placebo, because upazila identifiers are not released for survey rounds before 2003. | DHS survey variable. | code | The DHS Program | |
rural dummy | Rural village | 1 if the survey cluster is rural. Entered as a control in the household regression because it dominates every service-access outcome. | DHS survey variable. | 0/1 | The DHS Program | |
female continuous | Share female | Share of the village population that is female. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
age5 continuous | Share under 5 | Share of the village population below five years of age. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
age60 continuous | Share over 60 | Share of the village population above sixty. Significantly lower in the Jamuna hinterland before the bridge — one of the demographic imbalances the paper acknowledges. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
Age continuous | Mean age | Average age of household members in the village. | DHS household records averaged to the survey cluster. | years | The DHS Program | |
hsize continuous | Average household size | Mean number of members per household in the village. | DHS household records averaged to the survey cluster. | persons | The DHS Program | |
DrinkWater continuous | Piped water | Share of households with piped drinking water. One of the few pre-bridge characteristics on which the two hinterlands differ significantly. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
Toilet continuous | Flush toilet | Share of households with a flush toilet. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
Electricity continuous | Access to electricity | Share of households in the village with electricity — the one household-questionnaire outcome carried into the paper's published Table 3. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
Floor continuous | Cement floor | Share of households with a cement floor — a standard asset proxy. Missing for 183 rows. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
Roof continuous | Cement or corrugated roof | Share of households with a cement or corrugated-iron roof. | DHS household records averaged to the survey cluster. | share (0–1) | The DHS Program | |
padma_m continuous | Distance to the Padma crossing | Crow-fly distance from the unit centroid to the planned Padma bridge site. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
jamuna_m continuous | Distance to the Jamuna bridge | Crow-fly distance from the unit centroid to the Jamuna bridge foot. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
treat dummy | Jamuna hinterland (treated) | 1 if the unit lies in the Jamuna hinterland, the region the bridge connected; 0 otherwise. | Assigned by geography: which side of which river the unit sits on. | 0/1 | Blankespoor et al. (2021) replication package | |
smp1 dummy | Estimation sample | Non-missing for the Jamuna and Padma hinterlands; MISSING for the Dhaka–Chittagong core. Filtering on non-missing is how the core is excluded from every regression. | Missing wherever treatd == 1. In the two DHS files there is no core, so this variable is numerically identical to treat. | 0/1 or missing | Blankespoor et al. (2021) replication package | |
yr dummy | Post-bridge (DHS) | 1 for survey rounds after the bridge opened (2003 onward); 0 for 1994, 1996 and 1997. | Pre-coded in the DHS source files. | 0/1 | Blankespoor et al. (2021) replication package |
Distribution & statistics (click a header to sort)
| Variable | Distribution | Coverage | N | Distinct | Min | Mean | Median | Max | SD |
|---|---|---|---|---|---|---|---|---|---|
year | – | 100% | 1,543 | 7 | 1 | 4.6 | 5 | 7 | 2.03 |
Cluster | – | 100% | 1,543 | 738 | — | — | — | — | — |
Division | – | 100% | 1,543 | 4 | — | — | — | — | — |
District | – | 100% | 1,543 | 37 | — | — | — | — | — |
rural | 100% | 1,543 | 2 | 0 | 0.721 | 1.00 | 1.00 | 0.448 | |
female | 100% | 1,543 | 838 | 0.356 | 0.493 | 0.494 | 0.597 | 0.035 | |
age5 | 100% | 1,543 | 832 | 0 | 0.130 | 0.127 | 0.296 | 0.036 | |
age60 | 100% | 1,543 | 796 | 0 | 0.075 | 0.072 | 0.196 | 0.032 | |
Age | 100% | 1,543 | 1,515 | 18.67 | 26.03 | 25.89 | 35.50 | 3.00 | |
hsize | 100% | 1,543 | 1,427 | 3.81 | 6.86 | 6.10 | 16.96 | 2.18 | |
DrinkWater | 100% | 1,543 | 131 | 0 | 0.032 | 0 | 1.00 | 0.114 | |
Toilet | 100% | 1,543 | 254 | 0 | 0.119 | 0.036 | 1.00 | 0.199 | |
Electricity | 100% | 1,543 | 366 | 0 | 0.419 | 0.379 | 1.00 | 0.356 | |
Floor | 88% | 1,360 | 311 | 0 | 0.198 | 0.087 | 1.00 | 0.261 | |
Roof | 100% | 1,543 | 275 | 0 | 0.832 | 0.973 | 1.00 | 0.263 | |
padma_m | 100% | 1,543 | 37 | 26,181 | 162,884 | 130,868 | 361,794 | 79,584 | |
jamuna_m | 100% | 1,543 | 37 | 25,424 | 151,863 | 153,130 | 247,795 | 59,357 | |
treat | 100% | 1,543 | 2 | 0 | 0.472 | 0 | 1.00 | 0.499 | |
smp1 | 100% | 1,543 | 2 | 0 | 0.472 | 0 | 1.00 | 0.499 | |
yr | 100% | 1,543 | 2 | 0 | 0.685 | 1.00 | 1.00 | 0.465 |
Variable dictionary
| Variable | Label | Definition | Construction | Units | Source | Coverage |
|---|---|---|---|---|---|---|
year year | Period index | Integer period index, NOT a calendar year. Nightlights: 1=1992-94, 2=1995-97, 3=1998-2000, 4=2001-04, 5=2005-07, 6=2008-10, 7=2011-13. Census: 1=1991, 2=2001, 3=2011. Yield: 1=1988-91, 2=1992-94, 3=1995-97, 4=1998-2000, 5=2001-04, 6=2005-07, 7=2008-10, 8=2011-13. DHS: 1=1994, 2=1996, 3=1997, 4=2003, 5=2007, 6=2011, 7=2013. | Annual satellite and yield series are averaged into three-year blocks to smooth transitory shocks. The bridge opened in June 1998, inside nightlights period 3 and yield period 4. | index | Blankespoor et al. (2021) replication package | |
Cluster identifier | Survey cluster (village) | DHS primary sampling unit — effectively a village. The unit of observation in both DHS files. | DHS survey variable. | code | The DHS Program | |
Division identifier | Division (DHS) | Administrative division as coded in the DHS files: 1 Barisal, 2 Chittagong, 3 Dhaka, 4 Khulna, 5 Rajshahi, 6 Sylhet. | DHS survey variable. | code | The DHS Program | |
District identifier | District (DHS) | District identifier in the DHS files. This is the clustering and fixed-effect level for the public-goods placebo, because upazila identifiers are not released for survey rounds before 2003. | DHS survey variable. | code | The DHS Program | |
Urban continuous | Settlement type | Village classification: 1 rural area, 2 SMA, 3 municipality area, 4 other urban. | DHS village questionnaire. | code | The DHS Program | |
grameen_bank continuous | Grameen Bank present | Whether the village has a Grameen Bank branch — a genuine presence indicator. | DHS village questionnaire. Note that the raw variable carries an occasional code 9, so the mean exceeds a clean 0/1 share. | 0/1 | The DHS Program | |
co_operative_soc dummy | Cooperative society present | Whether the village has a cooperative society. Its true short-run estimate is 0.090 (0.108); the published Table 3 prints 0.420, which is in fact the post_office coefficient — see section 18.2 of the companion post. | DHS village questionnaire. | 0/1 | The DHS Program | |
madrassa_school continuous | Distance to madrassa | Distance from the village to the nearest madrassa school. | DHS village questionnaire. | miles | The DHS Program | |
primary_school continuous | Distance to primary school | Distance from the village to the nearest primary school. | DHS village questionnaire. | miles | The DHS Program | |
high_school continuous | Distance to high school | Distance from the village to the nearest high school. Its long-run estimate of +0.535 (0.290) is the only marginally significant coefficient among the 21 public-goods tests — and it has the wrong sign for the political-economy story, since it says schools got farther away. | DHS village questionnaire. | miles | The DHS Program | |
post_office continuous | Distance to post office | Distance to the nearest post office. NOTE: filed under 'Presence of' in the paper's published Table 3, but labelled as a distance in the source data. | DHS village questionnaire. | miles | The DHS Program | |
cinema continuous | Distance to cinema | Distance to the nearest cinema. Like post_office, filed under 'Presence of' in the published table but a distance in the data. | DHS village questionnaire. | miles | The DHS Program | |
dist_Thana continuous | Distance to thana headquarters | Distance from the village to the thana (police-subdistrict) headquarters. Non-missing for only 559 rows. | DHS village questionnaire, reported in miles. | miles | The DHS Program | |
dist_district continuous | Distance to district headquarters | Distance from the village to the district headquarters. Non-missing for 618 rows. | DHS village questionnaire, reported in miles. | miles | The DHS Program | |
NGO dummy | Income-generating NGO present | Whether an income-generating NGO operates in the village. Non-missing for only 413 rows, and the treatment terms are dropped for collinearity in the placebo regression. | DHS village questionnaire. | 0/1 | The DHS Program | |
dist_satellite_clinic continuous | Distance to satellite clinic | Distance to the nearest satellite health clinic. The sparsest variable in the file, non-missing for only 398 rows. | DHS village questionnaire. | miles | The DHS Program | |
padma_m continuous | Distance to the Padma crossing | Crow-fly distance from the unit centroid to the planned Padma bridge site. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
jamuna_m continuous | Distance to the Jamuna bridge | Crow-fly distance from the unit centroid to the Jamuna bridge foot. | Computed in ArcGIS from upazila-level shapefiles for Bangladesh. | metres | Blankespoor et al. (2021), from Bangladesh shapefiles | |
treat dummy | Jamuna hinterland (treated) | 1 if the unit lies in the Jamuna hinterland, the region the bridge connected; 0 otherwise. | Assigned by geography: which side of which river the unit sits on. | 0/1 | Blankespoor et al. (2021) replication package | |
smp1 dummy | Estimation sample | Non-missing for the Jamuna and Padma hinterlands; MISSING for the Dhaka–Chittagong core. Filtering on non-missing is how the core is excluded from every regression. | Missing wherever treatd == 1. In the two DHS files there is no core, so this variable is numerically identical to treat. | 0/1 or missing | Blankespoor et al. (2021) replication package | |
yr dummy | Post-bridge (DHS) | 1 for survey rounds after the bridge opened (2003 onward); 0 for 1994, 1996 and 1997. | Pre-coded in the DHS source files. | 0/1 | Blankespoor et al. (2021) replication package | |
dist_hos continuous | Distance to hospital | Distance from the village to the nearest hospital. | DHS village questionnaire. | miles | The DHS Program |
Distribution & statistics (click a header to sort)
| Variable | Distribution | Coverage | N | Distinct | Min | Mean | Median | Max | SD |
|---|---|---|---|---|---|---|---|---|---|
year | – | 100% | 1,455 | 7 | 1 | 4.7 | 5 | 7 | 2.00 |
Cluster | – | 100% | 1,454 | 658 | — | — | — | — | — |
Division | – | 100% | 1,455 | 4 | — | — | — | — | — |
District | – | 100% | 1,455 | 41 | — | — | — | — | — |
Urban | 80% | 1,159 | 5 | 1.00 | 1.44 | 1.00 | 5.00 | 0.800 | |
grameen_bank | 100% | 1,449 | 4 | 0 | 0.915 | 1.00 | 9.00 | 0.593 | |
co_operative_soc | 100% | 1,448 | 2 | 0 | 0.546 | 1.00 | 1.00 | 0.498 | |
madrassa_school | 89% | 1,297 | 17 | 0 | 1.07 | 0 | 13.00 | 1.59 | |
primary_school | 89% | 1,292 | 14 | 0 | 0.310 | 0 | 45.00 | 1.93 | |
high_school | 90% | 1,303 | 19 | 0 | 1.33 | 1.00 | 30.00 | 1.95 | |
post_office | 90% | 1,307 | 18 | 0 | 1.45 | 1.00 | 20.00 | 1.66 | |
cinema | 90% | 1,306 | 61 | 0 | 7.93 | 5.00 | 90.00 | 10.00 | |
dist_Thana | 38% | 559 | 33 | 0 | 7.08 | 6.00 | 40.00 | 5.64 | |
dist_district | 42% | 618 | 74 | 0 | 19.68 | 17.00 | 92.00 | 15.36 | |
NGO | 28% | 413 | 2 | 0 | 0.613 | 1.00 | 1.00 | 0.488 | |
dist_satellite_clinic | 27% | 398 | 12 | 0 | 1.64 | 1.00 | 18.00 | 1.89 | |
padma_m | 100% | 1,455 | 41 | 26,181 | 153,883 | 130,868 | 361,794 | 69,938 | |
jamuna_m | 100% | 1,455 | 41 | 25,424 | 154,891 | 158,347 | 247,795 | 61,282 | |
treat | 100% | 1,455 | 2 | 0 | 0.464 | 0 | 1.00 | 0.499 | |
smp1 | 100% | 1,455 | 2 | 0 | 0.464 | 0 | 1.00 | 0.499 | |
yr | 100% | 1,455 | 2 | 0 | 0.705 | 1.00 | 1.00 | 0.456 | |
dist_hos | 99% | 1,440 | 19 | 0 | 1.20 | 0 | 18.00 | 2.64 |
Known limitations & caveats
- year is a period index, not a calendar year. Nightlights and yields are averaged into three-year blocks. The mapping is in the
yearrow of each dataset below. Because the controls interact baseline traits with this index, substituting calendar years changes every coefficient. - smp1 is the sample filter, and it is deliberately missing. It is missing for the Dhaka–Chittagong core region (
treatd == 1), which is neither treated nor a credible comparison. Filtering onsmp1.notna()is how the core is excluded from every regression. In the two DHS files there is no core, sosmp1is identical totreat. - Distances are to the relevant crossing.
mdist = min(jamuna_m, padma_m)gives each upazila its distance to the Jamuna bridge if it is in the treated hinterland, or to the planned Padma crossing if it is in the comparison hinterland. It is not distance to a single point. - The yield panel is very thin. Sixteen former districts, of which eleven enter the estimation and nine survive the negative-weight drop. Cluster-robust inference with nine clusters is fragile; treat the yield magnitudes as indicative.
- The census panel has one pre-bridge year. Only 1991 precedes the bridge, so no pre-trend test is possible for population density or the employment shares — only a level-balance test. This includes the density variable that settles the paper's theoretical question.
- Village-questionnaire columns named like presence indicators are often distances.
post_officeandcinemaare labelled as distances in the original Stata data despite being filed under “Presence of” in the published table.grameen_bank,co_operative_socandNGOare genuine presence dummies. - Missingness is heavy in the village file.
dist_satellite_clinic(398 non-missing),NGO(413),dist_Thana(559) anddist_district(618) are far from complete, which is why the public-goods regressions have wildly different sample sizes. - These are the authors' data, unchanged. Values are byte-faithful to the original
.dtafiles; only the format and the column selection differ. Any error in the source data is preserved here.