Filters with Mt. Washington tree-ring data

Below I’ll try out some filters and smoothers on my tree-ring data from Mount Washington, Nevada, USA. I’ll then detrend the data by fitting a negative exponential curve, and create a mean value chronology, as I have done in past weeks.

library(dplR)
## Warning: package 'dplR' was built under R version 3.1.3
mwa <- read.rwl('MWA_308series.rwl',long=TRUE) 
mwa.rwi <- detrend(rwl = mwa, method = "ModNegExp")
mwa.crn <- chron(mwa.rwi, prefix = "MWA")

I’m going to fit a few smoothing splines to my data.

yrs <- as.numeric(rownames(mwa.crn))
dat <- mwa.crn[,1]
nyrs <- length(dat)
nyrs == length(yrs)
## [1] TRUE
spl.2 <- smooth.spline(dat,spar=0.2)$y
spl.4 <- smooth.spline(dat,spar=0.4)$y
spl.6 <- smooth.spline(dat,spar=0.6)$y

par(tcl=0.5,mar=rep(3,4),mgp=c(1.1,0.1,0),xaxs="i")
plot(yrs,dat,type="l",xlab="Year",ylab="RWI",col="grey")
abline(h=1)
lines(yrs,spl.2, col = "red", lwd = 2)
lines(yrs,spl.4, col = "green", lwd = 2)
lines(yrs,spl.6, col = "blue", lwd = 2)
axis(3);axis(4)

The above figure shows the tree-ring data with three smoothing splines applied, as shown by the red, green, and blue lines. The red line shows more high-frequency variability while the blue line shows lower-frequency variability. The blue spline captures variability with a period on a decadal scale.

I’m now going to try to remove some of the low-frequency variability. I will do this by applying a lowess filter and then dividing the ring widths by the residuals to create a ring width index (RWI). In the figure below, the top plot shows the raw ring widths with the filter applied, and the bottom plot shows the detrended ring width index. There is often noticeable higher growth at the beginning of the trees’ lives. This is not so noticeable in my mean chronology.

n <- length(mwa.crn$MWAstd)
yrs <- 1:n

f128 <- 128/n
f128.lo <- lowess(x = yrs, y = mwa.crn$MWAstd, f = f128)
rwi <- mwa.crn$MWAstd/f128.lo$y

par(mfcol=c(2,1),mar=c(0.1,3,3,3),mgp=c(1.25,0.25,0),tcl=0.5)
plot(yrs,mwa.crn$MWAstd,type="l",ylab="mm",xlab="",col="grey",axes=F)
lines(yrs,f128.lo$y,lwd=2)
axis(2);axis(3);axis(4);box()
par(mar=c(3,3,0.1,3))
plot(yrs,rwi,type="l",ylab="RWI",xlab="Age",col="black",axes=F)
abline(h=1)
axis(2);axis(1);axis(4);box()

Below is a periodogram, showing my tree-ring data in the frequency domain. The periodogram shows a lot of low-frequency variability in the 50-100 year period range.

spectrum(mwa.crn$MWAstd,log="no")

I’ll now display the periodogram of my RWI, which should have some of the low-frequency variability removed.

spectrum(rwi,log="no")

The y-axis on this periodogram has lower magnitudes than the previous before I detrended the data. It seems that I was successful in removing some of the low-frequency variability. I don’t quite understand the y-axis of the periodogram. Spectrum? Can someone explain this to me?

PDO and ENSO

load(file = "E:/0Lab_Tyler/wna/TreeRingData/ENSO_PDO.Rdata")
par(mfcol=c(2,1),tcl=0.5,mar=rep(2.5,4),mgp=c(1.1,0.1,0),xaxs="i")
plot(enso.monthly,ylab="Nino 3.4 SST Index")
plot(pdo.monthly,ylab="PDO Index")

I applied 5- and 10-year moving averages to the ENSO and PDO data. PDO operates on time-scale with longer periods than ENSO. The 5-year moving average seems to capture most of the variability for the data, especially for the ENSO data.

ma5 <- filter(x=enso.monthly, filter=rep(x=1/32,times=32), sides=2)
ma10 <- filter(x=enso.monthly, filter=rep(x=1/64,times=64), sides=2)
ma.5 <- filter(x=pdo.monthly, filter=rep(x=1/32,times=32), sides=2)
ma.10 <- filter(x=pdo.monthly, filter=rep(x=1/64,times=64), sides=2)

par(mfrow=c(2,1),tcl=0.5,mar=rep(3,4),mgp=c(1.1,0.1,0),xaxs="i")
plot(enso.monthly,type="l",xlab="Year",ylab="Nino 3.4 SST Index",col="grey")
lines(ma5, col = "red", lwd = 2)
lines(ma10, col = "green", lwd = 2)
plot(pdo.monthly,type="l",xlab="Year",ylab="PDO Index",col="grey")
lines(ma.5, col = "red", lwd = 2)
lines(ma.10, col = "green", lwd = 2)
axis(3);axis(4)

The periodograms below show that PDO has more low-frequency variability than ENSO. Both processes seem to share similar variability at around frequency = ~0.18, or a period of ~5.5 years. PDO also has strong variability around frequency = 0.019, or about a 50 year period. ENSO shows much more variability between frequency = 0.2 and 0.4. (What word should I be using for where there is a peak in the periodograms?)

spectrum(enso.monthly,log='no',xlim=c(0,1),main='ENSO Periodogram')

spectrum(pdo.monthly,log='no',xlim=c(0,1),main='PDO Periodogram')