我正在尝试实现“变化点”分析或nls()
在R中使用的多阶段回归。
这是我制作的一些虚假数据。我想用来拟合数据的公式是:
这应该做的是使数据具有特定的截距和斜率(和),直到特定点,然后在某个x值()之后,将斜率增加。这就是整个最大事情。在点之前,它等于0,并且将被清零。
因此,这是我的功能:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
我尝试以这种方式拟合模型
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
我选择了这些启动参数,因为我知道这些是启动参数,因为我整理了数据。
但是,我收到此错误:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
我刚刚做了不幸的数据吗?我首先尝试将其拟合到实际数据上,并得到相同的错误,但我只是发现我的初始启动参数不够好。