smoothTrend(mydata, pollutant = "nox", deseason = FALSE, type = "default",
statistic = "mean", avg.time = "month", percentile = NA,
data.thresh = 0, simulate = FALSE, n = 200, autocor = FALSE,
cols = "brewer1", xlab = "year", y.relation = "same",
key.columns = length(percentile), ci = TRUE, alpha = 0.2,
date.breaks = 7, auto.text = TRUE, k = NULL, ...)
date
and at least one other parameter for which a
trend test is required; typically (but not necessarily) a
pollutant.TRUE
the function stl
is used (seasonal
trend decomposition using loess). Note that if
TRUE
missing data are first linearly interpolated
because stl
ctype
determines how the data are split
i.e. conditioned, and then plotted. The default is will
produce a single plot using the entire data. Type can be
one of the built-in types as detailed in cutData
e.g. timeAverage
for more
details.statistic = "percentile"
is chosen. Can be a
vector of numbers e.g. percentile = c(5, 50, 95)
will plot the 5th, 50th and 95th percentile values
together on the same plot.avg.time
. A value
of zero means that all available data will be used in a
particular period regardless if of the number of values
available. Conversely, a value of 100FALSE
. If TRUE
, bootstrap simulations
are undertaken, which also account for autocorrelation.simulate = TRUE
.FALSE
. Generally, accounting for autocorrelation
increases the uncertainty of the trend estimate sometimes
by a large amount.cols = c("black", "green")
or pre-defined
openair colours --- see openColours
for more
details.statistic =
"percentile"
.FALSE
.TRUE
(default) or
FALSE
. If TRUE
titles and axis labels will
automatically try and format pollutant names and units
properly e.g. by subscripting the gam
function in package mgcv
. By default it
is not used and the amount of smoothing is optimised
automatically. However, sometimes it is useful to set the
smoothing amount manuacutData
and lattice:xyplot
. For example,
smoothTrend
passes the option hemisphere =
"southern"
on to cutData
to provide southern
(rather thsmoothTrend
also returns an object of class ``openair''. The object
includes three main components: call
, the command
used to generate the plot; data
, the data frame of
summarised information used to make the plot; and
plot
, the plot itself. If retained, e.g. using
output <- smoothTrend(mydata, "nox")
, this output
can be used to recover the data, reproduce or rework the
original plot or undertake further analysis.An openair output can be manipulated using a number of
generic operations, including print
, plot
and
summarise
. See openair.generics
for
further details.
smoothTrend
function provides a flexible way of
estimating the trend in the concentration of a pollutant or
other variable. Monthly mean values are calculated from an
hourly (or higher resolution) or daily time series. There
is the option to deseasonalise the data if there is
evidence of a seasonal cycle.smoothTrend
uses a Generalized Additive Model (GAM)
from the gam
package to find the most
appropriate level of smoothing. The function is
particularly suited to situations where trends are not
monotonic (see discussion with MannKendall
for more details on this). The smoothTrend
function
is particularly useful as an exploratory technique e.g. to
check how linear or non-linear trends are.
95estimates of the confidence intervals are also available
through the simulate
option. Residual resampling is
used.
Trends can be considered in a very wide range of ways,
controlled by setting type
- see examples below.
MannKendall
for an alternative method of
calculating trends.# load example data from package
data(mydata)
# trend plot for nox
smoothTrend(mydata, pollutant = "nox")
# trend plot by each of 8 wind sectors
smoothTrend(mydata, pollutant = "o3", type = "wd", ylab = "o3 (ppb)")
# several pollutants, no plotting symbol
smoothTrend(mydata, pollutant = c("no2", "o3", "pm10", "pm25"), pch = NA)
# percentiles
smoothTrend(mydata, pollutant = "o3", statistic = "percentile",
percentile = 95)
# several percentiles with control over lines used
smoothTrend(mydata, pollutant = "o3", statistic = "percentile",
percentile = c(5, 50, 95), lwd = c(1, 2, 1), lty = c(5, 1, 5))
Run the code above in your browser using DataLab