↖ CPA Weather Lab

Pennsylvania Station Overlap, Infill, Raw-Source, and Neighbor-Coherence Audit

Generated: 2026-07-23 18:27 UTC
Supplied data period: 2003-01-01 through 2026-07-22
Primary enriched source: PACLIMATE / PA long-term climate daily export
Raw comparison sources in archive: PA COOP and PA ASOS daily exports

Executive findings

The supplied PACLIMATE export contains 1,662,132 station-days across 271 station identities. Temperature is marked estimated on 503,887 days (30.3%). This is a major component of the product, not a marginal patch: 68 identities are 100% estimated, and another 18 are more than 90% estimated. Together, station identities above 90% estimation account for 76.9% of all estimated temperature days.

The archive also contains non-independent identities. 11 statewide or climate-division records are spatial summaries whose coordinates are centroids rather than instruments. 9 airport-area aliases duplicate specific airport records and were collapsed. The physical neighbor analysis therefore uses 251 canonical sites, not all 271 labels.

Raw matching found 135 statistically and spatially validated station pairs: 109 COOP and 26 ASOS. On PACLIMATE days flagged as source-observed, the enriched values reproduce supplied raw data almost exactly. On days flagged estimated even when a supplied raw value exists, differences are much larger, which means those raw observations were probably partial, rejected, differently timed, or otherwise not accepted by the source workflow. They should not be restored blindly.

The most consequential neighbor result is counterintuitive: estimated-involved pairs are less coherent, not more coherent, in every one of the eight radiation × wind × soil-moisture regimes. Averaged across regimes, both-observed pairs have anomaly correlation higher by 0.034, daily-change correlation higher by 0.054, and estimated-involved pairs have anomaly MAE wider by 0.298 °F. The infill is therefore not simply cloning nearby stations into suspicious perfection.

1. What the archive contains

The five changeme*.txt files form one enriched PACLIMATE daily table. The files are time chunks, not competing versions. Their fields include daily highs/lows, source-provided estimate flags, precipitation, multiple gridded solar-radiation products, and gridded soil temperature/moisture products.

The coop*.txt files contain raw cooperative-observer daily reports. The daily*.txt files contain PA ASOS and other network summaries; only ASOS was used for direct raw-temperature matching and the statewide wind proxy. The networks*.txt files supply station coordinates, names, elevations, and network membership.

2. Scope of temperature and precipitation infill

year station_days stations temp_estimated_days precip_estimated_days temp_est_pct precip_est_pct
2003 88534 245 36466 15476 41.19 17.48
2004 87628 241 34927 14730 39.86 16.81
2005 86450 240 33739 13983 39.03 16.17
2006 84769 234 31443 12842 37.09 15.15
2007 84388 235 31928 13161 37.83 15.60
2008 82804 228 28767 12124 34.74 14.64
2009 81087 225 27215 11331 33.56 13.97
2010 79881 224 26248 10789 32.86 13.51
2011 78152 217 25261 11207 32.32 14.34
2012 75171 215 23453 11484 31.20 15.28
2013 72909 206 20977 10298 28.77 14.12
2014 70784 197 19590 9484 27.68 13.40
2015 70483 195 19484 9805 27.64 13.91
2016 69344 193 17413 8337 25.11 12.02
2017 68439 190 17576 8418 25.68 12.30
2018 64125 183 16379 8519 25.54 13.28
2019 61928 170 14743 8025 23.81 12.96
2020 61390 170 15668 9054 25.52 14.75
2021 59193 163 15320 8342 25.88 14.09
2022 58009 161 14681 9084 25.31 15.66
2023 49640 136 7559 6955 15.23 14.01
2024 49776 136 8202 7740 16.48 15.55
2025 49640 136 9714 9479 19.57 19.10
2026 27608 136 7134 7131 25.84 25.83

Stations most dependent on temperature infill

