ユーザーの体重を日ごとに平均化するプログラムを書いています。5ポイントの移動平均を使用する予定です(当日、前2日と後2日)。場合によっては、データポイントが1〜2日間失われます。これらのケースは通常どのように処理されますか?
(もし私が使えるより良いローパスフィルターがあれば、私は提案が大好きです)
ユーザーの体重を日ごとに平均化するプログラムを書いています。5ポイントの移動平均を使用する予定です(当日、前2日と後2日)。場合によっては、データポイントが1〜2日間失われます。これらのケースは通常どのように処理されますか?
(もし私が使えるより良いローパスフィルターがあれば、私は提案が大好きです)
回答:
一般的な印象として、回帰は、選択した移動平均フィルターではなく、欠落した点を自動的にフィッティングすることでより効果的に機能します。
AR(自動回帰フィルター)またはARMAフィルターを使用する場合-過去の入力に基づいてサンプル出力の予測値を持つことができます。
ここで、は予測値です。
特にあなたのケースでは、人の体重が特定の範囲持っていることがわかっているとしましょう。値がない場合-2つの異なる置換を適用します。1つはMinで、もう1つはMaxで、使用可能なモデルに基づいて、 2つの極端なケースの結果が得られます。それらの間で何かを選択します。 X [ I - 1 ] X [ I ]
他にもさまざまな選択肢があります-あなたは保つことができます
X [I]=Xのロングターム・サンプル・平均
本質的には、その値を予測し、それを信号として使用し続けるゲームです。もちろん、予測は元のサンプルとは異なりますが、それはデータがないために支払う代償ではありません。
完全なデータの実行がある場合、欠落データを入力するための単純で一般的な方法は、
線形回帰を使用することです。たとえば、5回の実行が1000回あり、欠落がないとします。
1000 x 1ベクトルyと1000 x 4行列Xを設定します。
y X
wt[0] wt[-2] wt[-1] wt[1] wt[2]
---------------------------------
68 67 70 70 68
...
回帰により、4つの数値abcdが得られ、最も一致します
wt[0] ~= a * wt[-2] + b * wt[-1] + c * wt[1] + d * wt[2]
1000行のデータの場合 -異なるデータ、異なるabc d。
次に、これらのabcdを使用して、欠落しているwt [0]を推定(予測、補間)します。
(人間の体重の場合、abcdはすべて約1/4になると思います。)
Pythonでは、numpy.linalg.lstsqを参照してください 。
(すべてのレベルで、回帰に関する膨大な数の書籍や論文があります。ただし、補間との関連については、私は良い紹介を知りません;誰か?)