[R] Piecewise Linear Regression

roger koenker roger at ysidro.econ.uiuc.edu
Tue May 31 02:23:19 CEST 2005


It is conventional to fit piecewise linear models by assuming  
Gaussian error and
using least squares methods, but one can argue that median regression  
provides
a more robust approach to this problem.  You might consider the  
following fit:

  x = c 
(6.25,6.25,12.50,12.50,18.75,25.00,25.00,25.00,31.25,31.25,37.50,37.50,5 
0.00,50.00,62.50,62.50,75.00,75.00,75.00,100.00,100.00)
  y = c 
(0.328,0.395,0.321,0.239,0.282,0.230,0.273,0.347,0.211,0.210,0.259,0.186 
,0.301,0.270,0.252,0.247,0.277,0.229,0.225,0.168,0.202)
library(quantreg)
plot(x,y)
fit <- rqss(y ~ qss(x))
plot(fit)

it gives 5 segments not 3, but this can be controlled by the choice  
of lambda in the qss
function, for example, try:

fit <- rqss(y ~ qss(x,lambda=3)
plot(fit,col="red")

which gives a fit like you suggest might be reasonable with only  
three segments.



url:    www.econ.uiuc.edu/~roger                Roger Koenker
email   rkoenker at uiuc.edu                       Department of Economics
vox:    217-333-4558                            University of Illinois
fax:    217-244-6678                            Champaign, IL 61820


On May 30, 2005, at 6:38 PM, Abhyuday Mandal wrote:

> Hi,
>
> I need to fit a piecewise linear regression.
>
> x = c 
> (6.25,6.25,12.50,12.50,18.75,25.00,25.00,25.00,31.25,31.25,37.50,37.50 
> ,50.00,50.00,62.50,62.50,75.00,75.00,75.00,100.00,100.00)
> y = c 
> (0.328,0.395,0.321,0.239,0.282,0.230,0.273,0.347,0.211,0.210,0.259,0.1 
> 86,0.301,0.270,0.252,0.247,0.277,0.229,0.225,0.168,0.202)
>
> there are two change points. so the fitted curve should look like
>
>
>
> \
>  \  /\
>   \/  \
>        \
>         \
>
> How do I do this in R ?
>
> Thank you,
> Abhyuday
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting- 
> guide.html
>




More information about the R-help mailing list