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!
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.
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
#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[!is.na(DATE)]
TMIN <- mydataJB$Atemp.Min[!is.na(DATE)]
PRCP <- mydataJB$PRCP.Sum[!is.na(DATE)]
DATE <- DATE[!is.na(DATE)]
# Next I created multivariate zoo object with our TMAX, TMIN, and PRCP data
Station_zoo <- suppressWarnings(zoo(cbind(TMAX,TMIN,PRCP),DATE))
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”)
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), min.base.data.fraction.present = 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
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.
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?
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?
This is where the SWMP data shines!
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.