【发布时间】:2020-07-20 23:33:29
【问题描述】:
我正在尝试使用 R 对人口数据进行几何插值。
我有一个 2000 年的数字(称为 P0)和一个 2006-2010 年的数字(称为 PT)。 2006-2010 年的 PT 是所有这五年的平均值。我想对 2006、2007、2008、2009 和 2010 年的数字进行插值,并且我希望它是一个几何级数,以便结果值加起来达到所需的总数。
我们在数学上使用
new value = P*exp(r*t)
确定 t 个几何增长期后的值。 因此,如果我让 t 成为自 2000 年以来的年数,那么在数学上我可以说
5*Pt = P0*exp(6*r) + P0*exp(7*r) + P0*exp(8*r) + P0*exp(9*r) + P0*exp(10*r)
或者,等价
5*Pt/P0 = exp(6r)+exp(7r)+exp(8r)+exp(9r)+exp(10r)
然后求解 r 将允许我计算我想要的几何插值。
我很难在 R 中找到一种方法。solve() 和 fsolve() 函数似乎更喜欢使用矩阵乘法,而这不是我正在做的。
我查看了一个优化库 (lbfgs),但用它来解决我的问题看起来充其量只是一个丑陋的 hack。
在 R 中是否有一种简单的好方法可以做到这一点?
【问题讨论】:
-
涉及指数和的方程的解析解通常很难或不可能。您可能不得不采用蛮力最小化解决方案。您不需要外部包,内置的
optim()应该可以用于此... -
我知道分析解决方案不会简单或容易。我真的在寻找一种近似它的方法。我希望有一个简单的 R 命令可以做到这一点,看起来 optim() 是我最接近的。感谢您的意见。
标签: r math interpolation solver