2

整数の配列で表される継続的に着信するデータがありx = [x1,...,xn], n<1 000 000ます。2つの要素はそれぞれ次の条件を満たすx[i] < x[i + 1]

このようなブレークポイントをできるだけ早く検出する必要があります。このブレークポイントでは、これらのデータの線形トレンドが終了し、2次トレンドに変換されます。データは常に線形トレンドで始まります...

計算してみました

k = (x[i+1] - x[i])/ (x[i] - x[i-1]) 

しかし、この検定はあまり信頼できません...多分もっと単純で効率的な統計検定があります...この場合、回帰直線の計算は遅いです...

4

4 に答える 4

1

最初の派生と2番目の派生を追跡します。つまり、x [i]-x[i-1]の平均と分散を維持します。そして、(x [i + 1] -x [i])-(x [i] -x [i-1])の合計と分散を保持します。

線形トレンドの場合、一次導関数の平均は一定である必要があり、平均からの偏差(分散を使用して計算できます)を観察した場合、何かが間違っていると言うことができます。二階導関数の平均は0でなければなりません。

二次トレンドの場合、一次導関数の平均が増加します。したがって、平均からの偏差が大きいサンプルが多数見つかります。二次導関数の動作は、線形の場合の一次導関数の動作と似ています。

アルゴリズム(2階導関数のみを使用):

  1. 入力ごとに、符号(+ veまたは-ve)の2階導関数を計算します
  2. 最近取得した同種の兆候の数を追跡します(つまり、シーケンスが-+-++++の場合、答えは4です)
  3. 均質記号の長さがしきい値(40としましょう)より大きい場合は、2次シーケンスの開始としてマークします
于 2012-02-15T20:19:31.397 に答える
0

実際には、関数の導関数を計算します。おそらくあなたはそれを計算するためにより多くのポイントを使うべきです例えば5、五点ステンシルを見てください

于 2012-02-16T21:09:31.013 に答える
0

ここで実行中のウィンドウ回帰を使用できます。

Wポイントの線形回帰係数の計算には、X [i]、iX [i]、およびX [i]^2の形式の項の合計が含まれます。これらの合計を保存すると、左端の点の項を推定し、右端の点の項を追加することで、簡単に1ポイントシフトできます(iX [i]は(i + 1).X [i]、ieiX[i]になります。 + X [i])。データ値は整数であり、丸めの累積はありません。

つまり、W個の連続するポイントごとに一定時間で実行中の回帰を計算し、相関係数の低下を検出できます。

于 2012-02-15T20:45:07.417 に答える
0

超高速ソリューションの場合、次のようなテストを検討できます。

| X[i + s] - 2 X[i] + X[i - s] | > k (X[i + s] - X[i - s])

よく選択されたsとkの場合。

|のプロットを見てください X [i + s]-2 X [i] + X [i --s] | /(X [i + s] --X [i --s])sの値を増やすためのiの関数として。

于 2012-02-15T20:58:52.987 に答える