我正在尝试使用nls()
R实现“变化点”分析或多相回归。
这是我制作的一些假数据。我想用来拟合数据的公式是:
这应该做的是将数据拟合到具有一定截距和斜率(和)的某个点,然后,在某个 x 值()之后,将斜率增加。这就是整个 max 的意义所在。在点之前,它将等于 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
我刚刚制作了不幸的数据吗?我首先尝试在真实数据上进行拟合,并得到同样的错误,我只是认为我的初始启动参数不够好。