Question de script pour les formules de réexécutionJ'ai posé cette question sur un post précédent, mais c'était il y a quelques semaines, donc elle ne sera peut-être pas remarquée.Je soupçonne que c'est une question de script facile pour ce groupe.Vous trouverez ci-dessous un script (donné par frank) qui exécute avec succès une simulation de Monte Carlo pour une régression pas à pas.La seule chose qu'il n'a pas fait était de recalculer un certain nombre de colonnes où j'ai des nombres aléatoires dans les formules avant de procéder à la régression pas à pas.La commande <
Ma tentative infructueuse est la ligne 19 du script.Merci.
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>ScriptRe : Question de script pour les formules de réexécutionLes formules de réexécution devraient fonctionner, peut-être avez-vous besoin d'ajouter wait(0) quelque part ? Sans voir le tableau de données, il est un peu difficile de tester où le problème pourrait se trouver (nombre de lignes, nombre de colonnes, formules compliquées, graine aléatoire ne changeant pas pour une raison quelconque).
Avec cet exemple simple, les valeurs semblent bien se mettre à jour :
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 : Question de script pour les formules de réexécutionJ'ai joint le fichier.Il semble que j'ai inséré Rerun Formulas au bon endroit, mais cela ne fonctionne pas.Comment et où va Wait ?
Re : Question de script pour les formules de réexécutionJuste pour vous assurer que cette colonne sera évaluée, ajoutez ceci avant la boucle For (si vous utilisez une version antérieure à JMP16, changez For Each en For):
For Each({col_name}, dt << get column names(String),
Column(dt, col_name) << suppress eval(False)
);
Dans le tableau, j'ai ouvert les colonnes de formule dont l'évaluation avait été supprimée, mais il s'agissait peut-être simplement d'une fonction de sécurité avec les fichiers téléchargés.
Si vous devez ajouter wait(0), vous pouvez aller un peu trop loin avec pour commencer et presque l'ajouter après chaque ligne à l'intérieur de la boucle for. En général, il n'est pas nécessaire dans JMP, mais dans certains cas, il est nécessaire.