Estoy tratando de implementar un análisis de "punto de cambio" o una regresión multifásica usando nls()
en R.
Aquí hay algunos datos falsos que he hecho . La fórmula que quiero usar para ajustar los datos es:
Lo que se supone que debe hacer es ajustar los datos hasta cierto punto con una cierta intersección y pendiente ( y ), luego, después de cierto valor de x ( ), aumente la pendiente en . De eso se trata toda la cuestión de max. Antes del punto , será igual a 0 y se pondrá a cero.β 1 δ β 2 δ β 2
Entonces, aquí está mi función para hacer esto:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
Y trato de ajustar el modelo de esta manera
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
Elegí esos parámetros iniciales, porque sé que esos son los parámetros iniciales, porque hice los datos.
Sin embargo, me sale este error:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
¿Acabo de hacer datos desafortunados? Primero intenté ajustar esto en datos reales, y estaba obteniendo el mismo error, y me di cuenta de que mis parámetros iniciales no eran lo suficientemente buenos.