station station_name start_date end_date station_days temp_estimated_days temp_est_pct
PA1737 CONSHOHOCKEN 2003-01-01 00:00:00 2026-07-22 00:00:00 8604 8604 100.00
PA6955 PINE GROVE FURNACE 2003-01-01 00:00:00 2026-07-22 00:00:00 8604 8604 100.00
PA1833 COVINGTON 2 WSW 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA3130 GALETON 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA3293 GLENCOE 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA3321 GLENMOORE 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA6289 NEW PARK 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA6310 NEW STANTON 1 SW 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA6681 PALM 3 SE 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA8379 SPRING GROVE 2003-01-01 00:00:00 2022-12-31 00:00:00 7305 7305 100.00
PA8763 TAMAQUA 4 N DAM 2003-01-01 00:00:00 2022-01-31 00:00:00 6971 6971 100.00
PA5956 MORGANTOWN 2003-01-01 00:00:00 2022-01-19 00:00:00 6959 6959 100.00
PA4019 HOLTWOOD 2003-01-01 00:00:00 2020-12-31 00:00:00 6575 6575 100.00
PA1806 COUDERSPORT 4 NW 2003-01-01 00:00:00 2018-10-18 00:00:00 5770 5770 100.00
PA4385 JOHNSTOWN 2003-01-01 00:00:00 2018-10-18 00:00:00 5770 5770 100.00
PA5817 MILLVILLE 2 SW 2003-01-01 00:00:00 2018-10-18 00:00:00 5770 5770 100.00
PA8057 SHICKSHINNY 3 N 2003-01-01 00:00:00 2018-08-31 00:00:00 5722 5722 100.00
PA6126 MYERSTOWN 2003-01-01 00:00:00 2017-09-30 00:00:00 5387 5387 100.00
PA6241 NEW MILFORD 5 W 2009-05-01 00:00:00 2022-10-16 00:00:00 4917 4917 100.00
PA7735 SAGAMORE 2003-01-01 00:00:00 2016-02-01 00:00:00 4780 4780 100.00
PA0482 BEAVERTOWN 1 NE 2003-01-01 00:00:00 2015-10-31 00:00:00 4687 4687 100.00
PA2671 EQUINUNK 2003-01-01 00:00:00 2015-10-14 00:00:00 4670 4670 100.00
PA1977 CUSTER CITY 2003-01-01 00:00:00 2015-05-19 00:00:00 4522 4522 100.00
PA0821 BOSWELL 2003-01-01 00:00:00 2015-04-30 00:00:00 4503 4503 100.00
PA4047 HONEY BROOK 2 SSE 2003-01-01 00:00:00 2014-10-16 00:00:00 4307 4307 100.00

A 100% estimated station identity does not necessarily mean the station never existed. It means every day present in this particular PACLIMATE extract carries the source estimate flag. Some are long-discontinued stations extended synthetically; some are area products or aggregates; and some may reflect source-side QC or identity transitions. The flag documents status, not the exact algorithm used to create each value.

Original figure unavailable in the current source package.Annual infill

Original figure unavailable in the current source package.Station infill distribution

Original figure unavailable in the current source package.Station infill map

3. Station overlap and identity cleanup

The canonicalization rules are deliberately conservative. State/climate-division aggregates were excluded from instrument geometry. Airport aliases were removed only after confirming their high/low series are exact or effectively exact copies of named airport records.

Verified alias mapping

alias_station alias_name canonical_station canonical_name distance_km overlap_days exact_high_low_days exact_high_low_pct
PATABE Allentown Area PA0106 ALLENTOWN AP 0.000 8604 8603 99.988
PATAVP Avoca Area PA9705 WILKES BARRE WSO AP 0.687 8604 8604 100.000
PATERI Erie Area PA2682 ERIE WSO AP 0.206 8604 8604 100.000
PATIPT Williamsport Area PA9728 Williamsport Airport 0.033 8604 8604 100.000
PATMDT Middletown-Harrisburg Area PA5703 Harrisburg Airport 0.833 8604 8604 100.000
PATMPO Mount Pocono Area PA7041 POCONO MOUNTAINS MUNICIPAL AIRPORT 0.303 8604 8604 100.000
PATPHL Philadelphia Area PA6889 PHILADELPHIA INTL AP 0.000 8604 8604 100.000
PATPIT Pittsburgh Area PA6993 PITTSBURGH ASOS 1.738 8604 8604 100.000
PATRDG Reading Area PA7315 Reading Airport 0.762 8604 8604 100.000

