Я пытаюсь реализовать анализ "точки изменения" или многофазную регрессию с использованием nls()
R.
Вот некоторые фальшивые данные, которые я сделал . Формула, которую я хочу использовать, чтобы соответствовать данным:
Предполагается, что это должно соответствовать данным до определенной точки с определенным пересечением и наклоном ( \ beta_0 и ), а затем, после определенного значения 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
Я только что сделал неудачные данные? Сначала я попытался подстроить это под реальные данные, и получил ту же ошибку, и я просто подумал, что мои начальные начальные параметры не были достаточно хорошими.