全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6427 4
2018-11-26
为什么做分段函数
在线性回归模型中,当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。这样的定义的变量有时候也可称为哑变量。要带上数值可以进一步调整运算如

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


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-11-26 22:50:06
对x进行分段,都不如直接对X做一个分组,然后变成
factor类型,直接回归了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-27 00:44:22
补图
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-27 01:31:14
jiangbeilu 发表于 2018-11-26 22:50
对x进行分段,都不如直接对X做一个分组,然后变成
factor类型,直接回归了
这是两回事,你那样做也不是可以的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-27 11:36:08
在统计学习中,老悼牙的问题了,早已有统计大佬研究透了,还值得去“研究”??
参考 R package
earth: Multivariate Adaptive Regression Splines
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群