楼主: cdjxz
6476 4

[程序分享] 线性回归中的分段函数 [推广有奖]

  • 0关注
  • 0粉丝

已卖:115份资源

大专生

23%

还不是VIP/贵宾

-

威望
0
论坛币
1055 个
通用积分
0.5250
学术水平
0 点
热心指数
2 点
信用等级
2 点
经验
1838 点
帖子
25
精华
0
在线时间
50 小时
注册时间
2016-4-23
最后登录
2022-6-1

楼主
cdjxz 在职认证  发表于 2018-11-26 18:09:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
为什么做分段函数
在线性回归模型中,当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。这样的定义的变量有时候也可称为哑变量。要带上数值可以进一步调整运算如

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


二维码

扫码加我 拉你入群

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

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

关键词:线性回归模型 分段函数 线性回归 特征变量 取值空间

沙发
jiangbeilu 学生认证  发表于 2018-11-26 22:50:06
对x进行分段,都不如直接对X做一个分组,然后变成
factor类型,直接回归了

藤椅
cdjxz 在职认证  发表于 2018-11-27 00:44:22
补图

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

报纸
jgchen1966 发表于 2018-11-27 11:36:08
在统计学习中,老悼牙的问题了,早已有统计大佬研究透了,还值得去“研究”??
参考 R package
earth: Multivariate Adaptive Regression Splines
已有 1 人评分论坛币 收起 理由
jiangbeilu + 5 鼓励积极发帖讨论

总评分: 论坛币 + 5   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-14 11:48