refund (version 0.1-23)

fosr2s: Two-step function-on-scalar regression

Description

This function performs linear regression with functional responses and scalar predictors by (1) fitting a separate linear model at each point along the function, and then (2) smoothing the resulting coefficients to obtain coefficient functions.

Usage

fosr2s(
  Y,
  X,
  argvals = seq(0, 1, , ncol(Y)),
  nbasis = 15,
  norder = 4,
  pen.order = norder - 2,
  basistype = "bspline"
)

Arguments

Y

the functional responses, given as an \(n\times d\) matrix.

X

\(n\times p\) model matrix, whose columns represent scalar predictors. Should ordinarily include a column of 1s.

argvals

the \(d\) argument values at which the functional responses are evaluated, and at which the coefficient functions will be evaluated.

nbasis

number of basis functions used to represent the coefficient functions.

norder

norder of the spline basis, when basistype="bspline" (the default, 4, gives cubic splines).

pen.order

order of derivative penalty.

basistype

type of basis used. The basis is created by an appropriate constructor function from the fda package; see basisfd. Only "bspline" and "fourier" are supported.

Value

An object of class fosr, which is a list with the following elements:

fd

object of class "fd" representing the estimated coefficient functions. Its main components are a basis and a matrix of coefficients with respect to that basis.

raw.coef

\(d\times p\) matrix of coefficient estimates from regressing on X separately at each point along the function.

raw.se

\(d\times p\) matrix of standard errors of the raw coefficient estimates.

yhat

\(n\times d\) matrix of fitted values.

est.func

\(d\times p\) matrix of coefficient function estimates, obtained by smoothing the columns of raw.coef.

se.func

\(d\times p\) matrix of coefficient function standard errors.

argvals

points at which the coefficient functions are evaluated.

lambda

smoothing parameters (chosen by REML) used to smooth the \(p\) coefficient functions with respect to the supplied basis.

Details

Unlike fosr and pffr, which obtain smooth coefficient functions by minimizing a penalized criterion, this function introduces smoothing only as a second step. The idea was proposed by Fan and Zhang (2000), who employed local polynomials rather than roughness penalization for the smoothing step.

References

Fan, J., and Zhang, J.-T. (2000). Two-step estimation of functional linear models with applications to longitudinal data. Journal of the Royal Statistical Society, Series B, 62(2), 303--322.

See Also

fosr, pffr

Examples

Run this code
# NOT RUN {
require(fda)

# Effect of latitude on daily mean temperatures
tempmat = t(CanadianWeather$dailyAv[,,1])
latmat = cbind(1, scale(CanadianWeather$coord[ , 1], TRUE, FALSE))  # centred!
fzmod <- fosr2s(tempmat, latmat, argvals=day.5, basistype="fourier", nbasis=25)

par(mfrow=1:2)
ylabs = c("Intercept", "Latitude effect")
for (k in 1:2) {
	with(fzmod,matplot(day.5, cbind(raw.coef[,k],raw.coef[,k]-2*raw.se[,k],
	     raw.coef[,k]+2*raw.se[,k],est.func[,k],est.func[,k]-2*se.func[,k],
	     est.func[,k]+2*se.func[,k]), type=c("p","l","l","l","l","l"),pch=16,
	     lty=c(1,2,2,1,2,2),col=c(1,1,1,2,2,2), cex=.5,axes=FALSE,xlab="",ylab=ylabs[k]))
    axesIntervals()
    box()
    if (k==1) legend("topleft", legend=c("Raw","Smoothed"), col=1:2, lty=2)
}

# }

Run the code above in your browser using DataCamp Workspace