热线电话:13121318867

登录
2018-11-27 阅读量: 1407
线性回归里的分段函数

为什么做分段函数
在线性回归模型中,当X作为特征变量对因变量Y的影响趋势非线性,用普通的线性回归往往无法捕捉到。

一种方法是可以使用特征变量的多项式作为预测变量,可以得到在X取值的空间全局皆非线性的拟合函数。

但如果不希望得到全局的模型,希望每一段的变化斜率可以被表达出来,那么则可以使用分段函数。

如何做分段函数
这里,把X的取值范围分成一些区间,对每个区间拟合一个函数,相当于讲一个连续变量转换成多个有序的变量。

在X取值空间上创建分割点C1,C2,...,Ck,构造k+1个新变量如下(在R的实现)Rcode如下

x<-c(1:100)

y<-log(x)

#线性模型拟合

linear_fit<-lm(y~x)

#分段拟合:5、10、20、50作为分割点

stage_fit<-lm (y~  I(x<=5) + I((x<=5)*x)

              + I(x>5 & x<=10) + I((x>5 & x<=10)*x)

              + I(x>10 & x<=20) + I((x>10 & x<=20)*x)

              + I(x>20 & x<=50) + I((x>20 & x<=50)*x)

              + I(x>50) + I((x>50)*x))

summary(stage_fit)

qplot(x,y)+geom_line(aes(x, fitted.values(linear_fit)),colour=2)+geom_line(aes(x, fitted.values(stage_fit)),colour=3)

其中,

是示性函数,条件成立返回1否则0。这样的定义的变量有时候也可称为哑变量。要带上数值可以进一步调整运算

需要注意的是,如果想要分段拟合的效果好,必须考虑每段回归的截距不同,所以在每段回归需要加上相应的示性函数

0.0000
6
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子