問題タブ [moving-average]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
numpy - 信号の Numpy Root-Mean-Squared (RMS) 平滑化
RMS を使用して平滑化することが想定されている (科学論文の明示的な推奨事項) 筋電図データの信号があります。
次の作業コードがあり、目的の出力が生成されますが、可能だと思うよりもはるかに遅いです。
ウィンドウループの移動の最適化に関するいくつかdeque
の提案と、numpy からの提案を見てきましたが、それらを使用して目的を達成する方法がわかりませんでした。itertools
convolve
また、大きな配列と比較的小さなスライディング ウィンドウを使用することになるため、境界の問題を回避することはもう気にしません。
読んでくれてありがとう
r - R (zoo) の時系列を後方参照データに rollapply する
動物園関数 rollapply を使用して、時系列に関数 (平均値など) を適用したいと思いますが、最後の N 個の既知のポイントのみを使用します。例えば:
x = zoo(c(1,2,3,4), order.by=c(10,11,12,13))
rollmean(x,2)
プロデュース:
10 11 12
1.5 2.5 3.5
11、12、13 の日付エントリと 1.5、2.5、3.5 の値を持つシリーズを作成したいと考えています。値は正しいように見えますが、rollmean が出力する日付は、私が望むものと一致していないようです。time(x)<-
rollapply が実際に正しいことを行っているかどうかわからないため、使用する動物園オブジェクトに必要な日付を割り当てるだけで少し心配です。いつものように助けていただければ幸いです。
python - 特定の範囲のキーを持つ辞書内の値の移動平均を計算する
これまでのところ、これが私の解決策です。もっとエレガントで効率的な方法があるのだろうか?
ここでリスト内包表記を使用する必要があるかどうかはわかりません。
おそらくどこかにこれのための何らかの機能がありますが、私はそれを見つけられませんでした。
objective-c - 可変パラメータの移動平均の計算
0〜100の範囲の信号強度値で毎秒更新される整数プロパティがあります。
過去10、25、50回の測定で移動平均の継続的な測定を維持できるようにしたいと思います。
これを行う最も効率的な方法は何ですか?
私は現在、NSMutableArrayを使用して一連のFIFOキューを実装し、配列に必要な数のエントリが追加されたら、最後に新しい値を追加するたびに先頭の値をポップすることを考えています。ただし、これを行うためのより効率的な方法があるかどうかはわかりません。
c++ - C++ での移動平均の計算
信号の移動平均を計算しようとしています。シグナル値 ( a double ) はランダムなタイミングで更新されます。時間枠での時間加重平均をリアルタイムで計算する効率的な方法を探しています。自分でもできますが、思ったより難しいです。
私がインターネット上で見つけたリソースのほとんどは、定期的なシグナルの移動平均を計算していますが、私の更新はランダムな時間です。
そのための良いリソースを知っている人はいますか?
ありがとう
algorithm - 指定された線関数からローリング ウィンドウの平方和距離を計算するアルゴリズム
直線関数 y = a*x + b
(a
とは既知の定数) が与えられると、直線とサンプルのウィンドウ(は最も古いサンプル、は最新のサンプル)b
の間の平方和の距離を簡単に計算できます。(1, Y1), (2, Y2), ..., (n, Yn)
Y1
Yn
ローリング ウィンドウ (長さn
) のこの値を計算するための高速なアルゴリズムが必要です。新しいサンプルが到着するたびにウィンドウ内のすべてのサンプルを再スキャンすることはできません。
明らかに、新しいサンプルがウィンドウに入り、古いサンプルがウィンドウから出るたびに、何らかの状態を保存して更新する必要があります。
サンプルがウィンドウを離れると、残りのサンプルの指数も変化することに注意してください。すべての Yx が Y(x-1) になります。したがって、サンプルがウィンドウを離れると、ウィンドウ内の他のすべてのサンプルが新しい合計に異なる値を与えます:(Yx - (a*(x-1) + b))^2
の代わりに(Yx - (a*x + b))^2
.
これを計算するための既知のアルゴリズムはありますか? そうでない場合は、1つ考えられますか?(一次線形近似のため、多少の誤差があっても問題ありません)。
r - R:期間(月)の左側移動平均
皆さんのほとんどにとって些細なことかもしれない質問があります。いろいろ試してみましたが、解決には至らなかったので、誰かがヒントをくれたら嬉しいです。開始点は、毎週のxts時系列です。
Excel表記を失礼しますが、私が何をしたいのかはかなり明確になっていると思います。「値」列の左側の移動平均を計算したいのですが、目標列に表示されているので、それぞれの月だけです。 。apply.monthly()とperiod.apply ()を試してみました。しかし、それは私が望むものを私に与えませんでした。あなたの誰かが私に問題を解決する方法のヒントを与えることができますか?どの関数を使うべきかというヒントはもう十分でしょう!
どうもありがとうございます!
よろしくお願いします、
アンドレアス
r - R でグループごとにローリング平均を適用する
私はRの初心者で、おそらく非常に単純なことをするのに苦労しています。国別のグループに分割された大きなデータセットがあり、国別の物価指数の 3 か月のローリング平均を取り、それを適切な月に一致する新しい列に入れたいと考えています。このように rollmean を使用しようとしましたが、成功しませんでした (以下のコードとエラー メッセージ)。
どんな助けでも大歓迎です!
mysql - 相関サブクエリでMySQLの移動平均を計算するには?
タイムラインの各日付について、いくつかのメジャーとそれらが測定された日付を含むデータ セット内の最新の N データ ポイントの移動平均を示すタイムライン レポートを作成したいと考えています。日付を提供するために、毎日データが入力されたカレンダー テーブルがあります。相関サブクエリを使用して、その日付より前の全体的な平均を示すタイムラインをかなり簡単に計算できます (実際の状況はこれよりもはるかに複雑ですが、本質的には次のように単純化できます)。
私はこれを読んで何日も過ごしましたが、良い解決策は見つかりませんでした。サブクエリで LIMIT が機能する可能性があると示唆する人もいますが (LIMIT は現在のバージョンの MySQL のサブクエリでサポートされています)、LIMIT は集計に入る行ではなく、戻りセットに適用されるため、追加しても違いはありません。
また、集約されていない SELECT を LIMIT で記述してから集約することもできません。これは、相関サブクエリが FROM ステートメント内で許可されていないためです。したがって、これは(悲しいことに)機能しません:
サブクエリアプローチを完全に回避し、ユーザー変数を使用した巧妙な結合/行番号付け手法でこれを行うかどうかを確認し、それを集計する必要があると考えていますが、それに取り組んでいる間、誰かに尋ねると思いましたより良い方法を知っていましたか?
更新: さて、この例のために単純化したソリューションが機能しています。カレンダーの日付から逆方向にメジャーに番号を付けるために、ユーザー変数のトリックに依存しています。また、(サブクエリの代わりに) カレンダー テーブルとの外積も行いますが、これには、行番号付けのトリックが失敗するという不幸な副作用があります (ユーザー変数は、クライアントに送信されるときではなく、クライアントに送信されるときに評価されます)。行が評価されます) したがって、これを回避するには、クエリを 1 レベル入れ子にし、結果を並べ替えてから、そのセットに行番号付けのトリックを適用する必要がありました。
このクエリは、メジャーがあるカレンダーの日付のみを返すため、タイムライン全体が必要な場合は、カレンダーを選択して、この結果セットに LEFT JOIN するだけです。
行番号付けのトリックは、より複雑なデータに一般化できます (私の測定値は、集計が必要ないくつかの次元にあります)。
algorithm - 時間加重移動平均の計算
株価の時系列があり、10分間の移動平均を計算したいと思います(下の図を参照)。価格ティックは散発的に発生するため(つまり、定期的ではないため)、時間加重移動平均を計算するのが最も公平であるように思われます。
この図では、A、B、C、Dの4つの価格変更があり、後者の3つはウィンドウ内で発生します。Bはウィンドウ内のある時間(たとえば3分)にしか発生しないため、Aの値は依然として計算に寄与することに注意してください。
実際、私が知る限り、計算はA、B、C( Dではなく)の値と、それらと次のポイントの間の期間(または、Aの場合:開始から開始までの期間)のみに基づく必要があります。時間枠とB)の。時間の重み付けがゼロになるため、最初はDは効果がありません。 これは正しいです?
これが正しいと仮定すると、私の懸念は、移動平均が非加重計算(Dの値をすぐに説明する)よりも「遅れる」ことです。ただし、非加重計算には独自の欠点があります。
- 「A」は、時間枠外であっても、他の価格と同じくらい結果に影響を与えます。
- 急な高値の急上昇は移動平均に大きなバイアスをかけます(おそらくこれは望ましいですか?)
どのアプローチが最適と思われるか、または検討する価値のある代替(またはハイブリッド)アプローチがあるかどうかについて、誰かがアドバイスを提供できますか?