cable.fit.known.change {bentcableAR}  R Documentation 
These functions compute the profile deviance over a (\tau,\gamma)
grid
to either fit a bentcable regression with known transition, or to
generate initial values for a bentcable regression with unknown
transition. cable.dev
and cable.fit.known.change
form
the main engine of bentcable.dev.plot
.
cable.ar.0.fit(y.vect, t.vect = NULL, tau.vect, gamma.vect, dev.mat,
stick = FALSE)
cable.dev(tau.vect, gamma.vect, y.vect, t.vect = NULL, p = 0)
cable.fit.known.change(y.vect, t.vect = NULL, n = NA,
tau.vect, gamma.vect, dev.mat, p = 0)
y.vect 
A numeric vector of response values. 
t.vect 
A numeric vector of design points. Specifying

n 
Length of response vector (optional). 
tau.vect 
A numeric vector of 
gamma.vect 
A numeric vector of 
dev.mat 
A numeric matrix (can be single column) corresponding to the bentcable
profile deviance surface / function over the 
p 
The autoregressive order (nonnegative integer).

stick 
A logical value; if 
Given the response data in y.vect
and design points
in t.vect
, cable.dev
evaluates the bentcable
profile deviance surface / function over the userspecified
(\tau,\gamma)
grid. The returned values are intended
to be used in conjunction with contour
or persp
,
in which case tau.vect
and gamma.vect
should have length
greater than 1 so that the returned object is a matrix with at least
two columns. If such a plot is not required, then tau.vect
and/or gamma.vect
can be scalar. This function is internal
to the main plotting interface bentcable.dev.plot
.
The grid point at which the profile deviance is maximum
corresponds to a bentcable fit given a known transition
that is best among the specified grid points.
cable.fit.known.change
locates this peak and computes
this fit. If multiple peaks exist (such as along a ridge),
then only that at the smallest \tau
and smallest \gamma
is used.
For both functions, p=0
should be specified to indicate
independent data (time series or otherwise). For timeseries
data, a positive integer p
should be specified as the
autoregressive order. Fitting is done by internally calling
the builtin R function lm
for p=0
and arima
for nonzero p
; this procedure is appropriate since
bentcable regression with a known transition is linear.
Note that the gridbased cable.fit.known.change
does not locate the true peak of the continuous profile
deviance surface / function. However, for a grid that traps
the true peak between grid points, the returned fit is
approximately the overall best fit (with all parameters
unknown), and thus can be fed into bentcable.ar
as initial values for computing the actual best fit. A special
case is p=0
for independent data (timeseries or otherwise),
which can be handled by cable.ar.0.fit
(called internally by
bentcable.ar
). cable.ar.0.fit
calls
cable.ar.p.iter
when stick=FALSE
but calls stick.ar.0
when stick=TRUE
; in both cases, the builtin R function nls
is utilized to perform maximum likelihood.
For all three functions, to fit a broken stick with a known
break point, gamma.vect
should be the single
value 0, and thus dev.mat
is a column matrix (see
bentcable.dev.plot
).
fit 
Returned by For For 
init 
Returned by 
y 
Same as 
t 
Same as 
n , p , stick 
As supplied by the user: returned by 
cable.dev
returns the evaluated profile deviance
surface / function as a matrix.
For timeseries data, t.vect
MUST be
equidistant with unit increments; otherwise, these
functions will return meaningless values. (For
independent data, t.vect
can be nonequidistant.)
Gridbased bentcable regression and its use in subsequent overall fits rely on locating the region in which the continous deviance surface truly peaks. The user should be aware of possible local maxima and/or coarse grids that result in lessthanbest fits.
These functions are intended for internal use by bentcable.dev.plot
and bentcable.ar
.
Grace Chiu
See the bentcableAR
package references.
bentcable.dev.plot
, bentcable.ar
,
nls
, lm
, arima
data(stagnant)
data(sockeye)
# nontimeseries data: compute gridbased profile deviance
cable.dev( seq(.04,.16,length=10), seq(.2,.65,length=10),
stagnant$loght, stagnant$logflow )
# compare to this:
# bentcable.dev.plot( seq(.04,.16,length=10),
# seq(.2,.65,length=10), stagnant$loght, stagnant$logflow )$dev
# AR(2) bent cable, start time at 0: find best gridbased fit
dev < cable.dev( seq(6,18,length=15), seq(.01,12,length=15),
sockeye$logReturns, p=2 )
contour( seq(6,18,length=15), seq(.01,12,length=15), dev )
cable.fit.known.change( sockeye$logReturns, tau.v=seq(6,18,length=15),
gamma.v=seq(.01,12,length=15), dev.mat=dev, p=2 )
# AR(0) broken stick, start time at 80: find best overall fit
dev < cable.dev ( seq(85,97,length=15), 0, sockeye$logReturns,
sockeye$year)
plot( seq(85,97,length=15), dev, type="l" )
cable.ar.0.fit( sockeye$logReturns, sockeye$year,
tau.v=seq(85,97,length=15), gamma.v=0, dev.mat=dev,
stick=TRUE )
# compare to this:
# bentcable.ar( sockeye$logReturns, bentcable.dev.plot(
# seq(85,97,length=15), 0, sockeye$logReturns, sockeye$year, TRUE
# ), stick=TRUE, t.vect=sockeye$year )