DOI: 10.5281/zenodo.17239176
title: Weakening Luxury Effect (1990–2023): Datasets

description: Luxury Effect (1990–2023): Datasets

DOI (data): 10.5281/zenodo.17239176DOI (code): 10.5281/zenodo.17203136

This archive provides the spatial and tabular inputs used in The Luxury Effect Is Weakening: Equity Convergence in 87 U.S. Cities (1990–2023). It supports rebuilding tract→city panels, computing city-year “luxury effect” metrics (income–NDVI / income–LST, per $10k), constructing long-term trend features, and running the equity/tail analyses described in the manuscript and companion code.

If you’re using the companion MATLAB workflows, see the Quick start below for which folders you need for which steps.



Contents at a glance





CITY_BOUNDARIES_LUXURY_EFFECT_STUDY.gpkgCanonical city polygons (North America Albers Equal Area Conic, WKID: 102008).• 104 cities originally digitized (1990 footprints) → 87 valid analysis cities after quality filters and CONUS restriction.• Boundaries were manually created in Google Earth Engine from 1990 Landsat imagery, except for large cities/unchanged limits (e.g., NYC, LA) which use official boundaries.




NEW_MAT_TABLES.zip (Minimum data for most of the analysis)Harmonized U.S. Census–derived CSVs for 1990, 2000, 2010, 2020, 2023.Used to build tract-level city panels, compute city-year luxury effect and vegetative cooling, and derive per-city means/medians and trends.




LUXURY_NATL_FINAL/ (Optional; for predictor enrichment and Fig. 2 & 5)Additional CSV tables with climate and NHGIS covariates for city-level modeling (trend features and elastic-net / PDP figures). Only needed for the predictor-enriched Step 3 and for FIG_2_and_5_pdp_two_row.m.




City_Preliminary_Vars.csvFour columns for the 87 valid analysis cities: latitude, longitude, Biome, Köppen class. Required by Step 2 (predictor tables) and downstream bioclimate analyses.





File formats & schema





Spatial: GeoPackage (.gpkg), N. America Albers Equal Area Conic, WKID: 102008 (EPSG common alias). Geometry: city polygons; attributes include harmonized city names/IDs.




Tabular: CSV (UTF-8; headers on row 1). Long format by City × Tract × Year or City × Year, depending on table. Common fields include:





City, TractID (for tract tables), Year




Outcomes: MEAN_NDVI, MEDIAN_NDVI, MEAN_LST, MEDIAN_LST




Income: RAW_INCOME, RAW_INCOME_CPI (CPI-deflated to constant $)




Coverage/quality: PCT_OVERLAP (valid Landsat coverage share), POP_DENSITY




Other harmonized predictors (NHGIS + climate) in LUXURY_NATL_FINAL





A minimal data dictionary is provided in /metadata/variables.csv (name, description, units, and source) if present. Variable names are consistent with the MATLAB scripts (e.g., RAW_INCOME_CPI, MEAN_NDVI, PCT_OVERLAP).



Quality filters & study years





Study years: 1990, 2000, 2010, 2020, 2023 (primary analysis years).




Core tract filters (applied in the pipeline):





PCT_OVERLAP ≥ 50% (Landsat valid pixels within 1990 city boundary)




Non-zero / non-missing POP_DENSITY and RAW_INCOME_CPI




At least 5 valid tracts per city-year for a city to be retained






After filters and restricting to the conterminous U.S., 87 cities were retained for analysis (from the original 104).The boundary file still contains all 104 so you can extend or replicate variations.





How these data map to the MATLAB steps

The companion code (DOI 10.5281/zenodo.17203136) contains a four-step pipeline. Here’s what you need from this dataset for each step:

Minimal workflow (most analyses & figures)

Use only:





NEW_MAT_TABLES.zip




City_Preliminary_Vars.csv




(Optionally the GeoPackage if you want spatial joins/plots)



Run in MATLAB R2024b:





Step1_build_census_tables.m→ Builds CENSUS_TABLES_rebuilt and CityListMaster.→ Applies tract filters in code (overlap, pop, income) and keeps cities with ≥5 valid tracts per year.




