如何在python中计算单调增长序列的估计?

如何在python中计算单调增长序列的估计?,python,math,numpy,scipy,Python,Math,Numpy,Scipy,我有一个单调增长的整数序列。比如说 seq=[(0,0)、(1,5)、(10,20)、(15,24)] 以及大于序列中最大参数的整数值(a>seq[-1][0])。我想估计对应于给定值的值。序列几乎呈线性增长,较早的值不如较晚的值重要。尽管如此,我不能简单地取最后两个点并计算新的值,因为很可能会出现错误,曲线可能会改变角度 有人能用Python为这类任务提供一个简单的解决方案吗?如果序列没有太多噪音,只需使用最新的点,以及当前1/3的点,然后根据该点估计行。否则,做一些更复杂的事情,比如对序列的

我有一个单调增长的整数序列。比如说

seq=[(0,0)、(1,5)、(10,20)、(15,24)]

以及大于序列中最大参数的整数值
(a>seq[-1][0])
。我想估计对应于给定值的值。序列几乎呈线性增长,较早的值不如较晚的值重要。尽管如此,我不能简单地取最后两个点并计算新的值,因为很可能会出现错误,曲线可能会改变角度


有人能用Python为这类任务提供一个简单的解决方案吗?

如果序列没有太多噪音,只需使用最新的点,以及当前1/3的点,然后根据该点估计行。否则,做一些更复杂的事情,比如对序列的后半部分进行最小二乘拟合


如果你在谷歌上搜索,会有很多代码示例,以及一些可能有用的模块。(我不是Python程序员,所以我不能给出一个有意义的推荐,推荐最好的。)

有很多问题。外推法是一件令人讨厌的事情。你认为是线性外极体吗?多项式模型(超越线性)的外推通常非常糟糕。或者你应该假设某种外极性是渐近于直线的吗?重要的是您愿意假设什么,以及您可以为建模过程带来什么信息

如果你可以假设一个线性外极体,那么我可能会做一个加权最小二乘拟合,用一个直线模型,当你离开端点时,权重会减小。(事实上,不管你最后摆出什么样的姿势,加权最小二乘估计似乎是合乎逻辑的,权重是位置的函数。)

因此,假设您选择设置一个类似于

y = a + bx + c*exp(-d*x)
当x变大时,该模型将渐近逼近一条斜率为b的直线。您仍然可以使用加权模型,从您感兴趣的端点开始对这些点进行折扣

同样,远距离外推是一件很难尝试的事情。记住马克吐温的话

“在一百七十六年的时间里,密西西比河下游缩短了二百四十二英里。这是平均每年一英里三分之一多一点。因此,任何冷静的人,只要不是瞎子或白痴,都可以看到,在旧奥陶纪志留纪时期,就在一百万年前的明年11月,罗威河r密西西比河长达一百三十万英里,像一根钓鱼竿一样伸出墨西哥湾。同样,任何人都可以看到七百四十二年后,密西西比河下游将只有一英里四分之三长,而开罗[伊利诺伊州]新奥尔良将把他们的街道连接在一起,在一个市长和一个共同的市政委员会的领导下舒适地前行。科学有着迷人的一面。人们从如此微不足道的事实投资中获得了如此大规模的猜测回报。”
“密西西比河上的生活”,马克·吐温,1884年

使用最近的五个点。或10个点。或无论你想要多少个点。相关你的意思是“曲线可能会改变角度”?逐渐地或突然地?如果是逐渐地,那么只需取最后10个点(如另一条评论中所建议的),计算10个角度,去掉两个异常值,取其余的平均值。另一个,常见的多边形平滑技术是,取最后10个线段,用中间点替换每个线段,重复9个线段,8。