#### A scalar response example.
annualprec <- log10(apply(CanadianWeather$dailyAv[,,
"Precipitation.mm"], 2,sum))
# The simplest 'fRegress' call is singular with more bases
# than observations, so we use a small basis for this example
smallbasis <- create.fourier.basis(c(0, 365), 25)
# There are other ways to handle this,
# but we will not discuss them here
tempfd <- smooth.basis(day.5,
CanadianWeather$dailyAv[,,"Temperature.C"], smallbasis)$fd
# Set up a list of predictors
xfdlist <- list(const=rep(1, 35), tempfd=tempfd)
# And some functional parameter objects to define the coefficient
# functions. The intercept must be constant for a scalar response
betabasis1 <- create.constant.basis(c(0, 365))
betafd1 <- fd(0, betabasis1)
betafdPar1 <- fdPar(betafd1)
betafd2 <- with(tempfd, fd(basisobj=basis, fdnames=fdnames))
# convert to an fdPar object
betafdPar2 <- fdPar(betafd2)
betalist <- list(const=betafdPar1, tempfd=betafdPar2)
# Now call fRegress.
precip.Temp <- fRegress(annualprec, xfdlist, betalist)
precip.cv = fRegress.CV(annualprec,xfdlist,betalist)
# Are the temperature profiles different accross regions,
# a functional response model
region.contrasts <- model.matrix(~factor(CanadianWeather$region))
rgnContr3 <- region.contrasts
dim(rgnContr3) <- c(1, 35, 4)
rgns <- paste('region', c('Atlantic', 'Continental', 'Pacific'),
sep='.')
dimnames(rgnContr3) <- list('', CanadianWeather$place, c('const', rgns))
const365 <- create.constant.basis(c(0, 365))
region.fd.Atlantic <- fd(matrix(rgnContr3[,,2], 1), const365)region.fd.Continental <- fd(matrix(rgnContr3[,,3], 1), const365)
region.fd.Pacific <- fd(matrix(rgnContr3[,,4], 1), const365)
region.fdlist <- list(const=rep(1, 35),
region.Atlantic=region.fd.Atlantic,
region.Continental=region.fd.Continental,
region.Pacific=region.fd.Pacific)
beta1 <- with(tempfd, fd(basisobj=basis, fdnames=fdnames))
beta0 <- fdPar(beta1)
betalist <- list(const=beta0, region.Atlantic=beta0,
region.Continental=beta0, region.Pacific=beta0)
TempRgn <- fRegress(tempfd, region.fdlist, betalist)
temprgn.ocv <- fRegress.CV(tempfd, region.fdlist, betalist)
Run the code above in your browser using DataLab