如何最小化指数拟合的平方的剩余平方和?


14

我有以下数据,并希望对其采用负指数增长模型:

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)

该代码正在运行,并绘制了一条拟合线。但是,拟合在视觉上并不理想,并且残差平方和似乎非常大(147073)。

我们怎样才能提高身材?数据是否完全适合?

我们在网络上找不到解决此挑战的解决方案。任何直接帮助或与其他网站/帖子的链接都将不胜感激。


1
在这种情况下,如果考虑回归模型,其中ε Ñ 0 排放物一世=F一世一种b+ϵ一世,则获得相似的估计。通过绘制置信区域,可以观察这些值如何包含在置信区域中。除非您对点进行插值或使用更灵活的非线性模型,否则您无法期望完美的拟合。ϵ一世ñ0σ

我更改了标题是因为“负指数模型”的含义与问题中所述的有所不同。
ub

感谢您使问题更清晰(@whuber),也感谢您的回答(@Procrastinator)。如何计算和绘制置信区域。而且,什么是更灵活的非线性模型?
Strohmi 2012年

4
您需要一个附加参数。 看看会发生什么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)
ub

1
@whuber-也许您应该将其发布为答案?
jbowman

Answers:


16

A(负)指数规律的形式为。当你允许在单位改变XŸ值,虽然说ÿ = α Ÿ ' + βX =ÿ=-经验值-XXÿÿ=αÿ+β,那么法律将被表示为X=γX+δ

αy+β=y=exp(x)=exp(γxδ),

在代数上等于

y=1αexp(γxδ)β=a(1uexp(bx))

使用三个参数û = 1 /β EXP δ ,和b = γ。我们可以承认一个作为尺度参数的ÿb为尺度参数X,以及ü如从推导位置的参数Xa=β/αu=1/(βexp(δ))b=γaybxux

根据经验,这些参数可以从图中一目了然

  • 参数 是水平渐近线的值,略小于 2000a2000

  • 参数 是曲线从原点到其水平渐近线的相对量。因此,这里的上升幅度略小于2000 937;相对而言,大约是渐近线的0.55u20009370.55

  • 因为,当X等于三倍的值1 / b的曲线应已上升到约1 - 0.0595 的总的。 从937年的到大约2000年的95 的增长使我们处于1950年左右; 扫描整个图表明这花费了2025天。让我们把它24为简单起见,从那里b 3 / 24exp(3)0.05x1/b10.0595%95%93720001950202524。(在许多经常使用指数图的领域中,这种标度为指数的 95 方法是标准的。)b3/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适合

的输出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


res <- residuals(fit); res %*% resu2724147073

一切顺利。但是,也许OP有一些理由选择指数模型(或者也许只是因为它是众所周知的)。我认为首先应该考虑指数模型的残差。根据潜在的协变量绘制它们,以查看是否存在结构,而不仅仅是大的随机噪声。在跳入更复杂的模型之前,请尝试看看更高级的模型是否可以提供帮助。
Michael R. Chernick

3
x

2
我不是在批评你的答案!我没有看到任何残留图。我只是想说,残差与潜在协变量的图应该是找到更好模型的第一步。如果我认为自己有答案,那么我会给出答案,而不是提出一个常数。我以为您给出了很好的回应,而我也是给您+1的人之一。
Michael R. Chernick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.