K1D: analysis of synchrony of events at one or multiple sites using the Ripley K function.
The method is a simplification of the commonly used Ripley K function for spatial aggregation or evenness, but applied to one dimension (time) rather than two dimensions (space). The method is described in the online appendix from Gavin et al. 2006. A desktop version of the program (with additional features) is available on the Environmental Change Research Group website. If you compare it to the desktop program, this program is the same as the "bivariate bidirectional" option with integer data.
The k1d.sim function can do two types of simulations: "circular", which is moving the record forward a random number of years, and wrapping around to the back, and "random" which is just picking random years (not picking the same year twice, though). You can change the number of simulations (nsim) and the size of the confidence envelopes (perc).
Calculates the bivariate Ripley K statistic on one dimension. Integer data required. Requires R package 'compiler'
X A matrix where columns are sites and rows contain dates of events. The code requires integer data. There does not need to be same number of dates at each site.
start The first year of the analysis period.
end The last year of the analysis period. Events occurring outside of the bounds of start and end will be ignored.
stepsize The length of the period of each step of the analysis. Not smaller than the precision of the data (e.g., 1 year).
nstep the number of steps to analyze. Total temporal window is from 0 to (nstep * stepsize)-1.
A list with the following items: The original input data listed above (X, start, end, stepsize, nstep)
record.length The length of the analysis period. end - start + 1
h A vector of the intervals analyzed (0, stepsize * 1, stepsize * 2, ... , stepsize * (nstep-1))
Khat A vector of the Khat values. Same length as h.
Lhat A vector of the Lhat values. Lhat = Khat/2- h - 0.5
Gn The number of sites in X
n An array of length Gn giving the of the number of events at each site.
dmax This is the maximum value of h.
An example using the Utah fire history data (dates of fire events at 16 sites in Utah; See Heyerdahl et al. 2011).
# Load the software
source("k1d.R.txt")
# Read the example data file
X <- read.csv("utah.csv")
t <- k1d(X,start=1600,end=1880,nstep=51,stepsize=1)
# plot the Lhat function
plot.k1d(t)
Computes the ENVELOPES for Ripley's K-function for 2 types of processes (circular or randomization; see below). Hundreds of simulations requires a long period (many minutes) to run.
k1d.obj An object created by the function k1d
rcol vector of length 2, first value indicates whether to randomize record 1, second value indicates whether to randomize records 2 and greater. Default value=c(TRUE,TRUE).
scenario Either "circular" or "random". If "circular", each randomization shifts series by a random amount, wrapping events from the end to the start of the analysis period. If "random", random dates are chosen for all events (uniform probability over the analysis period).
nsim The number of simulations to run.
perc A vector of length 2, giving the percentiles of the analysis.
A matrix with two columns and h rows. Each column is the lower and upper confidence interval of Lhat for the simulations. The rows correspond to each step as in h.
s <- k1d.sim(t,scenario="circular",nsim=10,perc=c(0.025,0.975))
lines(t$h,s[1,],col=2)
lines(t$h,s[2,],col=2)