Ein (negatives) Exponentialgesetz hat die Form . Wenn Sie Änderungen der Einheiten in den x- und y- Werten zulassen , sagen wir jedoch y = α y ' + β und x = γ x ' + δ , dann wird das Gesetz ausgedrückt alsy=−exp(−x)xyy=αy′+βx=γx′+δ
αy′+β=y=−exp(−x)=−exp(−γx′−δ),
das ist algebraisch äquivalent zu
y′=−1αexp(−γx′−δ)−β=a(1−uexp(−bx′))
unter Verwendung von drei Parametern , u = 1 / ( β exp ( δ ) ) und b = γ . Wir können a als Skalierungsparameter für y , b als Skalierungsparameter für x erkennena=−β/αu=1/(βexp(δ))b=γaybx und wie aus einem Ableiten Position für den Parameter x .ux
Als Faustregel können diese Parameter auf einen Blick aus der Grafik identifiziert werden :
Der Parameter ist der Wert der horizontalen Asymptote, etwas weniger als 2000 .a2000
Der Parameter ist der relative Betrag, um den die Kurve vom Ursprung zu ihrer horizontalen Asymptote ansteigt. Hier beträgt der Anstieg also etwas weniger als 2000 - 937 ; relativ sind das ungefähr 0,55 der Asymptote.u2000−9370.55
Da , sollte die Kurve , wenn x dem dreifachen Wert von 1 / b entspricht, auf etwa 1 - 0,05 oder 95 % ihrer Gesamtheit angestiegen sein. 95 % des Anstiegs von 937 auf fast 2000 liegen um 1950 ; Das Scannen des Diagramms ergab, dass dies 20 bis 25 Tage dauerte . Nennen wir es 24 der Einfachheit halber, von wo aus b ≈ 3 / 24exp(−3)≈0.05x1/b1−0.0595%95%93720001950202524 . (Diese 95- prozentige Methode zur Ermittlung einer Exponentialskala ist in einigen Bereichen, in denen Exponentialkurven häufig verwendet werden, Standard.)b≈3/24=0.12595%
Mal sehen, wie das aussieht:
plot(Days, Emissions)
curve((y = 2000 * (1 - 0.56 * exp(-0.125*x))), add = T)
Nicht schlecht für den Anfang! (Trotz des Tippens 0.56
anstelle von 0.55
, was sowieso eine grobe Annäherung war.) Wir können es polieren mit nls
:
fit <- nls(Emissions ~ a * (1- u * exp(-b*Days)), start=list(a=2000, b=1/8, u=0.55))
beta <- coefficients(fit)
plot(Days, Emissions)
curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T, col="Green", lwd=2)
Die Ausgabe von nls
enthält umfangreiche Informationen zur Parameterunsicherheit. Zum Beispiel kann eine einfache summary
liefert Standardfehler der Schätzungen:
> summary(fit)
Parameters:
Estimate Std. Error t value Pr(>|t|)
a 1.969e+03 1.317e+01 149.51 2.54e-10 ***
b 1.603e-01 1.022e-02 15.69 1.91e-05 ***
u 6.091e-01 1.613e-02 37.75 2.46e-07 ***
Wir können die gesamte Kovarianzmatrix der Schätzungen lesen und damit arbeiten. Dies ist nützlich für die Schätzung simultaner Konfidenzintervalle (zumindest für große Datensätze):
> vcov(fit)
a b u
a 173.38613624 -8.720531e-02 -2.602935e-02
b -0.08720531 1.044004e-04 9.442374e-05
u -0.02602935 9.442374e-05 2.603217e-04
nls
unterstützt Profildiagramme für die Parameter und gibt detailliertere Informationen zu deren Unsicherheit:
> plot(profile(fit))
Hier ist einer der drei Ausgabediagramme, die die Variation von a :
219451995