Я намагаюся здійснити аналіз "точки зміни" або багатофазну регресію за допомогою nls()
Р.
Ось кілька фальшивих даних, які я зробив . Формула, яку я хочу використати для пристосування даних, така:
Що потрібно зробити, це встановити дані до певної точки з певним перехопленням і нахилом ( і \ beta_1 ), після чого, після деякого значення x ( \ delta ), збільшуйте нахил на \ beta_2 . Ось у чому вся справа в максі. Перед точкою \ delta вона дорівнює 0, а \ beta_2 буде нульовим.
Отже, ось моя функція:
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
Я щойно зробив невдалі дані? Спершу я спробував це встановити на реальних даних, і отримав таку ж помилку, і я просто зрозумів, що мої початкові параметри запуску були недостатньо хорошими.