Prawo (ujemne) wykładnicze ma postać . Jeśli jednak zezwalasz na zmiany jednostek w wartościach x i y , powiedzmy, że y = α y ′ + β i x = γ x ′ + δ , wówczas prawo zostanie wyrażone jakoy=−exp(−x)xyy=αy′+βx=γx′+δ
αy′+β=y=−exp(−x)=−exp(−γx′−δ),
który algebraicznie jest równoważny
y′=−1αexp(−γx′−δ)−β=a(1−uexp(−bx′))
na podstawie trzech parametrów = - β / α , u = 1 / ( β exp ( δ ) ) , oraz b = γ . Można rozpoznać jako parametr skali dla Y , B jako parametr skali dla X i U , jak pochodzący z lokalizacji parametr x .a=−β/αu=1/(βexp(δ))b=γaybxux
Zasadniczo parametry te można zidentyfikować na podstawie wykresu :
Parametr jest wartością poziomej asymptoty, nieco mniejszą niż 2000 .a2000
Parametr jest względną wartością, jaką krzywa podnosi od początku do poziomej asymptoty. Tutaj wzrost jest zatem nieco mniejszy niż 2000 - 937 ; względnie, to około 0,55 asymptoty.u2000−9370.55
Ponieważ , gdy x równa się trzykrotności wartości 1 / b, krzywa powinna wzrosnąć do około 1 - 0,05 lub 95 % jego sumy. 95 % wzrostu z 937 do prawie 2000 stawia nas około 1950 r . ; skanowanie całego wykresu wskazuje, że zajęło to od 20 do 25 dni. Wezwanie Chodźmy go 24 dla uproszczenia, skąd b ≈ 3 / 24exp(−3)≈0.05x1/b1−0.0595%95%93720001950202524 . (Ta 95 % metoda gałki ocznej skali wykładniczej jest standardem w niektórych dziedzinach, w których często stosuje się wykresy wykładnicze).b≈3/24=0.12595%
Zobaczmy, jak to wygląda:
plot(Days, Emissions)
curve((y = 2000 * (1 - 0.56 * exp(-0.125*x))), add = T)
Nieźle jak na początek! (Nawet pomimo pisania 0.56
zamiast 0.55
, co i tak było dość przybliżone.) Możemy go wypolerować za pomocą 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)
Dane wyjściowe nls
zawierają obszerne informacje na temat niepewności parametrów. Np. Prosty summary
podaje standardowe błędy szacunków:
> 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 ***
Możemy czytać i pracować z całą macierzą kowariancji oszacowań, co jest przydatne do szacowania równoczesnych przedziałów ufności (przynajmniej dla dużych zestawów danych):
> 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
obsługuje wykresy profili dla parametrów, podając bardziej szczegółowe informacje o ich niepewności:
> plot(profile(fit))
a
219451995