slope: Slope estimates from segmented/stepmented relationships

slopeR Documentation

Slope estimates from segmented/stepmented relationships

Description

Computes the slopes of each ‘segmented’ (or even ‘stepmented’) relationship in the fitted model.

Usage

slope(ogg, parm, conf.level = 0.95, rev.sgn=FALSE, 
    APC=FALSE, .vcov=NULL, .coef=NULL, 
    use.t=NULL, by=NULL, interc=TRUE, ..., digits = max(4, getOption("digits") - 2))

Arguments

ogg

an object of class "segmented", returned by any segmented method or a list of two segmented fits to compare the estimates of corresponding slopes.

parm

the segmented variable whose slopes have to be computed. If missing all the segmented variables are considered.

conf.level

the confidence level required.

rev.sgn

vector of logicals. The length should be equal to the length of parm, but it is recycled otherwise. When TRUE it is assumed that the current parm is ‘minus’ the actual segmented variable, therefore the sign is reversed before printing. This is useful when a null-constraint has been set on the last slope.

APC

logical. If APC=TRUE the ‘annual percent changes’, i.e. 100\times(\exp(\beta)-1), are computed for each interval (\beta is the slope). Only point estimates and confidence intervals are returned.

.vcov

The full covariance matrix of estimates. If unspecified (i.e. NULL), the covariance matrix is computed internally by vcov(ogg).

.coef

The regression parameter estimates. If unspecified (i.e. NULL), it is computed internally by coef(ogg).

use.t

Which quantiles should be used to compute the confidence intervals? If NULL (default) the t distribution is used only for objects obtained by segmented.lm.

by

Only for segmented.lme objects. It is a named list indicating covariate names and corresponding values affecting the fitted segmented relationship. For instance, by=list(group="2",z2=.2), provided that the model has been fitted by specifying group and z2 in x.diff (or as interaction with the segmented variable). Note that if the provided variables or values are irrelevant for changing the slopes, a warning message is printed.

interc

logical, only for 'stepmented' fits. If TRUE, the mean levels also account for the intercept; otherwise the first level is assumed to be zero.

...

Further arguments to be passed on to vcov.segmented, such as var.diff and is. See Details in vcov.segmented and summary.segmented.

digits

controls number of digits in the returned output.

Details

To fit broken-line relationships, segmented uses a parameterization whose coefficients are not the slopes. Therefore given an object "segmented", slope computes point estimates, standard errors, t-values and confidence intervals of the slopes of each segmented relationship in the fitted model.

Value

slope returns a list of matrices. Each matrix represents a segmented relationship and its number of rows equal to the number of segments, while five columns summarize the results.

Note

The returned summary is based on limiting Gaussian distribution for the model parameters involved in the computations. Sometimes, even with large sample sizes such approximations are questionable (e.g., with small difference-in-slope parameters) and the results returned by slope might be unreliable. Therefore is responsability of the user to gauge the applicability of such asymptotic approximations. Anyway, the t values may be not assumed for testing purposes and they should be used just as guidelines to assess the estimate uncertainty.

Author(s)

Vito M. R. Muggeo, vito.muggeo@unipa.it

References

Muggeo, V.M.R. (2003) Estimating regression models with unknown break-points. Statistics in Medicine 22, 3055–3071.

See Also

See also davies.test and pscore.test to test for a nonzero difference-in-slope parameter.

Examples

set.seed(16)
x<-1:100
y<-2+1.5*pmax(x-35,0)-1.5*pmax(x-70,0)+rnorm(100,0,3)
out<-glm(y~1)
out.seg<-segmented(out,seg.Z=~x,psi=list(x=c(20,80)))
## the slopes of the three segments....
slope(out.seg)
rm(x,y,out,out.seg)
#
## an heteroscedastic example..
set.seed(123)
n<-100
x<-1:n/n
y<- -x+1.5*pmax(x-.5,0)+rnorm(n,0,1)*ifelse(x<=.5,.4,.1)
o<-lm(y~x)
oseg<-segmented(o,seg.Z=~x,psi=.6)
slope(oseg)
slope(oseg,var.diff=TRUE) #better CI

segmented documentation built on Nov. 28, 2023, 1:07 a.m.