Closest internal station pairs

station_a name_a station_b name_b distance_km overlap_days tmean_corr tmean_mae_f exact_high_low_pct
PA7312 RAYSTOWN LAKE 2 PA7313 RAYSTOWN HQ 0.014 3014 0.996 0.839 45.156
PA9728 Williamsport Airport PATIPT Williamsport Area 0.033 8604 1.000 0.000 100.000
PA4076 HOPEWELL MORGANTOWN PA5956 MORGANTOWN 0.143 1052 0.989 1.074 74.240
PA6880 PHILADELPHIA AIRPORT SNOW PA6889 PHILADELPHIA INTL AP 0.196 4140 0.997 2.401 1.135
PA6880 PHILADELPHIA AIRPORT SNOW PATPHL Philadelphia Area 0.196 4140 0.997 2.401 1.135
PA2682 ERIE WSO AP PATERI Erie Area 0.206 8604 1.000 0.000 100.000
PA7041 POCONO MOUNTAINS MUNICIPAL AIRPORT PATMPO Mount Pocono Area 0.303 8604 1.000 0.000 100.000
PA6055 Mount Pocono PA7041 POCONO MOUNTAINS MUNICIPAL AIRPORT 0.322 942 0.963 5.083 0.531
PA6055 Mount Pocono PATMPO Mount Pocono Area 0.436 942 0.963 5.083 0.531
PA9705 WILKES BARRE WSO AP PATAVP Avoca Area 0.687 8604 1.000 0.000 100.000
PA7315 Reading Airport PATRDG Reading Area 0.762 8604 1.000 0.000 100.000
PA5703 Harrisburg Airport PATMDT Middletown-Harrisburg Area 0.833 8604 1.000 0.000 100.000
PA6993 PITTSBURGH ASOS PATPIT Pittsburgh Area 1.738 8604 1.000 0.000 100.000
PA3343 GLENWILLARD DASHIELDS LOCK AND DAM PA5918 MOON TOWNSHIP 2.122 5774 0.989 2.676 1.160
PA2215 DOWNINGTOWN 3 SE PA9464 WEST CHESTER 2 NW 2.740 258 0.970 3.831 0.775
PA1749 COOKSBURG RIVER PA1751 COOKSBURG 2 NW 2.881 1815 0.999 0.064 98.623
PA1377 CHARLEROI LOCK 4 PA2190 DONORA 1 SW 3.106 8604 0.979 2.577 2.232
PA3698 HARRISBURG 1 NE PA3706 HARRISBURG RIVER GAGE 3.271 259 0.968 3.900 1.931
PA2221 DOYLESTOWN PA2222 DOYLESTOWN AIRPORT 3.474 5468 0.961 3.660 1.957
PA6111 MURRYSVILLE 2 SW PAC009 Pennsylvania - Southwest Plateau Climate Division 3.765 8604 0.976 3.188 0.848

Close proximity alone is not enough to declare duplication. Raystown Lake 2 and Raystown HQ, for example, are only metres apart and move almost identically, but their values are not exact. Philadelphia Airport Snow and Philadelphia International Airport are nearly colocated and highly correlated, yet retain a substantial mean difference. These are neighboring records, not interchangeable identities.

4. Comparison with supplied raw station data

A candidate raw match had to be within 2 km. It was accepted only when both observed high and low had at least 100 overlapping days, MAE at or below 0.5 °F, and correlation at or above 0.995. When multiple matches passed for one PACLIMATE identity, the lowest-error match was retained.

Pooled agreement

