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
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.
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.
| 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 |
| 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.
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.
| 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 |
| 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.
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.
| 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 |
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.
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:
| 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.
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.
temp_estimated, especially the handling of discontinued stations, QC-rejected reports, and airport-area aliases.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