12

いくつかの数値の累積平均を計算する方法を知りたいです。私が探しているものを説明する簡単な例を挙げます。

私は次の番号を持っています

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

これらの数値を平均すると、結果として 3 が得られます。

ここで、これらの数値の累積平均を行う方法を説明します。

4

7 に答える 7

22

リストの累積合計に類推して、私はこれを提案します。ベクトルxの累積平均avgには、1 番目の位置から位置iまでの平均が含まれます。

1 つの方法は、以前のすべての値を合計し、その数で割ることによって、各位置の平均を計算することです。

算術平均の定義を再帰式として書き直すことによって。一つは得る

avg(1) = x(1)

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

ベクトル (またはリスト、1 次元配列など) のすべての要素に対してこの式を評価すると、累積平均が得られます。

この再帰的な方法は、非常に大きな整数または非常に多くの整数の平均を計算する必要があり、それらの累積合計を保存する必要がある場合にオーバーフローが発生する場合に便利です。

あなたの例では

1, 2, 3, 4, 5

我々が得る

1, 1.5, 2, 2.5, 3
于 2013-07-26T13:33:20.293 に答える
9

これは古い質問であり、それ以来多くの変更がありました。答えで更新することを考えただけdplyrです。ベクトルの累積平均を直接与える関数がありますdplyrcummean

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

#[1] 1.0 1.5 2.0 2.5 3.0
于 2017-06-26T13:34:56.737 に答える
6

数の現在の合計とそれらの現在の数を保持するだけです。平均は、カウント全体の合計です。

于 2012-06-17T20:48:42.637 に答える
2

質問は深刻な研究不足を示していますが、私はまだ質問に投票するのに十分な評判がありません. 質問を正しく理解していれば、望ましいのは累積移動平均です。

ウィキペディアでは、累積移動平均について非常に明確に説明しています。ここに画像を投稿することは許可されていませんが、そのリンクをたどって簡単な式 (以前の平均と新しい値の加重平均) を確認してください。

于 2012-12-13T14:57:47.467 に答える