Raw model output on the native 0.25° grid — no MOS, no bias correction, no post-processing. Scores understate operational forecast quality. Read the fairness statement →

CastCheck methodology v0.2 · data through 2026-08-30

KPHX — Phoenix Sky Harbor

33.4278, -112.0035 · 340 m· standard offset UTC-7 h · truth product CLIPHX

These pages are always bilinear interpolation, the headline method. The nearest-node variant, and every other window/initialization/interpolation/variable combination, is published on each permanent link below — follow any number.

Daily maximum temperature — MAE °F

the last 90 days, 00Z, bilinear. MAE with the bias and n underneath; every cell links to its permanent page. The sparkline shows the same model across lead days 1–9 on a scale shared within this table.
Modeld0d1d2d3d4d5d6d7d8d9lead 1–9
ECMWF AIFS Singleaifs_single 3.09-2.84 · n=30 3.15-2.90 · n=29 3.49-3.27 · n=28 3.63-3.40 · n=27 3.81-3.61 · n=26 4.14-3.54 · n=25 4.92-4.35 · n=24 5.51-5.14 · n=23 6.91-6.38 · n=22 ECMWF AIFS Single MAE by lead day 1 to 9, tmax
Aurora (GFS init)aurora_gfs 13.44-13.44 · n=2 14.58-14.58 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmax
Aurora (IFS init)aurora_ifs 5.71-5.71 · n=3 8.35-8.35 · n=2 10.42-10.42 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (GFS init)fourcastnet_gfs 10.57-10.57 · n=2 12.64-12.64 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (IFS init)fourcastnet_ifs 7.94-7.94 · n=3 10.33-10.33 · n=2 11.70-11.70 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmax
NCEP GFSgfs 2.96-2.69 · n=30 2.91-2.59 · n=29 2.75-2.42 · n=28 4.05-3.32 · n=27 3.49-3.14 · n=26 4.01-3.45 · n=25 4.38-3.83 · n=24 4.31-3.87 · n=23 4.90-4.11 · n=22 NCEP GFS MAE by lead day 1 to 9, tmax
GraphCast (GFS init)graphcast_gfs 14.89-14.89 · n=2 13.90-13.90 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmax
GraphCast (IFS init)graphcast_ifs 2.89-2.66 · n=28 3.32-3.13 · n=27 3.49-3.35 · n=26 3.44-3.35 · n=25 4.01-3.90 · n=25 5.06-4.87 · n=25 6.00-5.79 · n=24 6.94-6.66 · n=23 9.18-9.04 · n=22 GraphCast (IFS init) MAE by lead day 1 to 9, tmax
ECMWF IFS HRESifs_hres 2.09-2.01 · n=25 2.38-2.08 · n=22 2.79-2.42 · n=23 2.98-2.57 · n=22 2.84-2.52 · n=20 3.53-2.53 · n=18 3.06-2.30 · n=19 3.42-1.93 · n=18 5.09-3.44 · n=17 ECMWF IFS HRES MAE by lead day 1 to 9, tmax
Pangu-Weather (GFS init)pangu_gfs 8.75-8.75 · n=2 7.42-7.42 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmax
Pangu-Weather (IFS init)pangu_ifs 6.10-6.10 · n=3 7.45-7.45 · n=2 7.00-7.00 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9, tmax
Persistence (baseline)persistence 2.86-0.03 · n=90 4.10-0.19 · n=90 4.88-0.41 · n=90 5.49-0.71 · n=90 5.92-0.99 · n=90 5.87-1.20 · n=90 5.88-1.32 · n=90 5.89-1.49 · n=90 5.72-1.66 · n=90 Persistence (baseline) MAE by lead day 1 to 9, tmax

Up to 1 of the scored days in this table carry a QC flag on the observation (a CLI value that disagreed with the hourly observations, or a fallback source). They are kept in the scores and counted here rather than dropped — see methodology.

+ model too warm · − model too cold · bias interval includes zero · ★ lowest MAE · = not distinguishable from the leader · ▼ significantly worse · n < 30 greyed and unranked · CI is a 95 % moving-block bootstrap interval.

Daily minimum temperature — MAE °F

