Ich versuche, eine Linie + Exponentialkurve an einige Daten anzupassen. Zunächst habe ich versucht, dies mit künstlichen Daten zu tun. Die Funktion ist: Es ist effektiv eine Exponentialkurve mit einem linearen Abschnitt sowie einem zusätzlichen horizontalen Verschiebungsparameter ( m ). Wenn ich jedoch die Funktion von R verwende, erhalte ich den gefürchteten Fehler " singuläre Gradientenmatrix bei anfänglichen Parameterschätzungen ", auch wenn ich dieselben Parameter verwende, die ich ursprünglich zum Generieren der Daten verwendet habe. Ich habe die verschiedenen Algorithmen ausprobiert, verschiedene Startwerte und versucht zu verwenden
nls()
optim
die verbleibende Summe der Quadrate zu minimieren, alles ohne Erfolg. Ich habe gelesen, dass ein möglicher Grund dafür eine Überparametrisierung der Formel sein könnte, aber ich glaube nicht, dass dies der Fall ist. Hat jemand einen Vorschlag für dieses Problem? Oder ist das nur ein unangenehmes Modell?
Ein kurzes Beispiel:
#parameters used to generate the data
reala=-3
realb=5
realc=0.5
realr=0.7
realm=1
x=1:11 #x values - I have 11 timepoint data
#linear+exponential function
y=reala + realb*realr^(x-realm) + realc*x
#add a bit of noise to avoid zero-residual data
jitter_y = jitter(y,amount=0.2)
testdat=data.frame(x,jitter_y)
#try the regression with similar starting values to the the real parameters
linexp=nls(jitter_y~a+b*r^(x-m)+c*x, data=testdat, start=list(a=-3, b=5, c=0.5, r=0.7, m=1), trace=T)
Vielen Dank!