Mam następujące dane i chciałbym dopasować do niego model ujemnego wzrostu wykładniczego:
Days <- c( 1,5,12,16,22,27,36,43)
Emissions <- c( 936.76, 1458.68, 1787.23, 1840.04, 1928.97, 1963.63, 1965.37, 1985.71)
plot(Days, Emissions)
fit <- nls(Emissions ~ a* (1-exp(-b*Days)), start = list(a = 2000, b = 0.55))
curve((y = 1882 * (1 - exp(-0.5108*x))), from = 0, to =45, add = T, col = "green", lwd = 4)
Kod działa i drukowana jest linia dopasowania. Jednak dopasowanie nie jest wizualnie idealne, a resztkowa suma kwadratów wydaje się być dość duża (147073).
Jak możemy poprawić nasze dopasowanie? Czy dane w ogóle pozwalają na lepsze dopasowanie?
Nie mogliśmy znaleźć rozwiązania tego problemu w sieci. Każda bezpośrednia pomoc lub link do innych stron / postów jest bardzo mile widziana.
r
nonlinear-regression
fitting
nls
Strohmi
źródło
źródło
fit <- nls(Emissions ~ a* (1- u*exp(-b*Days)), start = list(a = 2000, b = 0.1, u=.5)); beta <- coefficients(fit); curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T)
.Odpowiedzi:
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) x y y=αy′+β x=γx′+δ
który algebraicznie jest równoważny
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=γ a y b x u x
Zasadniczo parametry te można zidentyfikować na podstawie wykresu :
Parametr jest wartością poziomej asymptoty, nieco mniejszą niż 2000 .a 2000
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.u 2000−937 0.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.05 x 1/b 1−0.05 95% 95% 937 2000 1950 20 25 24 . (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.125 95%
Zobaczmy, jak to wygląda:
Nieźle jak na początek! (Nawet pomimo pisania
0.56
zamiast0.55
, co i tak było dość przybliżone.) Możemy go wypolerować za pomocąnls
:Dane wyjściowe
nls
zawierają obszerne informacje na temat niepewności parametrów. Np. Prostysummary
podaje standardowe błędy szacunków: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):
nls
obsługuje wykresy profili dla parametrów, podając bardziej szczegółowe informacje o ich niepewności:źródło
res <- residuals(fit); res %*% res