raw_network status variable n mae_f bias_f exact_pct within_1f_pct within_2f_pct
ALL source_estimated high 8589 9.562 6.611 8.488 19.583 28.129
ALL source_estimated low 6955 3.175 -1.885 43.825 52.696 60.244
PA_ASOS source_estimated high 507 2.982 0.922 16.963 50.099 68.245
PA_ASOS source_estimated low 508 3.331 0.761 32.480 62.402 71.260
PA_COOP source_estimated high 8082 9.975 6.968 7.956 17.669 25.612
PA_COOP source_estimated low 6447 3.163 -2.094 44.718 51.931 59.376
ALL source_observed high 886854 0.012 -0.001 98.322 99.818 99.934
ALL source_observed low 886818 0.015 0.000 98.240 99.773 99.899
PA_ASOS source_observed high 223126 0.045 0.001 93.389 99.330 99.782
PA_ASOS source_observed low 223126 0.055 -0.004 93.078 99.158 99.655
PA_COOP source_observed high 663728 0.001 -0.001 99.980 99.982 99.985
PA_COOP source_observed low 663692 0.002 0.002 99.976 99.979 99.981

Original figure unavailable in the current source package.Raw agreement

For directly matched COOP records, 86.8% of estimated days have both supplied raw high and low missing. That is strong evidence that COOP infill is mainly filling genuine gaps in the supplied raw stream. For ASOS matches, the analogous share is only 7.4%. ASOS estimate flags therefore appear to reflect more than simple absence, such as source QC, timing rules, partial-day completeness, or station-product transitions.

5. Ten-neighbor temperature behavior

Each of the 251 physical sites was assigned its ten nearest canonical neighbors using great-circle distance. This produces 2,510 directed station-neighbor relationships. The full geometry list is in tables/nearest_10_neighbors.csv; pair-level overall metrics are in tables/neighbor_pair_summary.csv, and all pair × regime results are in tables/neighbor_pair_regime_metrics.csv.

Daily mean temperature was calculated as (high + low) / 2. A station-specific smoothed day-of-year climatology was removed to form temperature anomalies. Day-to-day changes were calculated only across consecutive dates.

Environmental drivers were built as follows:

Global regime results

regime fill_class temperature_anomaly_n temperature_anomaly_corr temperature_anomaly_mae_f daily_change_n daily_change_corr daily_change_mae_f
High radiation / High wind / Dry soil all_pair_days 1334754 0.854 3.001 1334658 0.648 3.417
High radiation / High wind / Dry soil any_estimated 657404 0.845 3.142 657346 0.632 3.511
High radiation / High wind / Dry soil both_observed 677350 0.864 2.864 677312 0.662 3.325
High radiation / High wind / Wet soil all_pair_days 1004175 0.842 2.984 1004047 0.646 3.535
High radiation / High wind / Wet soil any_estimated 512310 0.824 3.138 512241 0.628 3.625
High radiation / High wind / Wet soil both_observed 491865 0.860 2.824 491806 0.663 3.442
High radiation / Low wind / Dry soil all_pair_days 2047048 0.879 2.593 2046966 0.672 2.893
High radiation / Low wind / Dry soil any_estimated 1004563 0.866 2.711 1004481 0.646 2.891
High radiation / Low wind / Dry soil both_observed 1042485 0.892 2.479 1042485 0.695 2.895
High radiation / Low wind / Wet soil all_pair_days 1417432 0.864 2.695 1417328 0.667 3.108
High radiation / Low wind / Wet soil any_estimated 713017 0.842 2.864 712961 0.632 3.156
High radiation / Low wind / Wet soil both_observed 704415 0.885 2.524 704367 0.700 3.059
Low radiation / High wind / Dry soil all_pair_days 901225 0.850 3.184 900956 0.655 3.796
Low radiation / High wind / Dry soil any_estimated 435773 0.835 3.348 435575 0.629 3.904
Low radiation / High wind / Dry soil both_observed 465452 0.864 3.031 465381 0.679 3.695
Low radiation / High wind / Wet soil all_pair_days 1550512 0.829 3.097 1549701 0.644 3.749
Low radiation / High wind / Wet soil any_estimated 778918 0.805 3.274 778327 0.609 3.875
Low radiation / High wind / Wet soil both_observed 771594 0.850 2.919 771374 0.678 3.621
Low radiation / Low wind / Dry soil all_pair_days 971676 0.868 2.803 971606 0.661 3.365
Low radiation / Low wind / Dry soil any_estimated 480658 0.854 2.921 480590 0.630 3.361
Low radiation / Low wind / Dry soil both_observed 491018 0.882 2.687 491016 0.686 3.368
Low radiation / Low wind / Wet soil all_pair_days 1417994 0.850 2.787 1417173 0.651 3.368
Low radiation / Low wind / Wet soil any_estimated 705904 0.827 2.944 705225 0.607 3.408
Low radiation / Low wind / Wet soil both_observed 712090 0.870 2.632 711948 0.687 3.329

