我正在尝试实现“变化点”分析或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
我刚刚做了不幸的数据吗?我首先尝试将其拟合到实际数据上,并得到相同的错误,但我只是发现我的初始启动参数不够好。