Step2_build_predictor_tables_from_census.m→ Aggregates to city-year; computes luxury effect (income–NDVI/LST per $10k) and vegetative cooling (NDVI→LST).→ Creates A_HYPO_MEANS, A_HYPO_MEDIANS, A_HYPO_MEANS_TEMPORAL, A_HYPO_MEDIANS_TEMPORAL, LUX_MEAN_T, LUX_MEDN_T, luxMEAN_byCity, luxMEDN_byCity.→ Introduces inter-urban income metrics: incZ_among_cities, incZ_among_cities_2023.




Step4_equity_build_and_analyze.m→ Constructs tail-based equity panels and fits LMEs + OLS checks; outputs equity_city_changes.csv with both OLS and LME deltas (plus NDVI_Balance and NDVI_Mechanism).





With just NEW_MAT_TABLES.zip + City_Preliminary_Vars.csv, you can run everything except the predictor-enriched Fig. 2 & 5 workflow and the elastic-net regressions.


Full workflow (predictors + Fig. 2 & 5)

Add:





LUXURY_NATL_FINAL/ (climate + NHGIS predictor CSVs)




CITY_BOUNDARIES_LUXURY_EFFECT_STUDY.gpkg (for spatial context if needed)



Then also run:3. Step3_update_predictors_with_external_dataset_and_LME.m→ Joins climate + NHGIS predictors to the A_HYPO_* tables.→ Builds trend features (OLS slopes 1990–2023) with overwrite-safe naming (TRENDS_* for slopes; MEAN_* copied from long-term means).→ Recomputes LME-based luxury-effect trend; creates Z-scored tables.→ Required for FIG_2_and_5_pdp_two_row.m (elastic-net + PDP).



Note: downstream scripts re-fit the LME slopes for reproducibility; they don’t depend on Step 3’s saved values.




Provenance & processing notes





Boundaries: Derived from 1990 Landsat (GEE) to represent stable urban footprints for 1990–2023; official limits used for large/unchanged cities.




Income: CPI-deflated (RAW_INCOME_CPI) before computing any luxury-effect slopes.




Coverage: PCT_OVERLAP quantifies usable Landsat coverage per tract within 1990 boundaries; thresholds are enforced in code.




Greenness/temperature: NDVI and LST are aggregated per tract and year; mean and median provided for robustness.




Metadata: City name harmonization and variable dictionaries included in /metadata where available.





Quick start (minimal)





Download NEW_MAT_TABLES.zip and City_Preliminary_Vars.csv from this Zenodo record.




Place them in your local data/ folder.




Clone the code repository (DOI 10.5281/zenodo.17203136).




In MATLAB R2024b, run:





Step1_build_census_tables




Step2_build_predictor_tables_from_census




Step4_equity_build_and_analyze






Use the analysis/figure scripts as needed (see the code repo’s README).



For Fig. 2 & 5 and predictor regressions, also download the LUXURY_NATL_FINAL/ directory and run Step 3.



Integrity & reproducibility tips





Folder paths: In Steps 1 and 3, edit baseDir to point to where you placed these Zenodo files locally.




CRS: When joining spatial data, ensure your layers are in WKID 102008 (North America Albers EAC).




Naming consistency: Scripts expect variables like RAW_INCOME_CPI, MEAN_NDVI, MEAN_LST, PCT_OVERLAP.




City lists: CityListMaster (produced by Step 1) enumerates the 87 valid cities used in the manuscript; the GeoPackage includes all 104 for extended work.




Checksums: If you mirror this archive, consider publishing checksums (e.g., SHA-256) to verify file integrity.





License & citation





Data license: CC BY 4.0 (see Zenodo license).




Please cite both the dataset and the software:



Data:



Luxury Effect (1990–2023): Datasets. Zenodo. https://doi.org/10.5281/zenodo.17239176


Software (MATLAB workflows):



Urban Luxury Effect & Equity Analysis — MATLAB workflows (R2024b). Zenodo. https://doi.org/10.5281/zenodo.17203136


If you use individual components (e.g., NHGIS or climate inputs) in isolation, please also cite their original sources per their terms.



Support & issues





Reproduction questions or data quirks: open an issue in the GitHub repo linked from the software DOI.




For boundary edits or additional cities, the provided GeoPackage can serve as a starting point; downstream scripts are robust to super-sets of the 87-city core as long as coverage filters are met.