计算累计平均(均值)计算累计平均(均值)(Calculate cumulative average

2019-06-02 10:49发布

我想知道如何计算累计平均为一些数字。 我举一个简单的例子来形容我所期待的。

我有以下数

vec <- c(1, 2, 3, 4, 5)

如果我做这些数字的平均值,我会得到3结果。

现在,如何做这些数字的累计平均。

Answer 1:

类似于列表的累积和我提出这样的:一个向量x的累计平均平均将包含从1号位的平均值,直到的位置。

一种方法就是计算平均值,供所有先前的值求和,并通过它们的数量将每个位置。

通过重写的定义算术平均作为一个递归公式。 一个得到

avg(1) = x(1)

avg(i) = (i-1)/i*avg(i-1) + x(i)/i;    (i > 1)

为您的矢量的每一个元素(或清单,一维数组或无论你叫它)计算此表达式为您提供了累计平均。

该递归方法就派上用场了,如果你有过非常大的或非常多的整数来计算的平均值,如果你有来存储他们的累计总和将运行到溢出。

在你的榜样

1, 2, 3, 4, 5

我们得到

1, 1.5, 2, 2.5, 3


Answer 2:

问题如何创建R A累计平均? 答:这个答案是由Jim Holtman提供jholtman@gmail.com他使用cumsum()函数和seq_along()函数在那些所以阅读起来。 但是提供的代码要明确。 6,6 + 16,6 + 16 + 8,等

   x <- sample(1:20)
    x
 # [1]  6 16  8  1 17 11  2 19 18  5 15 13  3 20  9 14  7 10 12  4

    cumsum(x) / seq_along(x)
 # [1]  6.000000 11.000000 10.000000  7.750000  9.600000  9.833333  8.714286
 #10.000000 10.888889 10.300000
 #[11] 10.727273 10.916667 10.307692 11.000000 10.866667 11.062500 10.823529
 #10.777778 10.842105 10.500000


Answer 3:

只要保持数字的运行总和,以及它们的运行计数。 平均刚刚超过计数的总和。



Answer 4:

现在的问题表示严重缺乏研究,但我没有足够的声誉还没有投票的问题了。 如果我理解正确的问题,所需要的是累积移动平均线

维基百科介绍累计得很清楚均线。 我不能在这里张贴图片,但点击该链接为一个简单的公式(以前的平均的加权平均和新值)。



Answer 5:

这是一个老问题,从那时起已经出现了很大的变化。 我只是想用它的更新的dplyr答案。 dplyr具有cummean函数直接给出向量的累积平均。

vec <- c(1, 2, 3, 4, 5)
library(dplyr)
cummean(vec)

#[1] 1.0 1.5 2.0 2.5 3.0


Answer 6:

myNum的[1] 1 2 3 4 5

cumsum(myNum的)/ SEQ(从= 1到= 5)

[1] 1.0 1.5 2.0 2.5 3.0



Answer 7:

我做了一个简单的C ++类。

#include <iostream>

using namespace std;

class Average {

public:
    Average(const double initVal=0.0){accumVal=initVal;}
    double getAverage(const double newVal) {

        accumVal += newVal;
        return accumVal / ++numAccumVal;
    }
    void clear(const double clearedVal=0.0) {

        accumVal = clearedVal;
        numAccumVal = 0;
    }
private:
    double accumVal;
    unsigned int numAccumVal=0;
};

int main(int argc, const char * argv[]) {

    Average avg;

    for (size_t i=1; i<=5; ++i) { //feed in 1 to 5

        double result = avg.getAverage(i);
        cout << "Result : " << result << endl; //print the result
    }
    return 0;
}

如果你运行代码,你会得到如下结果。

Result : 1
Result : 1.5
Result : 2
Result : 2.5
Result : 3
Program ended with exit code: 0


文章来源: Calculate cumulative average (mean)