JSL スクリプト - 予測式の結果を取得するこんにちは、
予測式にXを設定した後、予測値を取得しようとしています。
たとえば、Y = X1 + X2 の場合、新しい行を作成したい場合、X1 = 2 と X2 = 4 を設定し、Y = 6 の予測値を取得します。
これを行う最も簡単な方法は、予測式を新しい列のセットに保存することだと思いました。
次に、新しい行を追加して、すべての X を設定します。
次に、予測式の行の値にアクセスするだけです。
ただし、これは機能しません。 ログは、値が「.」を返すことを示しています。 スクリプトを 2 回実行すると、複数の行が作成され、値が正しく返されます。 2 つの行を追加してスクリプトを 1 回だけ実行しても、「null」または「.」が返されます。ログファイルに。 JMP がスクリプトを 2 回実行して、X 値が設定された新しく追加された行の予測式の結果を取得する必要があるのには理由があるようです。
スクリプトを使用して予測式から予測値を取得するより良い方法はありますか?
ありがとうございました、
ネイト
Re: JSL スクリプト - 予測式の結果を取得する偉大な。 現在実行されており、期待どおりに動作しています。 どうもありがとう。Re: JSL スクリプト - 予測式の結果を取得するJMP Pro には、通常のバージョンにはない PLS 機能が追加されていることを忘れていました。 JMP の場合も同様ですが、もう少し単純です。
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Do a PLS fit in JMP (also works in JMP Pro)
pls = dt << Partial Least Squares(
Y( :ls, :ha, :dt ),
X(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
Validation Method( Name( "Leave-One-Out" ), Initial Number of Factors( 15 ) ),
Fit(
Method( NIPALS ),
Number of Factors( 7 ),
Show Confidence Band( 1 ),
Distance Plots( 1 ),
Scatter Scores Plots( 1 ),
Diagnostics Plots( 1 ),
Overlay Loadings Plots( 1 ),
T Square Plot( 1 ),
Overlay Coefficients Plots( 1 )
)
);
// See what messages the PLS platform understands (look in the Log Window)
ClearLog();
ShowProperties(pls);
// Save some results from the (7 factor) fit
pls << (Fit[1] << savePredictionFormula);
pls << (Fit[1] << saveYresiduals);
コードが機能する理由を理解するには、「ヘルプ > 書籍 > スクリプト ガイド」から始めて、JSL の基礎を学びます。
Re: JSL スクリプト - 予測式の結果を取得するありがとうイアン
申し訳ありませんが、私のスクリプトに関する知識は限られています。あなたの助けは私を加速させるものではありません。もう少しサポートをお願いできますか。
まず、PRO ではなく JMP を使用します。 これが、私の JMP 自動化 PLS スクリプトがあなたのものと異なって見える理由だと思います。 スクリプトを添付しました。
スクリプトを読んでいると、たくさんの質問が表示されます。
なぜPLSLAUNCHとPLSFITSを分けているのですか? それは必要ですか、それとも読書/文書化を快適にするためですか?
たとえば、「適合」が 1 つだけの場合、PLSFITS に適合を割り当てる必要がありますか?ちょうど7つの要因( plsFits << (フィット[ 1 ] << savePredictionFormula );
plsFits << (フィット[ 1 ] <<残余を保存); Fit[1] の残差をオブジェクト PLSFITS に保存します (この名前は私が選択できます。識別しやすいように PLSFITS にすぎません)。
スクリプトを実行すると、ログウィンドウに次のエラーが表示されます: plsFits << (Fit[/*###*/1] << savePredictionFormula);それは PRO 用語のせいですか?
どうもありがとう
ピーター
Re: JSL スクリプト - 予測式の結果を取得するこんにちはピーター、これはあなたが始めるのに役立つはずです. 'Wait()' コマンドは見た目の効果のためのものであり、削除することができます。
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Launch the PLS platform
plsLaunch = dt << Fit Model(
Y( :ls, :ha, :dt ),
Effects(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
No Intercept( 1 ),
Center Polynomials( 0 ),
Personality( "Partial Least Squares" )
);
// Do a couple of fits
Wait(2);
plsFits = plsLaunch << Run(
Fit( Method( NIPALS ), Number of Factors( 7 ) ),
Fit( Method( NIPALS ), Number of Factors( 6 ) )
);
// Save the prediction formula for the first fit (7 factors)
Wait(2);
plsFits << (Fit[1] << savePredictionFormula);
// Save the prediction formula for the second fit (6 factors)
Wait(2);
plsFits << (Fit[2] << savePredictionFormula);
// Now save the Y residuals
Wait(2);
plsFits << (Fit[1] << saveYresiduals);
plsFits << (Fit[2] << saveYresiduals);
Re: JSL スクリプト - 予測式の結果を取得するこんにちはイアン、
私はコミュニティを検索して、PLS の「Save Y Predicted Values」を JSL に保存しています。 どのツールでどの列の節約に対処するかを示すドキュメントがありますか (予測式、信頼区間、予測値など)。
ありがとうピーター
Re: JSL スクリプト - 予測式の結果を取得する申し訳ありませんが、問題を混乱させた可能性があります。 「Wait()」は、見た目の効果のためだけのものでした。 通常、JSL ではこれが必要になることはありません (ただし、必要になる可能性がある非常にまれな状況がいくつかあります)。 おそらく、データ テーブルに「Run Formulas」メッセージを送信するのが最善です。
Re: JSL スクリプト - 予測式の結果を取得するあぁ完璧! Wait() を入れるだけです。 ありがとうございました!
Re: JSL スクリプト - 予測式の結果を取得する詳細は使用するプラットフォームによって異なりますが、基本的な考え方は次のとおりです。
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(X(:height), Y(:weight));
// Do a regression
biv << fitLine;
/// Save the prediction formula column
biv << (curve[1] << savePredicteds);
// Add a new observation (row) that we want to predict for
Wait(2);
dt << addRows(1);
// Give predictor values and get the prediction back
Column(dt, "weight")[NRow(dt)] = 160;
Column(dt, "height")[NRow(dt)] = 65;