Using Jug Bay for insight in the occurrence of really (REALLY) hot days

Summary: In this post (sorry for the length), we will explore the utility of the high frequency SWMP data and its ecological application in Chesapeake Bay. It’s at the end, I promise!

Goodwin Island, part of the CBNERRS. credit

Goodwin Island, part of the CBNERRS. credit

For the extreme climate analysis section of this project, we have meticulously calculated the extreme climate indices on two gridded data sets and 18 individual weather stations around the near-shore Bay region. This approach allows us to reconstruct and assess the historical patterns and variability of climate extremes back to 1894, as well as provide insights into the future projections!

So what about the extreme climate indices at Jug Bay and Taskinas Creek, our representative meteorological CBNERRS components in this assessment? In today’s post, I will quickly explain how I calculated the extreme climate indices at Jug Bay and Taskinas Creek (and why it needs explaining), present the data, and give a few insights and applications of this analysis.

Quick Background

Way back in the beginning, we chose to extend the SWMP data both temporally and spatially by supplementing the meteorological data sets with NCDC-Daily weather station data. The trick to understanding climate trends and variability is having a long data set.

We all know how crazy weather can be day to day and year to year! Without at least a few decades of temperature and precipitation data, it is statistically impossible to separate a true trend from natural variability (such as the influence from the AMO).

A few months ago, we conduct an analysis to demonstrate that the selected NCDC-Daily stations could be used to extend the meteorological data at Jug Bay and Taskinas Creek. That way we could A) extend the extreme climatic patterns at each CBNERR site and B) use the higher frequency SWMP data to ‘zoom-in’ on specific events.

But, I still wanted to calculate the extreme climate indices at Jug Bay and Taskinas Creek!

Some R script to show my approach

Just to quickly back track, I had previously aggregated the meteorological data from Jug Bay and Taskinas Creek from 15 minute to daily values using the aggresswmp function in the SWMPr package.

#MERGE into 1 day by maximum, minimum, and the daily sum

JugBay.max<-aggreswmp(raw_JB, ‘days’, function(x) max(x, na.rm = TRUE), params = c(‘atemp’,’bp’,’rh’,’wspd’,’totpar’,’totprcp’))

#Repeat for min and sum daily values! And throw in a mean while you’re at it!

Now we can use the climdex.pcip package to calculate the extreme climate indices. Note that we want to use the daily sum time series for precipitation.

#The first thing I did was reformat the date and fill any missing spots with NAs

DATE<-as.Date(mydataJB$date, format=”%m/%d/%Y”, tz=”UTC”)

TMAX <- mydataJB$Atemp.Max[!]

TMIN <- mydataJB$Atemp.Min[!]

PRCP <- mydataJB$PRCP.Sum[!]


# Next I created multivariate zoo object with our TMAX, TMIN, and PRCP data

Station_zoo <- suppressWarnings(zoo(cbind(TMAX,TMIN,PRCP),DATE))

The raw time series at Jug Bay, MD after na.approx function was applied.

Figure 1: The raw time series at Jug Bay, MD after na.approx function was applied.

Extra Step #1: use the na.approx function to linearly extrapolate data gaps

Why: The climdex.pcip package will return a NA for years with more than 60 days of missing data. Without this added measure, at Jug Bay for example, only 3 of the 10 years where returned as values. Even though we have to make a few assumptions with this function, it greatly enhances our new extreme climate data set.

#Use na.approx to extrapolate NAs. I kept our max gap at the default, which placed no limit on the gap length.

Station_zoo<-na.approx(Station_zoo, x = index(Station_zoo), xout=index(Station_zoo), na.rm = TRUE, maxgap = Inf)

Figures 1 and 2 shows our “refined” time series…which looks pretty good! Now we can start the extreme climate indices calculations!

#First convert date to a climdex-compatible format

x <- as.POSIXct(index(Station_zoo))

climdex_dates <- as.PCICt(x, cal=”gregorian”, format=”%m%d%Y”)


Figure 2:

Figure 2: The raw time series data at Taskinas Creek, VA after na.approx was applied.

Extra Step #2: Change the base range for percentile calculation

Why: The climdex.pcip package uses the 1960-1990 climate normal to assess percentiles. In other words, if we want to know how much rain exceeded the 99th percentile in 2013, we need to know what the 99th percentile is. The climdex.pcip uses total annual precipitation from 1960 to 1990 to determine that 99th percentile.

The Problem: The CBNERRS data sets are unfortunately shorter than 30 years, so I had to change this base range to be much shorter and in a more modern time range (2006-2008). Thus, it is important to note that any percentile-based extreme climate indices are fundamentally different than our NCDC-Daily analysis.

The NERRS Asset: As we collect more and more data, these values will be bettered tuned. And, as you will see below, still fit in wonderfully with the station data.

# Put TMAX, TMIN, and PRCP into a climdex object

