![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
単純移動平均について
時系列に無限に発生するデータのうち、最近の何個かの平均を求め続けたい。例えば最近の10個の移動平均を求めるなら
移動平均=(Pm+Pm-1+Pm-2+・・・・・+Pm-9)/10
で求められますが、これを計算するためにはPmからPm-9まで10個のデータを記憶しておく場所が必要になります。
マイコンでは連続して沢山の記憶域を確保するのが困難なので、これを連続域を使用しないように手抜きして
新10個の合計=現10個の合計ー現10個の平均+新データ
新10個の平均=新10個の合計/10
で計算できれば大きな記憶域が不要になるので、10個ではなくて1000個の移動平均でもマイコンで計算できるようになるはずです。
そこでお聞きしたいのは、このような手法で本来の単純移動平均と同等の効果が期待できるかということです。
私が欲しいのは時系列データの長時間変化の傾向が知りたいのです。そのために短時間の変化は大きな流れの中に埋没させてしまいたい。それだけの要求なので、これでも何とか使い物になるかと期待しているのですが。
工学部系でして数学に弱いもので、よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> どんな分野で使い物になるのか興味があります。
> もし、私のデータがそのような傾向があればと予想する材料にもなります。
> よろしければ、再度どのような分野かご教示ください。
ネットワーク分野です。
ネットワークで用いられるTCPでは、
データを転送する時に転送データをある程度小さな塊に分割し、
その塊を転送します。
この塊のうち、いくつかがデータ受信者に届かなかった場合は
届かなかったデータを再転送します。
しかしデータが届かないという事はネットワークが過負荷になっている可能性があります。
そんな時にすぐ再転送してしまうとネットワークがさらに過負荷になりますし、
再びデータの塊が消失してしまうかもしれません。
適切な時間待機して再転送を行うため、
TCPでは往復時間(RTT)というものを用いて再転送時間を決めています。
TCPでは受信者がデータの塊を受け取ると、受信者は送信者に応答を返します。
この時、送信者がデータの塊を送ってから応答が帰ってくるまでにかかる時間がRTTです。
RTTが短くなってくれば、その時はネットワーク負荷が軽い可能性があります。
この場合はすぐに再転送しても問題ないかも知れません。
RTTが長くなってくれば、その時はネットワーク負荷が高い可能性があります。
この場合は少し時間をおいてから再転送した方が良いかも知れません。
TCPではRTTの平均値(のようなもの)を求めるために、次の計算式を使っています。
(最新RTT平均値) = t(旧RTT平均値) + (1-t)(計測RTT値)
元のTCPではtの値は0.9が推奨されていたと思います。
他にもt = 1/8を用いる場合もあります
(t = 1/8ならシフト演算で割り算ができるため)。
この再転送の話では「全時間のネットワーク負荷」よりも
「最近の時間のネットワーク負荷」の方が大事になってくると思います。
なのである程度旧データの傾向が弱くなっても良いのかもしれません。
懐かしいお話をありがとうございます。昔、TAOという組織に属していた頃にネットワークの勉強をしていた頃に再転送までの時間はランダムに決定すると聞いていた記憶がありますが、そんな実情があったとは。
それでも私との違いは0.9の重み付けをしている点ですね。大変参考になりました。
No.3
- 回答日時:
その時系列に、誤差を乗っけてみます。
P[m] = (1 + ε[m]) (0.85) P[m-1] ,
ε[m] は -0.5 ~ 0.5 くらいの大きさで
何かランダムっぽい感じのデータ
である場合を考えましょう。
m が大きめの値のとき、P[m] に対する影響は、
ε[m] と ε[1] のどちらが大きいですか?
色々とヒントをいただけるのですが、そのセンスがないのでピンときません。
一般に雑音が大きくなれば信号が埋もれてS/Nは悪くなりますが、10個の記憶域を使う移動平均と比べてS/Nが更に悪くなると言われているのでしょうか。
実は、お二人の回答からデータによっては使えない場合が起きそうなのに、私のデータが未知の状態なので両方やってみるしかないと思い始めています。
少ない記憶域をやりくりすれば64個ほど確保できそうです。ただ、64個では瞬間的なノイズが1/64にしかならないのが不満です。
No.2
- 回答日時:
その方法だと、最初のほうのデータの影響が、
指数減衰するとはいえ、後々まで残ります。
Pm 自身が、9/10 倍よりも早く指数減衰する系列
だった場合に何が起こるか、考えてみると
面白いかもしれません。
早速のレスポンスありがとうございます。
>Pm 自身が、9/10 倍よりも早く指数減衰する系列だった場合に何が起こるか、考えてみると面白いかもしれません。
私の頭では考えても分からないので、実際にEXCELでグラフを書いてみました。
Pm=0.85*Pm-1 で発生させた200個くらいの数列です。
その結果、原データから少し遅れて、原データと似たようなカーブで減衰しただけで、何が面白いか理解できませんでした。
よろしければ、再度何が面白いかご教示ください。
ただ、最初のほうのデータの影響が尾を引くのが私のケースで有効なのか悪影響なのか。
まだ、自分が扱うデータがどのように発生してくるか予想できないので自分でも困っています。
No.1
- 回答日時:
> 新10個の合計=現10個の合計ー現10個の平均+新データ
> 新10個の平均=新10個の合計/10
> で計算できれば大きな記憶域が不要になるので、10個ではなくて1000個の移動平均でもマイコンで計算できるようになるはずです。
質問者さんの提案している式はもっと簡略化できます。
まず、上の式の「現10個の合計 - 現10個の平均」の部分ですが、これは
現10個の合計 - 現10個の平均
= 9(現10個の平均)
という風に変形できます。
あとは質問者さんが提案している2式をまとめてしまって、
(新10個の平均) = 0.9(現10個の平均) + 0.1(新データ)
としてしまえば良いと思います。
こうすれば現在の平均値と新データのみで、
新しい平均値を計算する事が出来ます。
> そこでお聞きしたいのは、このような手法で本来の単純移動平均と同等の効果が期待できるかということです。
ある状況によっては単純移動平均と大差ない結果がでるかもしれませんが、
別の状況では大きく結果が異なるかもしれません。
> 私が欲しいのは時系列データの長時間変化の傾向が知りたいのです。そのために短時間の変化は大きな流れの中に埋没させてしまいたい。それだけの要求なので、これでも何とか使い物になるかと期待しているのですが。
今回の計算式だと過去のデータがどんどん0.9倍されてしまいます。
つまり過去のデータの影響は指数関数的に減少していきます。
なので最近のデータの影響がやや強くなる傾向が出るはずです。
結局のところ、納得できる結果が得られるかどうかは
実際に試してみるまで分からないと思います。
一応、質問者さんが考えている方法は既に別の分野で使われたりしています。
面白い考え方をありがとうございます。
残念ながら私が使っているマイコンには乗除算命令がありません。それでシフト命令で代行しますので2のべき乗で乗除することしか考えていませんでした。
>結局のところ、納得できる結果が得られるかどうかは実際に試してみるまで分からないと思います。
自分でも扱うデータの素性が予想できないので、結局試してみるしかなさそうですね。
>質問者さんが考えている方法は既に別の分野で使われたりしています。
どんな分野で使い物になるのか興味があります。もし、私のデータがそのような傾向があればと予想する材料にもなります。よろしければ、再度どのような分野かご教示ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 移動平均について 統計を勉強し始めましたが何度読んでも理解が出来ないので教えてください。 ①過去1週 3 2022/06/18 08:34
- 統計学 標準誤差の求め方 2 2022/07/04 19:59
- 統計学 歳の差婚を成立させる条件! Daigoの動画で見たのですが、これの元データというか情報源を知ってる方 3 2023/07/13 19:05
- 中学校 理科だけが極端に苦手 5 2022/09/10 14:18
- 統計学 お世話になっています. x軸は時間(期間)y軸はある値に対する2つのグラフ比較をしますが、私個人の考 2 2023/03/30 11:42
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- 統計学 t値の計算方法 1 2022/11/29 18:37
- 統計学 確率統計の問題です。 3 2022/04/07 04:39
- 統計学 不偏分散について 3 2022/03/29 15:57
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
下記マクロでMsgBox "空白です...
-
「未使用」と「不使用」ってど...
-
PCの内蔵メモリにデータは残る?
-
#define F_CPU という設定
-
ネットカフェから、メールでき...
-
データ用HDDの別のPCへの乗せ替え
-
日本通信の当月利用データ量は...
-
パレート図等で「N=100」とあ...
-
加速度の時系列データからFFT解...
-
エクセルのグラフのデータ系列...
-
Excelの“並び替え”で文字コード...
-
電子透かしシステムとは?
-
Excel Webクエリ
-
バラバラなPDFの画面上等のサイ...
-
XMLデータってなんですか?
-
「科学的データ」がなんだかん...
-
高速フーリエ変換でデータ数が...
-
エクセルで縦に並んだデータを...
-
iPod(第2世代)からiPod(第5世代...
-
【MSOffice Publisher2010差し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
エクセルで年休を管理する方法...
-
PCの内蔵メモリにデータは残る?
-
高速フーリエ変換でデータ数が...
-
アイドルの写真について
-
ネットカフェから、メールでき...
-
3Dプリンターを使う場合 パソコ...
-
【世界はデータで出来ている】...
-
XMLデータってなんですか?
-
Excel Webクエリ
-
ファイザーやモデルナは当時は...
-
Excelの“並び替え”で文字コード...
-
パレート図等で「N=100」とあ...
-
日本通信の当月利用データ量は...
-
データ用HDDの別のPCへの乗せ替え
-
エクセルのグラフのデータ系列...
-
プロ野球の球団別の残塁数を載...
-
インスタの設定について。 イン...
-
スマートウォッチ
-
職務質問で聞かれたデータはど...
おすすめ情報