Mam podstawowe dane na temat redukcji emisji i kosztu na samochód:
q24 <- read.table(text = "reductions cost.per.car
50 45
55 55
60 62
65 70
70 80
75 90
80 100
85 200
90 375
95 600
",header = TRUE, sep = "")
Wiem, że jest to funkcja wykładnicza, dlatego spodziewam się, że uda mi się znaleźć model pasujący do:
model <- nls(cost.per.car ~ a * exp(b * reductions) + c,
data = q24,
start = list(a=1, b=1, c=0))
ale pojawia się błąd:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Przeczytałem mnóstwo pytań na temat błędu, który widzę i rozumiem, że problemem jest prawdopodobnie to, że potrzebuję lepszych / różnych start
wartości ( initial parameter estimates
ma to trochę więcej sensu), ale nie jestem pewien, biorąc pod uwagę dane, które mam, jak poszedłbym na temat szacowania lepszych parametrów.
exp(50)
i exp(95)
do wartości y przy x = 50 i x = 95. Jeśli ustawisz c=0
i weź dziennik y (tworząc relację liniową), możesz użyć regresji, aby uzyskać wstępne szacunki dla dziennika ( ) ib, które będą wystarczające dla twoich danych (lub jeśli dopasujesz linię przez początek, możesz wyjść a na 1 i po prostu użyj szacunku dla b ; to również wystarcza dla twoich danych). Jeśli b jest znacznie poza dość wąskim przedziałem wokół tych dwóch wartości, napotkasz pewne problemy. [Alternatywnie spróbuj innego algorytmu]