climdex_obj.jb<-climdexInput.raw(tmax = coredata(Station_zoo$TMAX), tmin = Station_zoo$TMIN, prec = Station_zoo$PRCP, tmax.dates = climdex_dates, tmin.dates = climdex_dates, prec.dates = climdex_dates, base.range = c(2006, 2008), n = 5, northern.hemisphere = TRUE, tavg = NULL, tavg.dates = NULL, quantiles = NULL, temp.qtiles = c(0.1, 0.9), prec.qtiles = c(0.95, 0.99), max.missing.days = c(annual = 60, monthly = 3), = 0.1)

#Now we are ready to calculate each index!

#Example for Frost Days, the annual count when Tmin < 0


 Extreme Climate Indices at Jug Bay and Taskinas Creek

Figure 3: Frost Day times series for the near-shore Chesapeake Bay.

Figure 3: Frost Day index times series for the near-shore Chesapeake Bay.

Most extreme climate indices calculated for the CBNERRS were spot on compared to our NCDC-Daily time series.  Take Frost Days for example (Figure 3).

1) The ‘wiggles’ in the Jug Bay and Taskinas Creek time series all match. I did a linear regression and found Jug Bay to be significantly correlated with the NCDC-Daily data (R2=0.66, p-value <0.005) and Taskinas Creek to be highly correlated (R2=0.13, p-value=0.12). Note that these statistics will get better with time since we are working with a climatologically short sample size (10 years for Jug Bay and 13 years for Taskinas Creek). This analysis suggests that we can use the NCDC-Daily weather station data as a proxy for the CBNERRS, allowing us the extend this data back in time.

2) Jug Bay falls slightly above the NCDC-Daily data set while Taskinas Creek is slightly below. This makes perfect sense since Taskinas Creek is further south (thus in a slightly warmer climate) than Jug Bay. We can loosely think of the NCDC-Daily time series as a “mid-range” between these two sites.

Table 1: Annual extreme climate indices at Jug Bay.

Table 1: Annual extreme climate indices at Jug Bay.

Table 2: Annual extreme climate indices at Taskinas Creek.

Table 2: Annual extreme climate indices at Taskinas Creek.

In Tables 1 and 2, you can find the calculated extreme climate annual index values. The rows in red text are highlighted due to the shortened baseline required for the calculation. In moving forward, it would be fun to see how these values improve (in reference to the NCDC-Daily data set) as well lengthen the time series!

When has atmospheric temperatures exceeded 40°C at Jug Bay?

Figure 4:

Figure 4: The TXx monthly time series at Jug Bay. The green line is a lowess fit (you can think of it as a smoothed mean).

Ecologically, the TXx index can be very important since some organisms have physiological temperature thresholds. TXx is the monthly maximum temperature (Figure 4).

Let’s say we want to know when did the atmospheric temperature exceed 40°C (104°F) at Jug Bay? Boy is that a hot day! Our data tells is the monthly maximum temperature exceeded 40°C in July 2010 (41.6°C) and July 2011 (40.7°C).

In the current format of this data, the best we can get is the absolute maximum value by month. But sometimes we may want to know exactly when did this event occur, and how long did the temperature stay above 40°C?


Table 3: The occurrence and duration of >40C events at Jug Bay, MD.

This is where the SWMP data shines!

Figure 5: The maximum atmospheric temperature for July 7, 2010 at Jug Bay.

Figure 5: The maximum atmospheric temperature for July 7, 2010 at Jug Bay.

Since we know that July 2010 and 2011 are the months of interest, we can use the 15 minute frequency SWMP data to determine the exact day which that temperature extreme occurred and the duration of time that it remained above 40°C. We can also determine the other days the temperature exceeded 40°C, but may not have been the highest temperature recorded than month.

In Table 3, we can see that those two >104°F days were July 7, 2010 and July 23, 2011. Figure 5 shows us that 104°C was exceeded twice on July 7, 2010, and was maintained for 1 hour! That is very stressful for organisms and people alike!

Where were you during this day? I was out at sea, so I avoided this hot day!

My recommendation: The SWMP data may not be quite long enough (yet) for a statistically sound extreme climate analysis. BUT, it is a vital supplement to understand the exact time and duration of extreme events in our region. The abnormally warm 2010 summer was associated with an eelgrass die off, and sea grass restoration set-back, in Chesapeake Bay. With this type of analysis, especially applied to the to water temperature data, we could really start to understand the specific climatic conditions associated with these type of ecological events.

Kari Pohl

About Kari Pohl

I am a post-doctoral researcher at NOAA and the University of Maryland (Center for Environmental Science at Horn Point Laboratory). My work investigates how climate variability and extremes affect the diverse ecosystems in Chesapeake Bay. I received a Ph.D. in oceanography from the University of Rhode Island (2014) and received a B.S. in Environmental Science and a B.A. in Chemistry from Roger Williams University (2009). When I am not busy being a scientist, my hobbies include running, watching (and often yelling at) the Boston Bruins, and taking photos of my cat.
This entry was posted in Atmospheric Temperature, R script and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *