标签: moving-average

计算移动平均线

我正在尝试使用R来计算矩阵中一系列值的移动平均值.正常的R邮件列表搜索虽然不是很有帮助.R中似乎没有内置函数可以让我计算移动平均线.有任何套餐提供吗?或者我需要自己写吗?

r moving-average r-faq

175
推荐指数
10
解决办法
22万
查看次数

如何计算移动平均线而不保留计数和数据总数?

我试图找到一种计算移动累积平均值的方法,而不存储到目前为止收到的计数和总数据.

我想出了两个算法,但都需要存储计数:

  • 新的平均值=((旧计数*旧数据)+下一个数据)/下一个计数
  • 新平均值=旧平均值+(下一个数据 - 旧平均值)​​/下一个计数

这些方法的问题在于计数越来越大,导致平均值的精度下降.

第一种方法使用旧计数和下一计数,显然是1.这让我想到也许有一种方法可以删除计数,但遗憾的是我还没有找到它.它确实让我更进一步,导致第二种方法,但仍然计数存在.

是可能的,还是我只是在寻找不可能的事情?

moving-average

105
推荐指数
7
解决办法
11万
查看次数

了解NumPy的Convolve

在计算简单移动平均线时,numpy.convolve似乎可以完成这项工作.

问题:使用时如何完成计算np.convolve(values, weights, 'valid')

当文档提到时convolution product is only given for points where the signals overlap completely,2个信号指的是什么?

如果任何解释可以包括示例和插图,那将非常有用.

window = 10
weights = np.repeat(1.0, window)/window
smas = np.convolve(values, weights, 'valid')
Run Code Online (Sandbox Code Playgroud)

python numpy convolution moving-average python-2.7

62
推荐指数
2
解决办法
5万
查看次数

随着时间的推移平滑值:移动平均值或更好的东西?

我正在编写一些东西,我随着时间的推移从硬件指南针中获取了一堆值.这个指南针非常准确并且经常更新,结果是如果它略微摇晃,我最终会得到与其邻居非常不一致的奇数值.我想要平滑这些价值观.

做了一些阅读后,看起来我想要的是高通滤波器,低通滤波器或移动平均器.我可以得到移动平均线,只保留最后5个值或其他值的历史记录,并使用我的代码中下游的那些值的平均值,我曾经只使用最近的值.

我认为这应该可以很好地消除那些摇摆不定的情况,但是我觉得它可能非常低效,这可能是正确的程序员已知问题之一,有一个非常巧妙的Clever Math解决方案.

然而,我是那些可怕的自学成才的程序员之一,在与CompSci或Math几乎模糊不清的任何事情上都没有一丝正规教育.稍微阅读一下就表明这可能是一个高通或低通滤波器,但是我找不到任何可以理解为像我这样的黑客可以理解这些算法对一组数值的影响的术语,更不用说如何数学运作.例如,这里给出的答案技术上确实回答了我的问题,但只有那些可能已经知道如何解决问题的人才能理解.

确实是一个非常可爱和聪明的人可以用艺术毕业生可以理解的方式来解释这个问题以及解决方案的工作原理.

theory algorithm moving-average

46
推荐指数
3
解决办法
3万
查看次数

如何有效地计算平均值(移动平均值)?

我想出来了

n=1;
curAvg = 0;
loop{
  curAvg = curAvg + (newNum - curAvg)/n;
  n++;
}
Run Code Online (Sandbox Code Playgroud)

我认为这种方式的亮点是:
- 它避免了大数字(如果你总和然后除以可能溢出)
- 你保存一个寄存器(不需要存储总和)

问题可能在于求和误差 - 但我认为通常会有平衡的向上和向下舍入数,因此误差不会大大加总.

你看到这个解决方案有任何陷阱吗?你有更好的建议吗?

algorithm math average moving-average

40
推荐指数
2
解决办法
2万
查看次数

用C++计算滚动/移动平均值

我知道这是可以通过提升实现的:

使用boost :: accumulators,如何重置滚动窗口大小,是否保留了额外的历史记录?

但我真的想避免使用提升.我用谷歌搜索,没有找到任何合适或可读的例子.

基本上我想使用最新的1000个数字作为数据样本来跟踪正在进行的浮点数流的移动平均值.

实现这一目标的最简单方法是什么?


