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

all available history, 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 3.25-3.06 · n=34 3.71-3.55 · n=33 3.94-3.83 · n=32 3.93-3.85 · n=31 4.24-4.15 · n=31 5.08-4.92 · n=31 5.49-5.33 · n=30 6.14-5.92 · n=29 7.95-7.77 · n=28 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 3.40-0.04 · n=972 5.10-0.09 · n=971 5.99-0.14 · n=970 6.57-0.20 · n=969 7.05-0.26 · n=968 7.27-0.31 · n=967 7.31-0.37 · n=966 7.30-0.43 · n=965 7.33-0.49 · n=964 Persistence (baseline) MAE by lead day 1 to 9, tmax

Up to 2 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

all available history, 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.53-0.40 · n=34 2.64-0.35 · n=33 2.59-0.72 · n=32 2.95-0.67 · n=31 2.95-0.87 · n=31 3.43-0.85 · n=31 4.11-1.43 · n=30 4.17-0.98 · n=29 4.12-1.33 · n=28 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 2.72-0.04 · n=972 3.82-0.09 · n=971 4.43-0.14 · n=970 4.84-0.19 · n=969 5.11-0.24 · n=968 5.30-0.29 · n=967 5.34-0.34 · n=966 5.37-0.39 · n=965 5.52-0.45 · n=964 Persistence (baseline) MAE by lead day 1 to 9, tmin

Up to 2 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 slices, model availability and the observed-truth table live on the canonical page: they do not depend on the window, initialization or interpolation selected here.

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