在R中使用非线性函数的分段非线性回归

时间:2012-02-24 03:18:07

标签: r regression nonlinear-functions piecewise

我希望使用具有多个断点的非线性函数分段执行回归。我已经完成了分段线性回归,但是当指定任何类型的非线性函数时,我们如何在R中设置?

具体来说,我对使用两个断点的3个函数线性,指数和指数感兴趣。请指教

KARTHIK

2 个答案:

答案 0 :(得分:3)

使用nls()(非线性最小二乘法)可以解决您的问题吗?我使用了类似于此的公式,为每个“片段”添加了True / False语句:

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。如果您可以更具体,或分别提供三个回归的代码,我可以使我的答案更具体。

答案 1 :(得分:0)

我的建议是加载&#39; splines&#39;包然后运行help(bs)中的示例。您可以使用线性回归机制获得分段立方(但在结点处连续)拟合。哈雷尔在他的“公羊”中使用了这种策略,效果非常好。包。加载&#39; rms&#39;并查看help(rcs)。该页面上的示例使用了他的逻辑回归实现,但rcs()条款也适用于ols()cph()