J'essaye d'implémenter une analyse de "point de changement", ou une régression polyphasée en utilisant nls()
dans R.
Voici quelques fausses données que j'ai faites . La formule que je veux utiliser pour ajuster les données est la suivante:
Ce que cela est censé faire, c'est ajuster les données jusqu'à un certain point avec une certaine interception et pente ( et ), puis, après une certaine valeur x ( ), augmenter la pente de . C'est de cela qu'il s'agit. Avant le point , il sera égal à 0 et sera remis à zéro.
Alors, voici ma fonction pour ce faire:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
Et j'essaie d'adapter le modèle de cette façon
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
J'ai choisi ces paramètres de départ, parce que je sais que ce sont les paramètres de départ, parce que j'ai inventé les données.
Cependant, j'obtiens cette erreur:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Est-ce que je viens de faire des données malheureuses? J'ai d'abord essayé d'ajuster cela sur des données réelles, et j'obtenais la même erreur, et j'ai juste pensé que mes paramètres de démarrage initiaux n'étaient pas assez bons.