Експоненціальний закон (негативний) має вигляд . Якщо ви допускаєте зміни одиниць у значеннях x і y , однак скажіть y = α y ′ + β і x =у= - експ(−x)xyy=αy′+β , то закон буде виражено якx=γx′+δ
αy′+β=y=−exp(−x)=−exp(−γx′−δ),
який алгебраїчно еквівалентний
y′=−1αexp(−γx′−δ)−β=a(1−uexp(−bx′))
використовуючи три параметри , u = 1 / ( β exp ( δ ) ) , і b = γ . Ми можемо визнати в якості параметра масштабу для у , б в якості параметра масштабу для х , і U як похідні від місця розташування параметра для х .a=−β/αu=1/(βexp(δ))b=γaybxux
Як правило, ці параметри можна ідентифікувати з першого погляду з сюжету :
Параметр a - значення горизонтальної асимптотики, трохи менше .2000
Параметр - відносна величина кривої, що піднімається від початку, до її горизонтальної асимптоти. Отже, підйом тут трохи менше 2000 - 937 ; відносно, це приблизно 0,55 асимптоти.u2000−9370.55
Оскільки , коли x дорівнює трикратному значенню 1 / b, крива повинна була піднятися приблизно до 1 - 0,05 або 95 % від її загальної суми. 95 % зростання з 937 до майже 2000 розміщує нас близько 1950 року ; сканування через сюжет означає, що це зайняло від 20 до 25 днів. Давайте назвемо це 24 для простоти, звідки б ≈ +3 / 24exp(−3)≈0.05x1/b1−0.0595%95%93720001950202524 . (Цей 95 % метод виявлення експональної шкали очного яблука є стандартним у деяких полях, де багато використовують експоненціальні графіки.)b≈3/24=0.12595%
Подивимося, як це виглядає:
plot(Days, Emissions)
curve((y = 2000 * (1 - 0.56 * exp(-0.125*x))), add = T)
Непогано для початку! (Навіть незважаючи на введення 0.56
замість 0.55
, що все одно було грубим наближенням.) Ми можемо відполірувати це за допомогою 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)
Вихід nls
містить велику інформацію про невизначеність параметрів. Наприклад , простий summary
забезпечує стандартні помилки оцінок:
> 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 ***
Ми можемо читати та працювати з усією коваріаційною матрицею оцінок, що корисно для оцінки одночасних довірчих інтервалів (принаймні для великих наборів даних):
> 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
підтримує графіки профілю для параметрів, надаючи більш детальну інформацію про їх невизначеність:
> plot(profile(fit))
a :
219451995