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, 12Z, 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.07-2.79 · n=29 3.11-2.83 · n=28 3.76-3.53 · n=27 4.04-3.94 · n=26 4.64-4.38 · n=24 4.91-4.42 · n=24 5.23-4.90 · n=23 6.21-5.89 · n=22 6.54-5.95 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9, tmax
Aurora (GFS init)aurora_gfs 13.30-13.30 · n=2 15.69-15.69 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmax
Aurora (IFS init)aurora_ifs 7.75-7.75 · n=2 9.19-9.19 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (GFS init)fourcastnet_gfs 9.95-9.95 · n=2 12.20-12.20 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (IFS init)fourcastnet_ifs 9.86-9.86 · n=2 10.13-10.13 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmax
NCEP GFSgfs 2.76-2.58 · n=29 2.96-2.52 · n=28 3.24-2.61 · n=27 4.16-3.87 · n=26 4.79-4.40 · n=25 4.87-4.58 · n=24 4.99-4.73 · n=23 5.02-4.37 · n=22 5.36-4.67 · n=21 NCEP GFS MAE by lead day 1 to 9, tmax
GraphCast (GFS init)graphcast_gfs 12.22-12.22 · n=2 12.91-12.91 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmax
GraphCast (IFS init)graphcast_ifs 3.66-3.56 · n=27 3.92-3.74 · n=26 4.01-3.95 · n=25 4.71-4.71 · n=25 5.34-5.20 · n=25 6.23-6.09 · n=24 6.50-6.38 · n=23 7.29-7.04 · n=22 7.63-7.30 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9, tmax
ECMWF IFS HRESifs_hres 2.99-2.82 · n=24 2.36-2.03 · n=22 2.96-2.73 · n=22 3.17-3.12 · n=21 3.71-3.36 · n=20 2.98-2.65 · n=19 2.99-2.19 · n=17 3.78-2.18 · n=17 5.19-3.50 · n=14 ECMWF IFS HRES MAE by lead day 1 to 9, tmax
Pangu-Weather (GFS init)pangu_gfs 7.83-7.83 · n=2 9.73-9.73 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmax
Pangu-Weather (IFS init)pangu_ifs 5.80-5.80 · n=2 7.26-7.26 · 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, 12Z, 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.38-1.94 · n=29 3.36-1.69 · n=28 3.51-1.88 · n=27 3.87-2.04 · n=26 4.23-2.19 · n=24 4.57-2.52 · n=24 4.49-2.66 · n=23 4.51-2.88 · n=22 5.03-3.73 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9, tmin
Aurora (GFS init)aurora_gfs 5.90-5.90 · n=2 8.23-8.23 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmin
Aurora (IFS init)aurora_ifs 2.65-2.65 · n=2 4.39-4.39 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (GFS init)fourcastnet_gfs 4.00-4.00 · n=2 6.18-6.18 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (IFS init)fourcastnet_ifs 3.82-3.82 · n=2 5.16-5.16 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmin
NCEP GFSgfs 4.25+2.64 · n=29 4.10+2.87 · n=28 4.30+3.24 · n=27 3.93+3.54 · n=26 3.85+2.69 · n=25 4.19+2.94 · n=24 4.88+3.42 · n=23 5.12+3.52 · n=22 4.31+3.47 · n=21 NCEP GFS MAE by lead day 1 to 9, tmin
GraphCast (GFS init)graphcast_gfs 6.51-6.51 · n=2 8.09-8.09 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmin
GraphCast (IFS init)graphcast_ifs 3.17-0.92 · n=27 3.21-1.09 · n=26 3.28-1.19 · n=25 3.38-1.37 · n=25 3.46-1.56 · n=25 4.03-1.46 · n=24 3.99-1.61 · n=23 4.16-1.17 · n=22 4.92-1.61 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9, tmin
ECMWF IFS HRESifs_hres 3.42+0.50 · n=24 3.32+0.77 · n=22 3.48+0.72 · n=22 3.34+0.88 · n=21 3.04+1.12 · n=20 3.05+1.11 · n=19 3.27-0.01 · n=17 4.26+1.12 · n=17 2.80-0.23 · n=14 ECMWF IFS HRES MAE by lead day 1 to 9, tmin
Pangu-Weather (GFS init)pangu_gfs 0.77-0.41 · n=2 2.58-2.58 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmin
Pangu-Weather (IFS init)pangu_ifs 3.22-3.22 · n=2 2.40-2.40 · 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 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