私の最後の質問の補足として...
たとえば、Samples/Data/Functional Data/ Weekly Weather Data.jmp などのデータ テーブルで最適なウィンドウを特定する必要があります。STATION ごとに最も高い TMAX を持つ X 個の連続ライン (移動ウィンドウ) を特定する必要があります。平均が最も高いウィンドウを使用するか、最小値が最も低いウィンドウを使用するかわからないので、両方を行う方法を知りたいです。
前と同様に、JSL を使用してこれを行う方法があると思いますが、可能であれば関数を使用したいと思います。
Col Moving Average() と Col Rank() を使ってたくさんのことを試しましたが、どういうわけか手が届かないように感じます。
あなたの質問を誤解しているようですが、ステーションごとの列の最大値が必要なだけのようです。添付および保存されている結果の表のスクリプトの最後の列を参照してください。しかし、私はあなたが何か別のことを言いたいのではないかと思います、そして私はあなたの言う「移動ウィンドウ」が何を意味するのか理解できません。
いいえ、X 連続行 (たとえば連続 4 行) の隣に「1」があり、それらの 4 行にわたる別の列の最小値が最大となる列を作成しようとしています。
探しているものの最終結果の例を提供していただけると助かります。
組み合わせてみてはどうでしょうかコル・マックス(ピークを見つけるために)列移動平均(検索ウィンドウを拡大するため)
加えて:
- ピーク位置をマークするには、個々の値を最大値と比較します
クイック&ダーティ:
- おそらく: 2 試合
- おそらく[しかし可能性は低い]: 別のステーションの最大値との間違った一致 - のために週間天気データ、追加の労力を投資する必要があります。
すべてのステーションでいくつかの週が欠落しています。そのため、正しいウィンドウ内で検索するには、分割とスタックを介して欠落データについて Jmp に通知する必要があります (完全に欠落している週がないため機能します)。

dt = Open( "$SAMPLE_DATA/Functional Data/Weekly Weather Data.jmp" );
half_window_size = 2;
dtsplit = dt << Split(
Split By( :week of year ),
Split( :TAVG ),
Group( :STATION ),
Remaining Columns( Drop All )
);
myNames=dt split << get column names();
myNames= myNames[2::Nitems(myNames)];
dtstack = dtsplit <<
Stack(
columns(myNames)
);
New Column( "window",Formula(Col Moving Average( :Data, 1, half_window_size, half_window_size, :STATION )));
New Column( "max_window",Formula( Col Maximum( :window, :STATION ) ));
New Column( "marker",Nominal,Formula( :window == :max_window ));
:Label << Set Data Type(Numeric) << set name ("week of year");
Graph Builder(
Variables(
X( :week of year ),
Y( :Data ),
Y( :window, Position( 1 ) ),
Y( :max_window, Position( 1 ) ),
Group X( :STATION, N View Levels( 1 )),
Overlay( :marker )
),
Elements(
Points( X, Y( 1 ), Overlay( 0 ) ),
Points( X, Y( 2 )),
Smoother( X, Y( 3 ) )
)
)
私たちの特定の問題は当初認識していたよりもはるかに複雑であることが判明したため、Python の方が慣れ親しんでいたため、最終的には Python で処理をコーディングすることになりました。
フラグを立てます@ホギトピックを閉じるための解決策として。