Last chance! 50% off unlimited learning
Sale ends in
Find seasonal and annual changes between two data sets; relative and absolute changes are found between the central tendency and spread of each seasonal state.
change(x1, x2, var1, var2 = var1, width = "mon",
cent = "mean", sprd = "sd", disc = FALSE, inter = FALSE,
p.cut = 0.3, start.day = 1, calendar)
a data.frame
of seasonal data
a second data.frame
of seasonal data
a variable in x1
a variable in x2
the width of the bins, see mkseas
for more
details; this will change the sample-sizes between x1
and
x2
, which can affect the changes detected
if the data are discontinuous, the seas.sum
objects
are created for var1
/var2
to determine the changes;
this is ideal for precipitation, and other sparsely distributed
variables
interarrival
s are calculated, and changes
are found between wet and dry series
cut-off for wet/dry; see interarrival
starting day
calendar; if not specified it will try to read this
from the attributes, otherwise it is assumed to be a proleptic
Gregorian calendar; see year.length
Returns a complex list
of relative and absolute (if
applicable) changes of var1
/var2
between x1
and
x2
.
Seasonal and annual changes are identified independently of each
other; where annual changes have a ann
prefix.
Relative changes are not found if x$var
has values less than 0,
such as Temperature measured in degrees C or F.
This function is useful for finding changes between different states of seasonal data. Here, a state represents how seasonal data behave statistically at either a time or place. The stability of a state depends on both the variance throughout each portion of the season, as well as the number of years of observations.
For instance, seasonal and annual changes in climate can be detected in climate data series, by comparing the normals from two time periods.
# NOT RUN {
data(mscdata)
dat1 <- mksub(mscdata, id=1108447, start=1975, end=1984)
dat2 <- mksub(mscdata, id=1108447, start=1985, end=1995)
# A few plot functions to make thing easy
plot.ch <- function(x, main, h, col) {
main <- paste(main, "between 1975-1984 and 1985-1994", sep="\n")
barplot(x, main=main)
abline(h=c(0, h), col=c(1, col), lty=c(1, 2))
}
plot.abs <- function(x, col="red", abs="abs", ann.abs="ann.abs") {
main <- sprintf("Absolute change in %s", x$long.name[[1]])
plot.ch(x[[abs]], main, x[[ann.abs]], col)
}
plot.rel <- function(x, col="orange", rel="rel", ann.rel="ann.rel") {
main <- sprintf("Relative change in %s", x$long.name[[1]])
plot.ch(x[[rel]], main, x[[ann.rel]], col)
}
plot.std <- function(x, col="purple") {
main <- sprintf("Relative change in the\nstandard deviation of %s",
x$long.name[[1]])
plot.ch(x$sprd.rel, main, x$ann.sprd.rel, col)
}
# Minimum temperature
ch <- change(dat1, dat2, "t_min")
str(ch)
plot.abs(ch)
plot.std(ch)
# Cannot do ch$rel ; since div/0!
# Precipitation
ch2 <- change(dat1, dat2, "precip", width="DJF", disc=TRUE)
plot.abs(ch2, "blue")
plot.rel(ch2, "purple")
plot.std(ch2)
# }
Run the code above in your browser using DataLab