For both-observed pair-days, the highest anomaly coherence occurs under High radiation / Low wind / Dry soil (r = 0.892). The lowest occurs under Low radiation / High wind / Wet soil (r = 0.850). This does not mean the first regime is universally “best weather.” It means nearby stations share spatial temperature departures most consistently in that local background state.

Original figure unavailable in the current source package.Coherence by infill class

Original figure unavailable in the current source package.Regime coherence

6. Continuous three-way interaction model

The regime table is easy to inspect but discards information at the median split. A second model uses continuous standardized radiation, wind, and soil moisture, all two-way interactions, the full three-way interaction, distance, elevation difference, and whether either value was estimated. The outcome is absolute neighbor anomaly difference in °F. Coefficients are associations after controlling for the listed terms; they are not automatically causal effects.

term coefficient_f std_error p_value n r_squared
intercept 2.62570 0.01174 0.00000 532102 0.00990
radiation_z -0.05864 0.00428 0.00000 532102 0.00990
wind_z 0.20839 0.00420 0.00000 532102 0.00990
soil_z 0.03705 0.00421 0.00000 532102 0.00990
rad_x_wind 0.01155 0.00426 0.00670 532102 0.00990
rad_x_soil 0.01670 0.00397 0.00003 532102 0.00990
wind_x_soil -0.03494 0.00426 0.00000 532102 0.00990
rad_x_wind_x_soil 0.00371 0.00378 0.32657 532102 0.00990
distance_10km 0.00186 0.00320 0.56113 532102 0.00990
elevation_100m 0.02173 0.00102 0.00000 532102 0.00990
any_estimated 0.32202 0.00799 0.00000 532102 0.00990

The any_estimated coefficient is particularly useful: a positive value means estimate-involved pairs retain wider temperature differences even after environmental state and station geometry are accounted for. This reinforces the regime result that the infill is not generating artificial neighbor uniformity.

7. Interpretation and cautions

  1. “Raw” is archive-relative. The comparison uses the COOP and ASOS exports supplied here. It does not prove those files are the untouched first transmission from an observer or airport sensor.
  2. The estimate flag is authoritative, but the algorithm is absent. The source labels values as estimated, yet this archive does not document whether each estimate came from interpolation, regression, neighboring stations, gridded fields, temporal filling, or a mixture.
  3. ASOS matching is sensitive to daily definitions. Calendar-day summaries, local observation-day products, climate-day products, and rounded values can differ while all remain legitimate.
  4. Wind is a regional proxy. It is not an on-site wind measurement for most PACLIMATE stations. Mountain exposure and valley shelter are only partly represented by ASOS interpolation and elevation difference.
  5. Soil moisture and radiation are gridded covariates. Their spatial resolution and model assumptions can create shared structure among nearby stations.
  6. Directed pairs are not independent. Each station appears in several relationships and most station pairs are represented in both directions. The descriptive correlations are sound, but classical p-values should not be read as if every pair-day were independent.
  7. The best next provenance step is to obtain the PA long-term climate production documentation or code that defines temp_estimated, especially the handling of discontinued stations, QC-rejected reports, and airport-area aliases.

8. Reproducibility and delivered files

The package includes the complete script, all station-level and pair-level tables, model coefficients, figures, this Markdown report, an HTML version, a JSON summary, and a checksum manifest. Run:

python pa_station_overlap_neighbor_audit.py --input /path/to/extracted_pa_data --output /path/to/output

The script does not modify the supplied source files.

← CPA Weather Lab · Learn