the last 90 days, 00Z, bilinear. MAE with the bias and n underneath; every cell links to its permanent page. The sparkline shows the same model across lead days 1–9 on a scale shared within this table.
Modeld0d1d2d3d4d5d6d7d8d9lead 1–9
ECMWF AIFS Singleaifs_single 3.73-2.29 · n=30 3.54-1.97 · n=29 3.46-1.99 · n=28 3.65-1.85 · n=27 4.00-2.18 · n=26 4.01-2.02 · n=25 4.29-2.30 · n=24 4.36-2.58 · n=23 4.69-2.93 · n=22 ECMWF AIFS Single MAE by lead day 1 to 9, tmin
Aurora (GFS init)aurora_gfs 5.38-5.38 · n=2 6.82-6.82 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmin
Aurora (IFS init)aurora_ifs 3.20-3.20 · n=3 2.58-2.58 · n=2 5.20-5.20 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (GFS init)fourcastnet_gfs 5.67-5.67 · n=2 6.54-6.54 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (IFS init)fourcastnet_ifs 4.99-4.99 · n=3 4.13-4.13 · n=2 6.16-6.16 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmin
NCEP GFSgfs 4.44+3.22 · n=30 4.07+3.12 · n=29 4.23+3.16 · n=28 4.11+3.26 · n=27 4.17+3.93 · n=26 4.57+3.68 · n=25 4.51+3.47 · n=24 4.38+2.85 · n=23 5.10+3.88 · n=22 NCEP GFS MAE by lead day 1 to 9, tmin
GraphCast (GFS init)graphcast_gfs 6.39-6.39 · n=2 8.09-8.09 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmin
GraphCast (IFS init)graphcast_ifs 2.82-0.31 · n=28 2.83-0.08 · n=27 2.81-0.53 · n=26 3.20-0.48 · n=25 3.10-0.84 · n=25 3.52-0.65 · n=25 3.81-0.94 · n=24 3.84-0.95 · n=23 3.97-1.75 · n=22 GraphCast (IFS init) MAE by lead day 1 to 9, tmin
ECMWF IFS HRESifs_hres 3.15+0.29 · n=25 3.17+0.98 · n=22 3.36+1.11 · n=23 3.50+1.34 · n=22 3.71+1.41 · n=20 3.69+2.16 · n=18 3.48+1.69 · n=19 3.49-0.30 · n=18 3.02+0.54 · n=17 ECMWF IFS HRES MAE by lead day 1 to 9, tmin
Pangu-Weather (GFS init)pangu_gfs 2.25-2.25 · n=2 1.48-1.48 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmin
Pangu-Weather (IFS init)pangu_ifs 1.55-1.07 · n=3 0.89-0.83 · n=2 0.83-0.83 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9, tmin
Persistence (baseline)persistence 3.09-0.13 · n=90 4.53-0.33 · n=90 5.26-0.61 · n=90 5.86-0.90 · n=90 6.48-1.12 · n=90 6.67-1.31 · n=90 6.64-1.47 · n=90 6.78-1.56 · n=90 6.84-1.71 · n=90 Persistence (baseline) MAE by lead day 1 to 9, tmin

Up to 1 of the scored days in this table carry a QC flag on the observation (a CLI value that disagreed with the hourly observations, or a fallback source). They are kept in the scores and counted here rather than dropped — see methodology.

Month by month

MAE °F at lead day 1, 00Z, bilinear, daily maximum — the seasonal slice behind the window averages. A model that is excellent in one season and poor in another shows up here and nowhere else.

Monthaifs_singleaurora_gfsaurora_ifsfourcastnet_gfsfourcastnet_ifsgfsgraphcast_gfsgraphcast_ifsifs_hrespangu_gfspangu_ifs
2026-08 3.15-2.90 · n=2914.58-14.58 · n=18.35-8.35 · n=212.64-12.64 · n=110.33-10.33 · n=22.91-2.59 · n=2913.90-13.90 · n=13.32-3.13 · n=272.38-2.08 · n=227.42-7.42 · n=17.45-7.45 · n=2
2026-01 5.43-5.43 · n=6

Model availability at this station

ModelPeriod Scored daysCoverage
ECMWF AIFS Single 2026-08-02 → 2026-08-3029
Aurora (GFS init) 2026-08-30 → 2026-08-301
Aurora (IFS init) 2026-08-29 → 2026-08-302
FourCastNet v2 (GFS init) 2026-08-30 → 2026-08-301
FourCastNet v2 (IFS init) 2026-08-29 → 2026-08-302
NCEP GFS 2026-08-02 → 2026-08-3029
GraphCast (GFS init) 2026-08-30 → 2026-08-301
GraphCast (IFS init) 2026-01-02 → 2026-08-3033
ECMWF IFS HRES 2026-08-02 → 2026-08-3022
Pangu-Weather (GFS init) 2026-08-30 → 2026-08-301
Pangu-Weather (IFS init) 2026-08-29 → 2026-08-302
Persistence (baseline) 2024-01-02 → 2026-08-30972

Observed truth — last 30 days

Climatological dayTmax °F Tmin °FSourceFlag
2026-08-3010688OBSobs_fallback
2026-08-2911390CLI
2026-08-2811294CLI
2026-08-2711395CLI
2026-08-2611791CLI
2026-08-2511589CLI
2026-08-2410886CLI
2026-08-2311388CLI
2026-08-2211590CLI
2026-08-2111289CLI
2026-08-2010679CLI
2026-08-1911079CLI
2026-08-1811492CLI
2026-08-1711390CLI
2026-08-1611091CLI
2026-08-1510784CLI
2026-08-1410183CLI
2026-08-1310179CLI
2026-08-1210280CLI
2026-08-1110482CLI
2026-08-1010886CLI
2026-08-0911187CLI
2026-08-0811395CLI
2026-08-0711189CLI
2026-08-0610788CLI
2026-08-0510592CLI
2026-08-0410789CLI
2026-08-0311693CLI
2026-08-0211594CLI
2026-08-0111694CLI

All scores as JSON scores_latest.csv daily_errors.csv.gz data & licences