この質問は基本的すぎるかもしれません。データの時間的傾向について、「急激な」変化が起こるポイントを知りたい。たとえば、下の最初の図では、統計的方法を使用して変化点を見つけたいと思います。そして、変化点が明らかでない他のデータ(2番目の図のような)にそのような方法を適用したいのですが、そのような目的のための一般的な方法はありますか?
この質問は基本的すぎるかもしれません。データの時間的傾向について、「急激な」変化が起こるポイントを知りたい。たとえば、下の最初の図では、統計的方法を使用して変化点を見つけたいと思います。そして、変化点が明らかでない他のデータ(2番目の図のような)にそのような方法を適用したいのですが、そのような目的のための一般的な方法はありますか?
回答:
時系列データの観測値が直前の観測値と相関している場合は、Chen and Liu(1993)[ 1 ]の論文に興味があるかもしれません。自己回帰移動平均時系列モデルのフレームワークでレベルシフトと一時的な変化を検出する方法について説明します。
[1]:Chen、C.およびLiu、LM。(1993)、
「時系列におけるモデルパラメータと外れ値の影響の共同推定」
、アメリカ統計協会ジャーナル、88:421、284-297
Statsのこの問題は、(一変量)時間イベント検出と呼ばれます。最も単純なアイデアは、移動平均と標準偏差を使用することです。3標準偏差(経験則)から「範囲外」である読み取り値はすべて、「イベント」と見なされます。もちろん、HMMまたは回帰を使用するより高度なモデルもあります。ここでは、フィールドの概要を紹介します。
シリーズまたはシーケンスを理想的な定数値を持つスペルに分割するという関連する問題があります。数値データを自然に形成される「ブラケット」にグループ化する方法を参照してください。(例:収入)
質問は、いずれかまたはすべての方向にゆっくりとドリフトするが、突然の変化がないスペルを除外しないので、まったく同じ問題ではありません。
より直接的な答えは、大きなジャンプを探しているということです。したがって、本当の問題はジャンプを定義することです。最初のアイデアは、隣接する値間の最初の違いを調べることです。ジャンプをノイズの違いと区別できない場合でも、ジャンプを急激に行うことはできないので、最初にノイズを除去することによってそれを調整する必要があるかどうかさえも明確ではありません。一方、質問者は明らかに急激な変化に段階的変化だけでなく傾斜変化も含めることを望んでいるため、固定長ウィンドウ内の分散または範囲などの基準が求められているようです。
探している統計の領域は、変化点分析です。ここには、エリアの概要とソフトウェアのページを提供するWebサイトがあります。
あなたがR
ユーザーならchangepoint
、平均のstrucchange
変更のためのパッケージと回帰の変更のためのパッケージをお勧めします。ベイジアンになりたい場合は、bcp
パッケージも良いです。
一般に、探している変更の強さを示すしきい値を選択する必要があります。もちろん、特定の状況で人々が主張するしきい値の選択肢があり、漸近的な信頼水準またはブートストラップを使用して信頼を得ることもできます。
この推論の問題には、変化点、スイッチポイント、ブレークポイント、折れ線回帰、折れ線回帰、双一次回帰、区分的線形回帰、局所線形回帰、セグメント化回帰、不連続モデルなど、多くの名前があります。
ここでは、長所/短所と効果的な例を含む変更点パッケージの概要を示します。変更点の数が事前にわかっている場合は、mcp
パッケージを確認してください。まず、データをシミュレートします。
df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))
あなたの最初の問題については、それは3つの傍受のみのセグメントです:
model = list(
y ~ 1, # Intercept
~ 1, # etc...
~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")
結果の近似をプロットできます。
plot(fit)
ここでは、変化点が非常に明確に定義されています(狭い)。推定された位置(cp_1
およびcp_2
)を確認するために近似を要約しましょう。
summary(fit)
Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
1: y ~ 1
2: y ~ 1 ~ 1
3: y ~ 1 ~ 1
Population-level parameters:
name mean lower upper Rhat n.eff
cp_1 3.05 3.0 3.1 1 6445
cp_2 11.05 11.0 11.1 1 6401
int_1 0.14 -1.9 2.1 1 5979
int_2 179.86 178.8 180.9 1 6659
int_3 22.76 19.8 25.5 1 5906
sigma_1 4.68 4.1 5.3 1 5282
mcp
N次の自動回帰のモデリング(時系列に便利)など、より複雑なモデルをで実行できます。免責事項:私はの開発者ですmcp
。