私は10分間毎分測定を行ういくつかの実験データを持っています。
次に、セットの中央にあるデータポイントのサブセットの平均を取りたいと思います。
私の解決策は、基準(モーダルウィンドウを介して入力)を含む数式を含む非表示の列(:Range)を作成し、計算に含める場合は各行を1または0に設定することです。
次に、出力列はCol Mean関数を使用して、関心のあるポイントの平均を取ります。
この部分はうまく機能していますが、最初の空白行(計算には含まれていません)が次の行の値を取得することも必要です。これは、今後のデータ操作に役立ちます。 以下のようにラグ機能を追加しました。
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 )
)
問題は、これをスクリプトとして実行すると、Lag関数が機能しないことです。 上記の数式を手動で入力すると正常に機能しますが、以下のスクリプトは、数式が列に正しく適用されていることを確認できるにもかかわらず、:Range==1の行にのみデータを入力します。
New Column( "Mean Measurement", Formula(
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 ))))
これには何か理由がありますか?また、列に数式を再評価させて正しく実行する方法はありますか?
Lag()関数は指定された行で動作し、「ベクトル化された」関数ではありません。列関数では、行は暗黙的(テーブルの行)であるため、列の数式で問題なく機能します。
スクリプトの場合、lag関数ステートメントの前にRow()== コマンドを使用して行を指定すると、Lagは値を返す必要があります。
Row() = 3;
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 )
)
また、念のために言っておきますが、Lag(:column、)のラグ番号引数は、負の数の場合、実際には「フォワードラグ」です。上に示した例では、前の行ではなく、次の行の値を検索します。
なぜ1分間隔で10回測定するのですか? なぜ時間経過の途中でいくつかの観測値の平均を使用するのですか?
曲線全体を応答値として分析すると、より多くの情報が得られる可能性があります。 を参照してください機能データエクスプローラーより多くのアイデアのために。 JMPProを使用して「機能DOE」を分析できます。