segreg | R Documentation |
segreg
(stepreg
) fits (generalized) linear segmented (stepmented) regression via a symbolic description of the linear predictor. This is an alternative but equivalent function, introduced since version 2.0-0 (segreg) and 2.1-0 (stepreg), to segmented.(g)lm
or stepmented.(g)lm
.
segreg(formula, data, subset, weights, na.action, family = lm, control = seg.control(),
transf = NULL, contrasts = NULL, model = TRUE, x = FALSE, var.psi = TRUE, ...)
stepreg(formula, data, subset, weights, na.action, family = lm, control = seg.control(),
transf = NULL, contrasts = NULL, model = TRUE, x = FALSE, var.psi = FALSE, ...)
formula |
A standard model formula also including one or more 'segmented'/'stepmented' terms via the function |
data |
The possible dataframe where the variables are stored |
subset |
Possible subset, as in |
weights |
Possible weight vector, see |
na.action |
a function which indicates what happen when the data contain NA values. See |
family |
The family specification, similar to |
control |
See |
transf |
an optional character string (with "y" as argument) meaning a function to apply to the response variable before fitting |
contrasts |
see |
model |
If |
x |
If |
var.psi |
logical, meaning if the standard errors for the breakpoint estimates should be returned in the object fit. If |
... |
Ignored |
The function allows to fit segmented/stepmented (G)LM regression models using a formula interface. Results will be the same of those coming from the traditional segmented.lm
and segmented.glm
(or stepmented.lm
or stepmented.glm
), but there are some additional facilities: i) it is possible to estimate strightforwardly the segmented/stepmented relationships in each level of a categorical variable, see argument by
in seg
; ii) it is possible to constrain some slopes of the segmented relationship, see argument est
or R
in seg
.
An object of class "segmented" (or "stepmented") which inherits from the class "lm" or "glm" depending on family
specification. See segmented.lm
.
Currently for fits returned by segreg
, confint.segmented
only works if method="delta"
.
Constraints on the mean levels (possibly via argument 'est' of seg
) are not yet allowed when calling stepreg
.
When the formula includes even a single segmented term with constraints (specified via the argument est
in seg()
), the relevant coefficients returned do not represent the slope differences as in segmented.lm
or segmented.glm
. The values depend on the constraints and are not usually interpretable. Use slope
the recover the actual slopes of the segmented relationships.
Vito Muggeo
Muggeo, V.M.R. (2003) Estimating regression models with unknown break-points. Statistics in Medicine 22, 3055-3071.
seg
, segmented
, stepmented
###########################
#An example using segreg()
###########################
set.seed(10)
x<-1:100
z<-runif(100)
w<-runif(100,-10,-5)
y<-2+1.5*pmax(x-35,0)-1.5*pmax(x-70,0)+10*pmax(z-.5,0)+rnorm(100,0,2)
##the traditional approach
out.lm<-lm(y~x+z+w)
o<-segmented(out.lm, seg.Z=~x+z, psi=list(x=c(30,60),z=.4))
o1<-segreg(y ~ w+seg(x,npsi=2)+seg(z))
all.equal(fitted(o), fitted(o1))
#put some constraints on the slopes
o2<-segreg(y ~ w+seg(x,npsi=2, est=c(0,1,0))+seg(z))
o3<-segreg(y ~ w+seg(x,npsi=2, est=c(0,1,0))+seg(z, est=c(0,1)))
slope(o2)
slope(o3)
##see ?plant for an additional example
###########################
#An example using stepreg()
###########################
### Two stepmented covariates (with 1 and 2 breakpoints)
n=100
x<-1:n/n
z<-runif(n,2,5)
w<-rnorm(n)
mu<- 2+ 1*(x>.6)-2*(z>3)+3*(z>4)
y<- mu + rnorm(n)*.8
os <-stepreg(y~seg(x)+seg(z,2)+w) #also includes 'w' as a possible linear term
os
summary(os)
plot(os, "z", col=2:4) #plot the effect of z
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.