6

血圧曲線でアーティファクト/外れ値を見つけるという問題にどのようにアプローチするか考えていますか? 私の目標は、各アーティファクトの開始と終了を検出するプログラムを作成することです。さまざまなアーティファクトの例を次に示します。緑色の領域は正しい血圧曲線で、赤色の領域は検出する必要があるアーティファクトです。

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

これは全血圧曲線の例です。 ここに画像の説明を入力

私の最初のアイデアは、曲線全体と曲線の短い間隔での多くの平均から平均を計算し、それがどこで異なるかを見つけることでした。しかし、血圧は非常に変化するため、存在しない「アーティファクト」が多すぎるため、これはうまくいかないと思います。

ご意見ありがとうございます。

編集: 2 つのアーティファクト例のデータを次に示します。

アーティファクト1

アーティファクト2

4

2 に答える 2

3

データがなければ、別の方法を示すオプションしかありません。

最初に (常に大きな欠点となるデータを知らずに)、HiddenMarkovパッケージまたはHMMパッケージを使用して分析できるマルコフ スイッチング モデルを紹介します。(残念ながら、最初のリンクで説明されている -package は維持されなくなりました)RHmm

Twitter の外れ値の検出を調べる価値があるかもしれません。

さらに、変化点の検出やレジームの変化を調べるブログ投稿が多数あります。この R ブロガーのブログ投稿は、最初は非常に役立つと思います。これはCPM、「パラメトリックおよびノンパラメトリック手法を使用した順次およびバッチ変更検出」を表すパッケージ、BCPパッケージ (「変更点問題のベイジアン分析」)、およびECPパッケージ (「ノンパラメトリック複数変更点」) を指します。多変量データの分析」)。多変量データがないため、おそらく最初の 2 つを調べる必要があります。

それはあなたが始めるのに役立ちますか?

于 2015-12-17T14:47:55.307 に答える
0

統計アルゴリズムを使用しないグラフィカルな回答を提供できます。あなたのデータから、「異常な」シーケンスが一定の部分を示しているか、逆に非常に大きな変動があるように見えることがわかりました。導関数に取り組み、この導関数に制限を設定するとうまくいく可能性があります。回避策は次のとおりです。

require(forecast)
test=c(df2$BP)
test=ma(test, order=50)
test=test[complete.cases(test)]
which <- ma(0+abs(diff(test))>1, order=10)>0.1
abnormal=test; abnormal[!which]<-NA
plot(x=1:NROW(test), y=test, type='l')
lines(x=1:NROW(test), y=abnormal, col='red')

機能: 最初に移動平均を使用してデータを「平滑化」し、微小変動が検出されないようにします。次に、「diff」関数 (導関数) を適用し、それが 1 より大きいかどうかをテストします (この値は、なだめる振幅に応じて手動で調整する必要があります)。次に、小さなギャップのない異常なシーケンスの「ブロック」全体を取得するために、ブール値に再度平滑化を適用し、0.1 よりも優れているかどうかをテストして、ゾーンの境界をより適切に把握します。最終的に、斑点のある部分を赤で重ねてプロットします。

ここに画像の説明を入力

これは、1 つのタイプの異常に対して機能します。他のタイプの場合、逆に微分に低いしきい値を設定し、平滑化の調整パラメーターをいじることができます。

于 2015-12-19T01:27:12.580 に答える