## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

This dataframe contains measurements of radiation, temperature, wind speed and ozone concentration. We want to model ozone concentration as a function of the three continuous explanatory variables using non-parametric smoothers rather than specified nonlinear functions (the parametric multiple regression analysis is on p. 434):

```ozone.data<-read.table("c:\\temp\\ozone.data.txt",header=T)
attach(ozone.data)
names(ozone.data)```
` "rad"  "temp"  "wind"  "ozone"`

For data inspection we use pairs with a non-parametric smoother, lowess:

`pairs(ozone.data, panel=function(x,y) { points(x,y); lines(lowess(x,y))} )` Now fit all three explanatory variables using the non-parametric smoother s():

```model<-gam(ozone~s(rad)+s(temp)+s(wind))
summary(model)

Family: gaussian

Formula:
ozone ~ s(rad) + s(temp) + s(wind)
Parametric coefficients:

Estimate   Std. Error  t value  Pr( > |t|)
(Intercept)      42.10         1.66    25.36     < 2e-16    ***```
```Approximate significance of smooth terms:
edf  Est.rank        F    p-value
s(rad)     2.763     6.000    2.830     0.0138    *
s(temp)    3.841     8.000    8.080   2.27e-08    ***
s(wind)    2.918     6.000    8.973   7.62e-08    ***
R-sq.(adj) = 0.724 Deviance explained = 74.8%
GCV score = 338 Scale est. = 305.96 n = 111```

Note that the intercept is estimated as a parametric coefficient (upper table) and the three explanatory variables are fitted as smooth terms. All three are significant, ...

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required