Ich versuche, eine "Änderungspunkt" -Analyse oder eine mehrphasige Regression mit nls()
in R zu implementieren .
Hier sind einige gefälschte Daten, die ich gemacht habe . Die Formel, die ich verwenden möchte, um die Daten anzupassen, lautet:
Dies soll dazu dienen, die Daten bis zu einem bestimmten Punkt mit einem bestimmten und einer bestimmten Steigung ( und ) und dann nach einem bestimmten x-Wert ( ) die Steigung um erhöhen . Darum geht es bei der ganzen Max-Sache. Vor dem Punkt ist es gleich 0 und wird auf Null gesetzt.
Also, hier ist meine Funktion, um dies zu tun:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
Und ich versuche, das Modell so anzupassen
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
Ich habe diese Startparameter gewählt, weil ich weiß, dass dies die Startparameter sind, weil ich die Daten erfunden habe.
Ich erhalte jedoch diesen Fehler:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Habe ich gerade unglückliche Daten gemacht? Ich habe zuerst versucht, dies auf reale Daten anzupassen, und dabei den gleichen Fehler festgestellt. Ich habe nur herausgefunden, dass meine anfänglichen Startparameter nicht gut genug waren.
quelle