I will be using tree-ring data from my own thesis research. The data are from my Mount Washington site in eastern Nevada, USA. The tree-ring data are raw ring widths from Great Basin bristlecone pines, though the raw data will be altered/detrended later in this document. There are 308 samples, sometimes with multiple samples taken from a single tree at the Mt. Washington site.
I will be doing much of my analyses using the Dendrochronology Program Library in R (dplR). Below I show how I loaded my data and named my data set “mwa”.
require(dplR)
## Loading required package: dplR
mwa <- read.rwl('MWA_308series.rwl',long=TRUE)
I plotted the raw ring widths from my 308 samples. Below is a spaghetti plot created using dplR of the samples with year on the x-axis, spanning approximately 4000 years. The spaghetti plot is a bit difficult to analyze, so I will mostly be focusing on the mean chronology plot, which I will show later.
plot(mwa, plot.type="spag")
Below I detrend my raw ring width data by attempting to fit a negative exponential curve. There are several different standardization methods to remove noise and emphasize the signal in tree-ring data. In this case I am fitting a negative exponential curve simply because this is a rather common method of detrending. I may have to revisit this and detrend with another method later. I create an object called mwa.rwi for the detrended ring-width index. This creates an index to measure ring widths anomalies against the mean.
mwa.rwi <- detrend(rwl = mwa, method = "ModNegExp")
I used the rwi.stats function in dplR to show some basic descriptive statistics of the indexed ring-width data. I used the function read.ids to find which trees have multiple samples and then displayed statistics for mwa.rwi.
mwa.ids <- read.ids(mwa, stc = c(3,3,2))
rwi.stats(mwa.rwi, mwa.ids, prewhiten=TRUE)
## n.cores n.trees n n.tot n.wt n.bt rbar.tot rbar.wt rbar.bt c.eff
## 1 308 178 21.469 15874 123 15751 0.341 0.629 0.339 1.372
## rbar.eff eps snr
## 1 0.377 0.929 12.993
I then built a mean value chronology for the site by averaging across the samples at each year. I display a plot below of the mean value chronology–this is much easier to interpret than the spaghetti plot above, since the mean value chronology plot shows just one RWI value per year instead of values from all 308 samples.
mwa.crn <- chron(mwa.rwi, prefix = "MWA")
plot(mwa.crn, xlab='Year',ylab='RWI')
Below I show the mean value chronology (from the RWI) with 20- and 100-year moving averages. The 20-year moving average is shown in red and the 100-year moving average is shown in blue.
attach(mwa.crn)
ma20 <- filter(x=MWAstd, filter=rep(x=1/20,times=20), sides=2)
ma100 <- filter(x=MWAstd, filter=rep(x=1/100,times=100), sides=2)
plot(MWAstd,col="grey",xlab='Year',ylab='RWI',type='l')
lines(ma20,col='red',lwd=2)
lines(ma100,col='blue',lwd=2)
I had some problems plotting the moving averages using mwa.crn, so instead I had to use MWAstd, the mean ring widths from the mean value chronology. This resulted in a problem with the years on the x-axis. I will need to fix this.
I also fit a 20-year spline to the data. The plot is below.
plot(mwa.crn, add.spline=TRUE, nyrs=20)