We got our first dusting of snow last night. It stuck around until after noon, allowing me to take the photo on the right when I went for a walk with Nika around the peat bog. You can really tell where the permafrost is by the thick layer of insulating moss that keeps the ground frozen, and is keeping the snow from melting in the photo.
Every year when the first snow falls it seems like it’s earlier than the last, and there’s usually some discussion at the office about how short the summer turned out to be. The early snows of 1992 that knocked out power for days all over town are also normally mentioned. I decided to look and see if I had some data that could place this year’s first snowfall in a historical context.
One of the few free† long-term weather datasets that’s available from the National Climate Data Center is the Integrated Surface Dataset (ISD), which contains daily weather observations for more than 20,000 stations. The Fairbanks Airport station has been in operation for more than 100 years, but it moved in 1946, so I only used data from 1946–2008. In addition to a series of numerical observations (minimum and maximum temperature, pressure, wind speed, etc.), the dataset contains several fields used to indicate whether a particular phenomenon was observed during that day. One of them, snow_flag, is defined as: “True indicates there was a report of snow or ice pellets during the day.”
That’s perfect. Snow depth is another parameter I considered, but this data wasn’t collected until the mid-70s, and it doesn’t really help us answer the question because most of the time the first snowfall of the year doesn’t last long enough to be recorded as snow on the ground.
Here’s the SQL query to find the earliest snowfall date for each year for the Fairbanks Airport station:
SELECT year, min(date) FROM ( SELECT extract(year from dt) AS year, to_char(extract(month from dt), '00') || '-' || ltrim(to_char(extract(day from dt), '00')) AS date, snow_flag FROM isd_daily WHERE isd_id = '702610-26411' AND extract(month from dt) > 7 AND snow_flag = 't' ) AS snow_flag_sub GROUP BY year ORDER BY year;
Mix in a little R:
fs <- read.table("first_snow_mm-dd", header=TRUE, row.names=1) fs$date<-as.Date(fs$date, "%m-%d") png("first_snow_mm-dd.png", height=500, width=500, units="px", pointsize=12) hist(fs$date, breaks="weeks", labels=FALSE, xlab="Date of first snowfall", main="First snowfall reported, Fairbanks Airport (PAFA) station", plot=TRUE, freq=TRUE, ylim=c(0, 20), col="gray60") text(as.Date("2009-09-23"), 19, "⇦ 2009", srt=90, col="darkred") dev.off()
And you get this plot:
You can see from the plot that the first snowfall comes somewhere between August 3rd and October 26th, with the week of September 21st being the most common. So we’re right on schedule this year.
Another analysis that I’ve been meaning to do is to find the average date when the snow that falls lasts the entire winter. Since I’ve been in Fairbanks, my estimate of this date is the second week of October, but I’ve never actually looked it up to see if that’s true or not. Unfortunately, this requires good snow depth data, and the ISD dataset doesn’t have snow depth for Fairbanks prior to 1975. It’s also a bit more complicated than looking for the earliest snow_flag = 't' because you need to examine future rows to know if the snow depth observation you’re examining lasted more than a few days.
†Why isn’t all the data collected by the Weather Service freely available? Public money was used to collect, analyze, and archive it, so I think it should be made available to the public that paid for it.
It’s been a few days since Andrea finished her first marathon, and I’ve had a chance to clean up the photos (I didn’t realize how dark they were while I was out, blogging from my iPhone). They’re part of a Picasa web gallery here. Andrea has written up her experiences on her blog.
For my part, I had a good time supporting Andrea, except for my time on top of Ester Dome waiting for her to come down from the out and back. When she left me, her legs were tired, but she wasn’t injured. Shortly after that, however, the teammates ahead of her in the race started coming up to me to warn me that her knee was hurt and that she might not be able to finish the marathon. It was a long, lonely wait wondering how she was doing above me.
Despite that, watching her cross the finish line with three of her teammates, and all the rest of her team and coaches whooping, cheering, and clapping was awesome.