【问题标题】:Piecewise non-linear regression using non-linear function in R在 R 中使用非线性函数的分段非线性回归
【发布时间】:2012-03-14 13:22:32
【问题描述】:

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

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

卡提克

【问题讨论】:

  • 你是如何进行分段线性回归的,为什么同样的方法不能推广到非线性函数? segmented 包可以进行分段线性回归,如果你的模型是y ~ x + exp(x) + log(x),它实际上是线性的(有三个预测器,xexp(x)log(x))。

标签: r regression nonlinear-functions piecewise


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我的建议是加载“splines”包,然后运行help(bs) 中的示例。您可以使用线性回归机制获得分段三次(但在节点处连续)拟合。 Harrell 在他的“rms”一揽子计划中使用了这种策略,效果非常好。加载“rms”并查看help(rcs)。该页面上的示例使用了他的逻辑回归实现,但rcs() 术语也适用于ols()cph()

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2015-01-02
    • 2011-10-14
    • 1970-01-01
    • 2017-05-18
    • 2016-07-09
    • 2012-01-12
    相关资源
    最近更新 更多