You can see non-parametric smoothers in action for fitting a curve through a scatterplot in Chapter 5 (p. 151). Here we are concerned with using non-parametric smoothers in statistical modelling where the object is to assess the relative merits of a range of different models in explaining variation in the response variable. One of the simplest model-fitting functions is loess (which replaces its predecessor called lowess).

The following example shows population change, Delta = log*(N(t + 1)11(t))* as a function of population density *(N(t))* in an investigation of density dependence in a sheep population. This is what the data look like:

soay<-read.table("c:\\temp\\soaysheep.txt",header=T) attach(soay) names(soay) [1] "Year" "Population" "Delta" plot(Population,Delta)

Broadly speaking, population change is positive at low densities (Delta > 0) and negative at high densities (Delta < 0) but there is a great deal of scatter, and it is not at all obvious what shape of smooth function would best describe the data. Here is the default loess:

model<-loess(Delta~Population) summary(model) Call: loess(formula = Delta~Population) Number of Observations: 44 Equivalent Number of Parameters: 4.66 Residual Standard Error: 0.2616 Trace of smoother matrix: 5.11 Control settings: normalize:TRUE span : 0.75 degree : 2 family : gaussian surface : interpolate cell = 0.2

Now draw the smoothed line using predict to extract the predicted values from model:

`xv<-seq(600,2000,1) ...`

Start Free Trial

No credit card required