Je voudrais adapter les courbes exponentielles aux ensembles de données de profils de température verticale. Parfois, la forme exponentielle est positive et d'autres fois négative selon les conditions de température de l'air. En fin de compte je voudrais ajuster chaque courbe puis extraire le gradient et intercepter pour une série de profils de température individuels (faire une boucle de l'ajustement et l'extraction des paramètres)Ajustement de la courbe exponentielle et extraction du gradient et de l'ordonnée à l'origine
J'ai essayé plusieurs suggestions sur stackoverflow et Google et ne peut pas passer l'étape «estimation initiale» ... Toute aide serait appréciée.
Ma dernière et tentative la plus prometteuse est ci-dessous (tiré d'un exemple sur stackoverflow - (whuber):
Mes données:
Temps1<-c(284.1875, 285.6550, 286.2342, 286.9142, 287.7900,
290.3492,295.2517, 298.1608)
Temps2<-c(275.6958, 275.0583, 274.7858, 274.4458, 273.9900, 273.1675,
272.3225, 271.5875)
Depths<-c(-100,-70,-56,-42,-28,-14,0,7)
d <- data.frame(x = Temps1, y = Depths)
c.0 <- min(d[,1]) * 0.5
model.0 <- lm(log(Temps1) - c.0 ~ Depths, data=d)
start <- list(a=exp(coef(model.0)[1]), b=coef(model.0)[2], c=c.0)
model <- nls(d[,1]~ a * exp(b * Depths) + c, data = d, start = start)
Je suis coincé avec l'erreur: « Erreur dans nlsModel (formule, mf, start, wts): matrice de gradient singulier aux estimations initiales des paramètres En outre: Messages d'avertissement: 1: En min (x): pas d'arguments non manquants à min; retourn Inf 2: In max (x): pas d'arguments non manquants à max; r eturning -Inf "
cette estimation initiale semble fonctionner liste '(a = 1, b = 1, c = 1)' - aussi vous devez passer le nom de la variable plutôt que celui de la matrice à partir de o: 'nls (x ~ a * exp (b * y) + c, données = d, start = liste (a = 1, b = 1, c = 1)) ' –
user20650