Sto cercando di implementare un'analisi del "punto di cambio" o una regressione multifase usando nls()
in R.
Ecco alcuni dati falsi che ho creato . La formula che voglio usare per adattare i dati è:
Ciò che si suppone debba fare è adattare i dati fino a un certo punto con una certa intercettazione e pendenza ( e \ beta_1 ), quindi, dopo un certo valore x ( \ delta ), aumentare la pendenza di \ beta_2 . Questo è tutto ciò che riguarda il massimo. Prima del punto \ delta , sarà uguale a 0 e \ beta_2 verrà azzerato.
Quindi, ecco la mia funzione per fare questo:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
E provo ad adattare il modello in questo modo
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
Ho scelto quei parametri iniziali, perché so che questi sono i parametri iniziali, perché ho creato i dati.
Tuttavia, ottengo questo errore:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Ho appena fatto dati sfavorevoli? Prima ho provato ad adattare questo dato ai dati reali e ho riscontrato lo stesso errore e ho solo pensato che i miei parametri iniziali di partenza non fossero abbastanza buoni.