こんにちは、みんな、
ピリオドグラムからピークの位置を取得したい場所について時系列分析を実行しているデータがあります (時系列 > スペクトル密度の保存)。 たとえば、Air.jmp サンプル データ テーブルを使用して、Y 列変数のみを入力してこれを行うことができます。 X、時間 ID 変数を入れることもできますが、必須ではありません。
とにかく、スペクトル密度を保存すると、興味のあるいくつかの列、:Spectral Density、:Periodogram、および:Frequency が表示されます。以下のスクリーンショットを参照してください。

私がやろうとしているのは、「:Periodogram」列でおそらく上位 3 つまたは 4 つのピークの行番号を見つけることです。「:Spectral Density」列よりも作業が少し簡単です (黄色で強調表示された領域を参照)。 これらの行番号を取得したら、:Period 列と :Frequency 列で対応する値を見つけて、結果をレポートできます。
私が抱えている問題は、Col Max(:Periodogram) の結果ではない他の値を取得できることです。 それは問題なく理解できますが、興味のある他の列を選択するのは困難です。 なげなわツールなどを使用するのではなく、タスクが自動化されるように、JSL を使用してこれを実行したいと考えています。
アイデアや提案をいただければ幸いです。
ありがとう!、
DS
以下は、ピークを見つける 1 つの方法の例です。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/blood pressure.jmp" );
dt << select where(
Try( :bp 8m[Row() - 1], 999 ) < :bp 8m[Row()] & :bp 8m[Row()] > Try( :bp 8m[Row() + 1], 0 )
);
ここにDif()を使用した他のオプションがあります
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Time Series/Air.jmp");
ts = dt << Time Series(Y(:Ozone Concentration));
dt1 = ts << Save Spectral Density;
ts << Close Window;
Close(dt, no save);
dt1 << Sort(By(:Period), Replace Table, Order(Ascending));
dt1 << New Column("PeriodogramPeaks", Numeric, Nominal, Formula(
Dif(:Periodogram) > 0 & Dif(:Periodogram, -1) > 0
));
dt1 << New Column("PeakRank", Numeric, Ordinal, Formula(
Col Number(:Periodogram, :PeriodogramPeaks) - Col Rank(:Periodogram, :PeriodogramPeaks) + 1
));
peak_rows = dt1 << Get Rows Where(:PeakRank <= 4 & :PeriodogramPeaks == 1);
dt1 << Select Rows(peak_rows);
dt1 << Markers(16);
gb = dt1 << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:Period), X(:Frequency), Y(:Spectral Density), Y(:Periodogram)),
Elements(Position(1, 1), Line(X, Y, Legend(7)), Points(X, Y, Legend(8))),
Elements(Position(1, 2), Line(X, Y, Legend(5)), Points(X, Y, Legend(6))),
Elements(Position(2, 1), Line(X, Y, Legend(9)), Points(X, Y, Legend(10))),
Elements(Position(2, 2), Line(X, Y, Legend(11)), Points(X, Y, Legend(12)))
);こんにちは@jthiそして@txnelson 、
お二人ともご意見ありがとうございました。 結局一緒に行くことになった@jthiのソリューションは、スペクトル密度グラフ/データテーブルを使用する方が、私が扱っている種類のデータにとってより適切に機能すると思われたためです。 これに関するお二人のご意見に本当に感謝しています。また別の役立つ解決策をありがとうございます。
DS