こんにちは、
ユーザーができるようにするスクリプトに取り組んでいます
- モデルに適合する列を選択する
- 一次変数を特定し、目標値を指定します
- モデルを分割する列を特定する
- JMP にモデルを作成させ、望ましさを最適化して目的のターゲットに到達させ、モデルの結果を出力します。
- 便利な出力テーブルから結果をコピーする
ユーザーの入力や選択を許可せずに自分のやりたいことを実行する機能的なスクリプトがありますが、スクリプトをインタラクティブにするのは困難でした。 私はほとんどそこにいると思いますが、苦労している特定のことがいくつかあります
- 質問 1: このスクリプトの以前のバージョンでは、While( x == "y[i]") 行を含む for ループを使用して、モデルごとに異なるウィンドウを使用しました。 By( :x ) の方が柔軟性が高く、出力ウィンドウが 1 つしかないため、むしろ使用したいと思います。 ただし、By( :x ) を使用すると、後のスクリプトが中断され、レポートからスクリプト可能なオブジェクトが取得されます。 モデル ウィンドウのサブボックスごとに異なるレポートを作成することはできますか? または、173 ~ 181 行をコーディングするより良い方法はありますか? これらの他の 2 つのスレッドに基づいてこれらの行を作成します。スレッド 1 、スレッド 2 .
- 質問 2: 望ましさ関数を持たずにモデル化された可変数の効果を持つことができるオプションが必要です (後で完全なスクリプトにも最小化された効果がありますが、この単純化されたデモ スクリプトは複雑になりすぎていました。 122 ~ 126 行目で、ModExpr で目的の式を作成できましたが、リストであるため、プロファイルに直接代入しようとすると機能しませんでした。 私の回避策は、モデル化すると予想される変数の数よりも多くのプレースホルダーを使用することです。モデル化された効果が 6 つ未満の場合、コードは無意味な部分を無視するように見えますが、これは非常にぎこちないようです。 リストが機能する単一の式として結合されるように、130 ~ 134 行のコメント付きコードを修正する方法はありますか? Concatenation もうまく動作させることができませんでしたが、見逃した単純なものがあるに違いありません。
サンプル データを使用したサンプル スクリプトを次に示します。 モデルはひどいフィット感ですが、デモではそれほど重要ではありません。 実行時に「by」の選択を解除すると、正常に実行され、結果が出力されます。 「by」セクションに何かが残っていると、174 行目が壊れます。
助けてくれてありがとう!
Names Default To Here( 1 );
//sample data for demo
dt = Open( "$SAMPLE_DATA/Football.jmp" );
xvar = {};
yvar = {};
byvar = {};
ytarg = 60;
dtout = {};
//let users select the columns to model
win = New Window( "Model Variable Selection",
<<MODAL></MODAL>