数式の再実行に関するスクリプトの質問以前の投稿でこの質問をしましたが、それは数週間前だったので、気付かれないかもしれません。これは、このグループにとって簡単なスクリプトの質問だと思います。以下は、ステップワイズ回帰のモンテカルロシミュレーションを正常に実行するスクリプト(frankから寄贈されたもの)です。それがしなかった唯一のことは、ステップワイズ回帰を実行する前に、数式に乱数がある列の数を再計算することでした。<< Rerun Formulasコマンドは、テーブルの赤い矢印をクリックしてRerun Formulasと言うと機能しますが、スクリプトでは何も実行されません。Forループの各反復の前に、数式を再実行するのを誰かが手伝ってくれますか?
私の失敗した試みは、スクリプトの19行目です。ありがとう。
Clear Globals();
Clear Log();
Names Default To Here( 1 );
//Define path in and out
Path_in = Pick File( "Select file" );
If( Directory Exists( "$Desktop\Fit_Stepwise" ),
,
Create Directory( "$Desktop\Fit_Stepwise" )
);
Path_out = "$Desktop\Fit_Stepwise\";
//Run Fit model and stepwise after open datatable
dt = Open( Path_in );
For( i = 1, i <= 1000, i++,
dt << Rerun Formulas;
ow = dt << Fit Model(
Y( :Y ),
Effects(
:Column 2 001,
:Column 2 002,
:Column 2 003,
:Column 2 004,
:Column 2 005,
:Column 2 006,
:Column 2 007,
:Column 2 008,
:Column 2 009,
:Column 2 010
),
Personality( "Stepwise" ),
Run,
SendToReport( Dispatch( {}, "Step History", OutlineBox, {Close( 1 )} ) )
);
dt_result = Report( ow )[Outline Box( "Stepwise Fit for Y" )][Outline Box( "Current Estimates" )][Table Box( 1 )] << Make Into Data Table;
dt_result << save( Path_out || Char( i ) || ".csv", "csv" );
ow << close window;
dt_result << Close Window;
);
dt << Close Window;
dt_result = Multiple File Import(
<<SET folder="">F\!"" ) > 0.05 ) ) << Delete Rows;
dt_result << Distribution( Stack( 1 ), Nominal Distribution( Column( :Parameter ), Horizontal Layout( 1 ), Vertical( 0 ) ) );</SET>スクリプティングRe:数式の再実行に関するスクリプトの質問再実行式は機能するはずです。おそらくどこかにwait(0)を追加する必要がありますか? データテーブルが表示されない場合、問題がどこにあるかをテストするのは少し困難です(行数、列数、複雑な数式、何らかの理由でランダムシードが変更されない)。
この簡単な例では、値は正常に更新されているようです。
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(5),
New Column("Column1", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal(1, 1))),
New Column("Column2", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal(2, 1)))
);
For(i = 1, i <= 3, i++,
dt << Rerun Formulas;
Show(dt:Column1 << get as matrix);
Show(dt:Column2 << get as matrix);
fm = dt << Fit Model(
Y(:Column1),
Effects(:Column2),
Personality("Stepwise"),
Run,
SendToReport(Dispatch({}, "Step History", OutlineBox, {Close(1)}))
);
dt_result = Report(fm)[Outline Box("Stepwise Fit for Column1")][Outline Box("Current Estimates")][Table Box(1)] << Make Into Data Table;
fm << close window;
//dt_result << Close Window;
);Re:数式の再実行に関するスクリプトの質問ファイルを添付しました。Rerun Formulasを正しい場所に挿入したようですが、機能していません。ウェイトはどこにどのように行きますか?
Re:数式の再実行に関するスクリプトの質問列が評価されることを確認するために、Forループの前にこれを追加します(JMP16より前のバージョンを使用している場合は、For EachをForに変更します)。
For Each({col_name}, dt << get column names(String),
Column(dt, col_name) << suppress eval(False)
);
表で数式列を開いたところ、評価が抑制されていましたが、ダウンロードしたファイルの安全機能である可能性があります。
wait(0)を追加する必要がある場合は、最初は少し過剰になり、forループ内のすべての行の後にほとんど追加することができます。 通常、JMPでは必要ありませんが、必要な場合もあります。