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", shade = "grey95", 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
cannot hatype
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 100 will mean that all data FALSE
. 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 manually usincutData
and
lattice:xyplot
. For example, smoothTrend
passes the option
hemisphere = "southern"
on to cutData
to provide southern
(rather than defausmoothTrend
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. Note that
data
is a list of two data frames: data
(the
original data) and fit
(the smooth fit that has details of
the fit and teh uncertainties). 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
.
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 TheilSen
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.
95confidence 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.
TheilSen
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