我希望使用具有多个断点的非线性函数分段执行回归。我已经完成了分段线性回归,但是在指定任何类型的非线性函数时,我们如何在 R 中进行设置?
具体来说,我对使用两个断点的线性、指数和指数 3 个函数感兴趣。请指教
卡提克
我希望使用具有多个断点的非线性函数分段执行回归。我已经完成了分段线性回归,但是在指定任何类型的非线性函数时,我们如何在 R 中进行设置?
具体来说,我对使用两个断点的线性、指数和指数 3 个函数感兴趣。请指教
卡提克
使用nls()
(非线性最小二乘法)会解决您的问题吗?我使用了与此类似的公式,通过为每个“片段”添加真/假语句:
reg = nls( y ~ (Z < 0.33) * a + (Z < 0.33) * Z * b +
(Z >= 0.33 & Z < 0.67) * Z ^ a2 +
(Z >= 0.67) * a3 + (Z >= 0.67) * Z * a4,
start = list(a = 0, b = 50, a2 = 100, a3 = 150, a4 = 80),
data = yourdata)
在上面的程式化示例中,断点位于 Z = 0.33 和 Z = 0.67。如果您可以更具体,或者分别提供三个回归的代码,我可以让我的答案更具体。
我的建议是加载“样条线”包,然后在help(bs)
. 您可以使用线性回归机制获得分段三次(但在节点处连续)拟合。Harrell 在他的“rms”一揽子计划中使用了这种策略,效果非常好。加载“rms”并查看help(rcs)
. 该页面上的示例使用了他的逻辑回归实现,但rcs()
术语ols()
也cph()
适用。