The rock data in Venables and Ripley (1998) contains measurements
on four cross-sections of each of 12 oil-bearing rocks. The aim
is to predict permeability (perm) from three other
measurements: the total area (area), total perimeter
(peri) and a measure of ``roundness'' of the pores in
the rock cross-section (shape). Venables and Ripley (1998)
fitted this data set with a projection pursuit (PP) regression
model. Here we show how to use the snr function to fit
the following PP regression model
We first fit model (
) using the R function
ppr as in Venables and Ripley (1998). Then we fit
the same model using snr with initial values from
the ppr fit. We use a TPS with
and
to model
. We made the following transformations: dividing area
and peri by 10000, and taking the natural logarithm of perm.
> data(rock)
> attach(rock)
> area1 <- area/10000; peri1 <- peri/10000
> rock.ppr <- ppr(log(perm) ~ area1 + peri1 + shape,
data=rock, nterms=1, max.terms=5)
> summary(rock.ppr)
Call:
ppr(formula = log(perm) ~ area1 + peri1 + shape, rock.Rdata = rock,
nterms = 1, max.terms = 5)
Goodness of fit:
1 terms 2 terms 3 terms 4 terms 5 terms
19.590843 8.737806 5.289517 4.745799 4.490378
Projection direction vectors:
area1 peri1 shape
0.347565455 -0.937641311 0.005198698
Coefficients of ridge terms:
[1] 1.495419
> rock.snr <- snr(log(perm) ~ f(a1*area1+a2*peri1+sqrt(1-a1^2-a2^2)*shape),
func=f(u)~list(~u,tp(u)),
params=list(a1+a2~1),
start=list(params=c(.34,-.94)))
> rock.snr
Semi-parametric Nonlinear Regression Model Fit
Model: log(perm) ~ f(a1 * area1 + a2 * peri1 + sqrt(1 - a1^2 - a2^2) * shape)
Log-likelihood: -50.04593
Coefficients:
a1 a2
0.3449282 -0.9386264
Smoothing spline:
GCV estimate(s) of smoothing parameter(s): 1.249731e-06
Equivalent Degrees of Freedom (DF): 4.144281
Residual standard error: 0.770572
Number of Observations: 48
Converged after 5 iterations
> a <- seq(min(z),max(z),len=50)
> rock.snr.ci <- intervals(rock.snr,newdata=data.frame(u=a))
> rock.ppr.p <- predict(rock.ppr)
snr converged after 5 iterations. Let
.
In Figure
![]() |