(Отрицательный) экспоненциальный закон принимает вид . Когда вы допускаете изменения единиц в значениях x и y , хотя, скажем, y = α y ′ + β и x = γ x ′ + δ , тогда закон будет выражаться какy=−exp(−x)xyy=αy′+βx=γx′+δ
αy′+β=y=−exp(−x)=−exp(−γx′−δ),
который алгебраически эквивалентен
y′=−1αexp(−γx′−δ)−β=a(1−uexp(−bx′))
используя три параметра , u = 1 / ( β exp ( δ ) ) и b = γ . Мы можем распознать a как параметр масштаба для y , b как параметр масштаба для x , и u как производный от параметра местоположения для x .a=−β/αu=1/(βexp(δ))b=γaybxux
Как правило, эти параметры можно определить с первого взгляда на график :
Параметр - это значение горизонтальной асимптоты, чуть меньше 2000 .a2000
Параметр - это относительная величина, на которую кривая поднимается от начала координат до ее горизонтальной асимптоты. Здесь, следовательно, рост немного меньше, чем 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