J'essaie d'adapter une ligne + une courbe exponentielle à certaines données. Pour commencer, j'ai essayé de le faire sur certaines données artificielles. La fonction est: Il s'agit en fait d'une courbe exponentielle avec une section linéaire, ainsi que d'un paramètre de décalage horizontal supplémentaire ( m ). Cependant, lorsque j'utilise la fonction de R, j'obtiens l' erreur redoutée de " matrice de gradient singulier aux estimations de paramètres initiales ", même si j'utilise les mêmes paramètres que ceux que j'ai utilisés pour générer les données en premier lieu. J'ai essayé les différents algorithmes, différentes valeurs de départ et essayé d'utiliser
nls()
optim
pour minimiser la somme résiduelle des carrés, tout cela en vain. J'ai lu qu'une raison possible à cela pourrait être une paramétrisation excessive de la formule, mais je ne pense pas que ce soit (n'est-ce pas?) Quelqu'un a-t-il une suggestion pour ce problème? Ou est-ce juste un modèle maladroit?
Un petit exemple:
#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)
Merci!