For reference, here’s the post that triggered the following forecast post-mortem analysis. To start, here’s my forecast and the verified totals.
My Forecast
High: 48°F | Low: 17°F | Max sustained winds: 35 mph | Total QPF: 1.40″ | Total snow accumulation: 1.00″
Verification
High: 40°F | Low: 15°F | Max sustained wind: 38 mph | Total precipitation: 0.80″ | Total snow: 0.00″
Since I did decently at forecasting maximum sustained winds and the low temperature, this analysis will focus primarily on why I missed the mark on both total precipitation and the high temperature.
How I Verify Forecasts
I haven’t explained in previous posts like this how I go about verifying the results of my own forecasts, though I do talk about METARs (hourly weather reports) and daily climate summaries from the National Weather Service as sources for verification data. There’s a reason why I choose to use the 06Z Day 1 to 06Z Day 2 (1AM/2AM Day 1 to 1AM/2AM Day 2 depending on Daylight Saving Time) time window to forecast, and that’s because this lines up well with METAR synoptic reports that occur every 6 hours (00Z, 06Z, 12Z, 18Z). This is something I picked up from my Weather Forecasting Certificate Program at Penn State World Campus. So, when I’m looking at the METAR data, I’m looking for specific data points at these synoptic times:
KLGA 210551Z 32023G36KT 10SM SCT037 M09/M16 A2980 RMK AO2 PK WND 31037/0500 SLP091 T10941161 11067 21094 51032 $
KLGA 202351Z 32027G35KT 10SM SCT035 M07/M13 A2960 RMK AO2 PK WND 31041/2323 SLP024 T10671133 10033 21067 51063 $
KLGA 201751Z 34012G22KT 10SM FEW008 SCT012 BKN024 BKN190 03/00 A2927 RMK AO2 RAE09 SLP911 P0000 60020 T00280000 10044 20022 55002 $
KLGA 201151Z 06016KT 6SM RA BR BKN006 BKN010 OVC028 02/01 A2944 RMK AO2 PK WND 05028/1102 WSHFT 1059 PRESFR SLP970 P0003 60060 70114 T00220011 10028 20017 56055 $
I won’t bore you with details of how to read METARs, which you can learn about here, but from these entries, I can get the maximum temperature from the highest value 1 group, low temperature from the lowest 2 group, and total precipitation from summing up the 6 groups for these synoptic times. So in this case, “10044” indicates a maximum temperature of 4.4C, which is converted from 40F. “21094” shows a minimum temperature of -9.4C, converted from -15F. “60060” translates to 0.60″ and “60020” likewise is 0.20″, and the sum gives us 0.80″ total precipitation.
Last, with max sustained wind, and in this case snow, I checked the NWS daily climate reports for LGA (see red outlined boxes).
Post-Mortem Analysis
On this forecast, I ended up handling the low temperature and max sustained winds well, however, I was much too high on both the high temperature and total precipitation. So what happened here?
High Temperature
In my forecast, I had confidence based on various model data that NYC would spend a decent amount of time in the warm sector of the low that would be responsible for the storm. Unfortunately, this simply just did not happen, and as a result, we never got into that warm southerly/southwesterly flow that would have propelled temperatures into the upper-40s. Instead, looking at the METARs for that day reveals that winds stayed consistently east-northeast to north-northeast overnight into the early morning hours before almost immediately shifting to the northwest by 11AM. This makes sense, given the orientation and location of the warm front just to our south to start.
Click the images below to see the Weather Prediction Center’s surface analyses at 7AM, 10AM, 1PM respectively for Sunday, January 20.
In the end, I should have heeded some signals that there was enough uncertainty in the storm track even on Saturday that we could miss the warm sector. The local forecast office for the NWS also indicated that there was a potential for this, which would keep temperatures suppressed due to persistent, cool, northeasterly flow. Their forecast high, which I believe was 42°F, factored this in, and ended up being a lot more accurate. The takeaway here for me is to not completely buy into model consensus even if there’s good agreement, when there’s a possibility of storm tracks shifting. I don’t think I would have gone as low as 40°F even with this in mind, but I might have forecast something like 44°F, which would have been closer.
Total Precipitation
I missed the total precipitation forecast by more than 0.50″ – objectively a bad outcome. In this case, I think there were a couple reasons behind my own forecast bust. First, the storm progressed faster than data on Saturday suggested, resulting in heavier precipitation earlier in the overnight period, also meaning that the strongest frontogenesis/isentropic lift moved through quicker than anticipated. Secondly, the best moisture convergence stayed just offshore, leading us to miss out on some of the heavier rain.
Click the images below for enlarged versions of the archived radar image for 8AM Sunday, January 20, and the Storm Prediction Center’s moisture convergence analysis for the same time.
The fact that we never ended up in the warm sector for too long during the day Sunday also meant that the best moisture didn’t quite make it up to NYC. Note how the areas of strongest moisture convergence are also coincide well with the most intense radar echos. For precipitation with strong storms like this, it can always be a hit-or-miss proposition to pinpoint precipitation totals for one spot. My own personal forecast bias leads me to over forecast precipitation quite often. I should have consulted the daily average for precipitation to factor climatology into this as well before doing the forecast. For reference, the record precipitation total for KLGA on January 20th was 1.41″ – so I was, in essence, forecasting a near record-breaking precipitation event. That usually doesn’t pan out, as you see.