sun, 25-jan-2015, 08:26

Following up on yesterday’s post about minimum temperatures, I was thinking that a cumulative measure of cold temperatures would probably be a better measure of how cold a winter is. We all remember the extremely cold days each winter when the propane gells or the car won’t start, but it’s the long periods of deep cold that really take their toll on buildings, equipment, and people in the Interior.

One way of measuring this is to find all the days in a winter year when the average temperature is below freezing and sum all the temperatures below freezing for that winter year. For example, if the temperature is 50°F, that’s not below freezing so it doesn’t count. If the temperature is −40°, that’s 72 freezing degrees (Fahrenheit). Do this for each day in a year and add up all the values.

Here’s the code to make the plot below (see my previous post for how we got fai_pivot).

fai_winter_year_freezing_degree_days <-
   fai_pivot %>%
      mutate(winter_year=year(dte - days(92)),
               fdd=ifelse(TAVG < 0, -1*TAVG*9/5, 0)) %>%
      filter(winter_year < 2014) %>%
      group_by(station_name, winter_year) %>%
      select(station_name, winter_year, fdd) %>%
      summarize(fdd=sum(fdd, na.rm=TRUE), n=n()) %>%
      filter(n>350) %>%
      select(station_name, winter_year, fdd) %>%
      spread(station_name, fdd)

fdd_gathered <-
   fai_winter_year_freezing_degree_days %>%
      gather(station_name, fdd, -winter_year) %>%
      arrange(winter_year)
q <-
   fdd_gathered %>%
      ggplot(aes(x=winter_year, y=fdd, colour=station_name)) +
            geom_point(size=1.5, position=position_jitter(w=0.5,h=0.0)) +
            geom_smooth(data=subset(fdd_gathered, winter_year<1975),
                        method="lm", se=FALSE) +
            geom_smooth(data=subset(fdd_gathered, winter_year>=1975),
                        method="lm", se=FALSE) +
            scale_x_continuous(name="Winter Year",
                               breaks=pretty_breaks(n=20)) +
            scale_y_continuous(name="Freezing degree days (degrees F)",
                               breaks=pretty_breaks(n=10)) +
            scale_color_manual(name="Station",
                              labels=c("College Observatory",
                                       "Fairbanks Airport",
                                       "University Exp. Station"),
                              values=c("darkorange", "blue", "darkcyan")) +
            theme_bw() +
            theme(legend.position = c(0.875, 0.120)) +
            theme(axis.text.x = element_text(angle=45, hjust=1))

rescale <- 0.65
svg('freezing_degree_days.svg', height=10*rescale, width=16*rescale)
print(q)
dev.off()

And the plot.

//media.swingleydev.com/img/blog/2015/01/freezing_degree_days.svg

Cumulative freezing degree days by winter year

You’ll notice I’ve split the trend lines at 1975. When I ran the regressions for the entire period, none of them were statistically significant, but looking at the plot, it seems like something happens in 1975 where the cumulative freezing degree days suddenly drop. Since then, they've been increasing at a faster, and statistically significant rate.

This is odd, and it makes me wonder if I've made a mistake in the calculations because what this says is that, at least since 1975, the winters are getting colder as measured by the total number of degrees below freezing each winter. My previous post (and studies of climate in general) show that the climate is warming, not cooling.

One bias that's possible with cumulative calculations like this is that missing data becomes more important, but I looked at the same relationships when I only include years with at least 364 days of valid data (only one or two missing days) and the same pattern exists.

Curious. When combined, this analysis and yesterday's suggest that winters in Fairbanks are getting colder overall, but that the minimum temperature in any year is likely to be warmer than in the past.

tags: R  weather  dplyr  climate  tidyr 
Meta Photolog Archives