loess.ancova: Fit a semiparametric ANCOVA model with a local polynomial...

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/fANOVA_all.R

Description

Fit a semiparametric ANCOVA model with a local polynomial smoother. The specific model considered here is

y_ij= g_i + m(x_ij) + e_ij,

where the parametric part of the model, g_i, is a factor variable; the nonparametric part of the model, m(.), is a nonparametric smooth function; e_ij are independent identically distributed errors. The errors e_ij do not have to be independent N(0, sigma^2) errors. The errors can be heteroscedastic, i.e., e_ij = sigma_i(x_ij) * u_ij, where u_ij are independent identically distributed errors with mean 0 and variance 1. The model is fitted by the direct estimation method (Speckman, 1988), or by the backfitting method (Buja, Hastie and Tibshirani, 1989; Hastie and Tibshirani, 1990).

Usage

1
2
3
4
loess.ancova(x, y, group, degree = 2, criterion = c("aicc", "gcv"), 
		family = c("gaussian", "symmetric"), method=c("Speckman", "Backfitting"), 
		iter = 10, tol = 0.01, user.span = NULL, plot = FALSE, 
		data.points = FALSE, legend.position = "topright", ...)

Arguments

x

a vector or two-column matrix of covariate values.

y

a vector of response values.

group

a vector of group indicators that has the same length as y.

degree

the degree of the local polynomials to be used. It can ben 0, 1 or 2.

criterion

the criterion for automatic smoothing parameter selection: “aicc” denotes bias-corrected AIC criterion, “gcv” denotes generalized cross-validation.

family

if “gaussian” fitting is by least-squares, and if “symmetric” a re-descending M estimator is used with Tukey's biweight function.

method

if “Speckman” the direct estimation method by Speckman (1988) will be used, and if “Backfitting” The model is fitted by the backfitting method (Buja, Hastie and Tibshirani, 1989; Hastie and Tibshirani, 1990).

iter

the number of iterations.

tol

the number of tolerance in the iterations.

user.span

the user-defined parameter which controls the degree of smoothing. If it is not specified, the smoothing parameter will be selected by “aicc” or “gcv” criterion.

plot

if TRUE (when x is one-dimensional), the fitted curves for all groups will be generated; if TRUE (when x is two-dimensional), only the smooth component in the model will be plotted.

data.points

if TRUE, the data points will be displayed in the plot.

legend.position

the position of legend in the plot: “topright”, “topleft”, “bottomright”, “bottomleft”, etc.

...

control parameters.

Details

Fit a local polynomial regression with automatic smoothing parameter selection. The predictor x can either one-dimensional or two-dimensional.

Value

a list of a vector of the parametric estimates and an object of class “loess”.

Author(s)

X.F. Wang wangx6@ccf.org

References

Speckman, P. (1988). Kernel Smoothing in Partial Linear Models. Journal of the Royal Statistical Society. Series B (Methodological), 50, 413–436.

Buja, A., Hastie, T. J. and Tibshirani, R. J. (1989). Linear smoothers and additive models (with discussion). Annals of Statistics, 17, 453–555.

Hastie, T. J. and Tibshirani, R. J. (1990). Generalized Additive Models. Vol. 43 of Monographs on Statistics and Applied Probability, Chapman and Hall, London.

See Also

loess.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
## Fit semiparametric ANCOVA model
set.seed(555)
n1 <- 80
x1 <- runif(n1,min=0, max=3)
sd1 <- 0.3
e1 <- rnorm(n1,sd=sd1)
y1 <- 3*cos(pi*x1/2)  + 6 + e1

n2 <- 75
x2 <- runif(n2, min=0, max=3)
sd2 <- 0.2
e2 <- rnorm(n2, sd=sd2)
y2 <- 3*cos(pi*x2/2) + 3 + e2

n3 <- 90
x3 <- runif(n3, min=0, max=3)
sd3 <- 0.3
e3 <- rnorm(n3, sd=sd3)
y3 <- 3*cos(pi*x3/2)  + e3

data.bind <- rbind(cbind(x1,y1,1), cbind(x2,y2,2),cbind(x3,y3,3))
data.bind <- data.frame(data.bind)
colnames(data.bind)=c('x','y','group') 

x <- data.bind[,1]
y <- data.bind[,2]
group <- data.bind[,3]

loess.ancova(x,y,group, plot=TRUE, data.points=TRUE)

## Fit semiparametric ANCOVA model when the predictor is two-dimensional
n1 <- 100
x11 <- runif(n1,min=0, max=3)
x12 <- runif(n1,min=0, max=3)
sd1 <- 0.2
e1 <- rnorm(n1,sd=sd1)
y1 <- sin(2*x11) + sin(2*x12)  + e1

n2 <- 100
x21 <- runif(n2, min=0, max=3)
x22 <- runif(n2, min=0, max=3)
sd2 <- 0.25
e2 <- rnorm(n2, sd=sd2)
y2 <- sin(2*x21) + sin(2*x22) + 1 + e2

n3 <- 120
x31 <- runif(n3, min=0, max=3)
x32 <- runif(n3, min=0, max=3)
sd3 <- 0.25
e3 <- rnorm(n3, sd=sd3)
y3 <- sin(2*x31) + sin(2*x32) + 3 + e3

data.bind <- rbind(cbind(x11, x12 ,y1,1), cbind(x21, x22, y2,2),cbind(x31, x32,y3,3))
data.bind <- data.frame(data.bind)
colnames(data.bind)=c('x1','x2', 'y','group') 

loess.ancova(data.bind[,c(1,2)], data.bind$y, data.bind$group, plot=TRUE)

Example output

fANCOVA 0.5-1 loaded
$linear.fit
                 [,1]
(Intercept)  5.875129
group2      -3.009935
group3      -6.101343

$smooth.fit
Call:
loess(formula = lm.res ~ x, span = span1, degree = degree, family = family)

Number of Observations: 245 
Equivalent Number of Parameters: 5.4 
Residual Standard Error: 0.2912 

$linear.fit
                  [,1]
(Intercept) -0.1933993
group2       1.0208445
group3       3.0423428

$smooth.fit
Call:
loess(formula = lm.res ~ x1 + x2, span = span1, degree = degree, 
    family = family)

Number of Observations: 320 
Equivalent Number of Parameters: 17.74 
Residual Standard Error: 0.2364 

fANCOVA documentation built on Nov. 13, 2020, 5:07 p.m.