我尝试使用圆形阵列,指数移动平均线和更简单的移动平均线,发现圆形阵列的结果最适合我的需要.

c++ boost moving-average

39
推荐指数
4
解决办法
10万
查看次数

Apache Spark移动平均线

我有一个巨大的HDFS文件,有时间序列数据点(雅虎股票价格).

我想找到时间序列的移动平均值我如何编写Apache Spark工作来做到这一点.

time-series moving-average hdfs apache-spark

37
推荐指数
3
解决办法
2万
查看次数

移动平均线 - 熊猫

我想在我的交换时间序列中添加移动平均线计算.

Quandl的原始数据

Exchange = Quandl.get("BUNDESBANK/BBEX3_D_SEK_USD_CA_AC_000",authtoken ="xxxxxxx")

    Value
Date               
1989-01-02  6.10500
1989-01-03  6.07500
1989-01-04  6.10750
1989-01-05  6.15250
1989-01-09  6.25500
1989-01-10  6.24250
1989-01-11  6.26250
1989-01-12  6.23250
1989-01-13  6.27750
1989-01-16  6.31250
Run Code Online (Sandbox Code Playgroud)

计算移动平均值

MovingAverage = pd.rolling_mean(Exchange,5)

              Value
Date          
1989-01-02      NaN
1989-01-03      NaN
1989-01-04      NaN
1989-01-05      NaN
1989-01-09  6.13900
1989-01-10  6.16650
1989-01-11  6.20400
1989-01-12  6.22900
1989-01-13  6.25400
1989-01-16  6.26550
Run Code Online (Sandbox Code Playgroud)

我想使用相同的索引(日期)将计算出的移动平均线作为新值添加到"值"之后的右侧.最好我还想将计算出的移动平均值重命名为"MA"

python moving-average python-3.x pandas

31
推荐指数
4
解决办法
6万
查看次数

postgresql中的移动平均线

我的Postgresql 9.1数据库中有以下表格:

select * from ro;
date       |  shop_id | amount 
-----------+----------+--------
2013-02-07 |     1001 |      3
2013-01-31 |     1001 |      2
2013-01-24 |     1001 |      1
2013-01-17 |     1001 |      5
2013-02-10 |     1001 |     10
2013-02-03 |     1001 |      4
2012-12-27 |     1001 |      6
2012-12-20 |     1001 |      8
2012-12-13 |     1001 |      4
2012-12-06 |     1001 |      3
2012-10-29 |     1001 |      3
Run Code Online (Sandbox Code Playgroud)

我试图得到一个移动平均线,比较过去3个星期四的数据而不包括当前的星期四.这是我的查询:

select date, shop_id, amount, extract(dow from date),
avg(amount) OVER (PARTITION BY extract(dow …
Run Code Online (Sandbox Code Playgroud)

postgresql math average moving-average postgresql-9.1

23
推荐指数
2
解决办法
1万
查看次数

将移动平均线图添加到R中的时间序列图

我在ggplot2包中有一个时间序列图,我已经执行了移动平均线,我想将移动平均值的结果添加到时间序列图中.

数据集样本(p31):

ambtemp dt -1.14
2007-09-29 00:01:57
-1.12 2007-09-29 00:03:57 -1.33
2007-09-29 00:05:57
-1.44 2007-09-29 00:07:57
-1.54 2007-09-29 00:09:57
-1.29 2007-09-29 00:11:57

时间序列演示的应用代码:

  Require(ggplot2)
  library(scales)
  p29$dt=strptime(p31$dt, "%Y-%m-%d %H:%M:%S")
  ggplot(p29, aes(dt, ambtemp)) + geom_line() +
     scale_x_datetime(breaks = date_breaks("2 hour"),labels=date_format("%H:%M")) + xlab("Time 00.00 ~ 24:00 (2007-09-29)") + ylab("Tempreture")+
     opts(title = ("Node 29"))
Run Code Online (Sandbox Code Playgroud)

时间序列演示的样本 时间序列演示的样本

移动平均线图样本 在此输入图像描述 预期结果的样本

挑战在于时间序列数据ov =从数据集中获得,其中包括时间戳和温度,但移动平均数据仅包括平均列而不是时间戳,并且拟合这两者可能导致不一致.

预期成绩

r add time-series moving-average ggplot2

20
推荐指数
1
解决办法
3万
查看次数