openair (version 0.5-2)

linearRelation: Linear relations between pollutants

Description

This function considers linearRelationships between two pollutants. The relationships are calculated on different times bases using a linear model. The slope and 95% confidence interval in slope relationships by time unit are plotted in many ways. The function is particularly useful when considering whether relationships are consistent with emissions inventories.

Usage

linearRelation(mydata, 
x = "nox",
y = "no2",
period = "monthly",
condition = FALSE,
n = 20,
rsq.thresh = 0,
ylim = c(0, 20),
ylab = paste("slope from ", y, " = m.", x, " + c", sep = ""),
xlab = NULL,
auto.text = TRUE,
cols = NULL,
main = "",
span = 0.3,...)

Arguments

mydata
A data frame minimally containing date and two pollutants.
x
First pollutant that when plotted would appear on the x-axis of a relationship e.g. x = "nox".
y
Second pollutant that when plotted would appear on the y-axis of a relationship e.g. y = "pm10".
period
A range of different time periods can be analysed. "monthly" will plot a monthly time series and "weekly" a weekly time series of the relationship between x and y. "hour" will show the diurnal relationship between
condition
For period = "hour", period = "day" and period = "day.hour", setting condition = TRUE will plot the relationships split by year. This is useful for seeing how the relationships may be changing o
n
The minimum number of points to be sent to the linear model. Because there may only be a few points e.g. hours where two pollutants are available over one week, n can be set to ensure that at least n points are sent to t
rsq.thresh
The minimum correlation coefficient (R2) allowed. If the relationship between x and y is not very good for a particular period, setting rsq.thresh can help to remove those periods where the relationship is n
ylim
y-axis limits, specified by the user.
ylab
y-axis title, specified by the user.
xlab
x-axis title, specified by the user.
auto.text
Either 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 2 in NO2.
cols
Predefined colour scheme, currently only enabled for "greyscale".
main
Title of plot.
span
span for loess fit. Controls the fit line: lower values produce a more "wiggly" fit.
...
Other graphical parameters. A useful one to remove the strip with the date range on at the top of the plot is to set strip = FALSE.

Value

  • As well as generating the plot itself, linearRelation 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 <- linearRelation(mydata, "nox", "no2"), 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 summary. See openair.generics for further details.

Details

The relationships between pollutants can yield some very useful information about source emissions and how they change. A scatterPlot between two pollutants is the usual way to investigate the relationship. A linear regression is useful to test the strength of the relationship. However, considerably more information can be gleaned by considering different time periods, such as how the relationship between two pollutants vary over time, by day of the week, diurnally and so on. The linearRelation function does just that - it fits a linearRelationship between two pollutants over a wide range of time periods determined by period. linearRelation function is particularly useful if background concentrations are first removed from roadside concentrations, as the increment will relate more directly with changes in emissions. In this respect, using linearRelation can provide valuable information on how emissions may have changed over time, by hour of the day etc. Using the function in this way will require users to do some basic manipulation with their data first. If a data frame is supplied that contains nox, no2 and o3, the y can be chosen as y = "ox". In function will therefore consider total oxidant slope (sum of NO2 + O3), which can provide valuable information on likely vehicle primary NO emissions. Note, however, that most roadside sites do not have ozone measurements and calcFno2 is the alternative. A smooth line is added to all plots except period = "weekday" using smooth.spline. smooth.spline uses Generalized Cross Validation (GCV) to find a line that is (in laymans terms!) neither too wiggly nor too smooth. The line tends to highlight both the overall tendency of a relationship as well as some of the more interesting features.

See Also

calcFno2

Examples

Run this code
# monthly relationship between NOx and SO2 - note rapid fall in ratio at the beginning of the series
linearRelation(mydata, x = "nox", y = "so2")

# monthly oxidant slope - approximately corresponding to f-NO2
# note data frame needs date, nox, no2 and o3
# clear increase in slope at the end of 2002/beginning of 2003
linearRelation(mydata, x = "nox", y = "ox")

# diurnal oxidant slope by year
# clear change in magnitude starting 2003, but the diurnal profile has also changed:
# the morning and evening peak hours are more important, presumably due to change in certain vehicle types
linearRelation(mydata, x = "nox", y = "ox", period = "hour", condition = TRUE)

# PM2.5/PM10 ratio, but only plot where monthly R2 >= 0.8
linearRelation(mydata, x = "pm10", y = "pm25", rsq.thresh = 0.8)

Run the code above in your browser using DataLab