我想知道如何计算累计平均为一些数字。 我举一个简单的例子来形容我所期待的。
我有以下数
vec <- c(1, 2, 3, 4, 5)
如果我做这些数字的平均值,我会得到3结果。
现在,如何做这些数字的累计平均。
我想知道如何计算累计平均为一些数字。 我举一个简单的例子来形容我所期待的。
我有以下数
vec <- c(1, 2, 3, 4, 5)
如果我做这些数字的平均值,我会得到3结果。
现在,如何做这些数字的累计平均。
类似于列表的累积和我提出这样的:一个向量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
问题如何创建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
只要保持数字的运行总和,以及它们的运行计数。 平均刚刚超过计数的总和。
现在的问题表示严重缺乏研究,但我没有足够的声誉还没有投票的问题了。 如果我理解正确的问题,所需要的是累积的移动平均线 。
维基百科介绍累计得很清楚均线。 我不能在这里张贴图片,但点击该链接为一个简单的公式(以前的平均的加权平均和新值)。
这是一个老问题,从那时起已经出现了很大的变化。 我只是想用它的更新的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
myNum的[1] 1 2 3 4 5
cumsum(myNum的)/ SEQ(从= 1到= 5)
[1] 1.0 1.5 2.0 2.5 3.0
我做了一个简单的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