Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)J'ai une analyse qui utilise plusieurs colonnes contenant des éléments aléatoires.Je sais comment mettre à jour manuellement les nombres aléatoires qui se trouvent dans les colonnes et je comprends comment effectuer une simulation pour le résultat d'une analyse.Mais dans ce cas, je souhaite exécuter une régression pas à pas chaque fois que les nombres aléatoires dans les colonnes sont mis à jour.Je veux faire ça au moins 1000 fois.Je ne sais pas comment automatiser ce processus : générer de nouveaux nombres aléatoires dans les colonnes de formules, réexécuter la plateforme de régression pas à pas, exécuter le modèle choisi et collecter les résultats.
Modélisation statistique avancéeRe : Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)(On dirait qu'il y en a un autre, fil connexe que je n'avais pas repéré avant de poster ceci).
Quoi qu'il en soit, veuillez trouver une approche alternative (en utilisant le tableau de données ci-dessus) qui peut (ou non...) être plus rapide :
NamesDefaultToHere(1);
dt = DataTable("Test Data.jmp");
n = 100; // Number of simulations
resMat = []; // Results matrix
for(i=1, i<=n, i++,
fm = 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,
Invisible
);
fmRep = Report(fm);
fmRep[ButtonBox(7)] << click; // Press the 'Go' button
Wait(0); // Needed to let Stepwise do it's thing before proceeding
selectedItems = fmRep[CheckBoxBox(2)] << Get Selected Indices As Matrix; // Retrive which parameters were selected this time
fmRep << closeWindow;
resmat = VConcat(resmat, Transpose(selectedItems)); // Append current results row-wise to those we have already
dt << reRunFormulas; // Get a new random sample
);
dt2 = AsTable(resmat); // Make a results table
dt2 << setName("Parameters selected by 'Stepwise'");
Re : Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)J'ai trouvé l'instruction manquante, mais je n'arrive pas à la faire fonctionner.dt << Réexécuter les formules ;
générera un nouvel ensemble de nombres aléatoires dans mes formules.Cependant, lorsque je l'insère dans le script - à l'intérieur de la boucle For mais avant Fit Model, il ne semble pas modifier les nombres aléatoires.Mon script modifié est :
Effacer les valeurs globales ();
Effacer le journal ();
Noms par défaut ici ( 1 );
//Définit le chemin d'entrée et de sortie
Path_in = Choisir un fichier( "Sélectionner un fichier" );
Si (le répertoire existe ( "$Desktop\Fit_Stepwise" ),
,
Créer un répertoire( "$Desktop\Fit_Stepwise" )
);
Path_out = "$Bureau\Fit_Stepwise\";
//Exécuter le modèle Fit et par étapes après avoir ouvert la table de données
dt = Ouvert( Chemin_in );
Pour( je = 1, je <= 1000, je++,
dt << Réexécuter les formules ;
ow = dt << Ajuster le modèle (
Oui( :Oui),
Effets(
:Colonne 2 001,
:Colonne 2 002,
:Colonne 2 003,
:Colonne 2 004,
:Colonne 2 005,
:Colonne 2 006,
:Colonne 2 007,
:Colonne 2 008,
:Colonne 2 009,
:Colonne 2 010
),
Personnalité( "Stepwise" ),
Courir,
SendToReport( Dispatch( {}, "Historique des étapes", OutlineBox, {Close( 1 )} ) )
);
dt_result = Rapport (ow) [Boîte de contour ("Ajustement pas à pas pour Y" )][Boîte de contour ("Estimations actuelles" )][Boîte de tableau (1)] << Transformer en tableau de données ;
dt_result << save( Path_out || Char( i ) || ".csv", "csv" );
ow << fermer la fenêtre ;
dt_result << Fermer la fenêtre ;
);
dt << Fermer la fenêtre ;
dt_result = Importation de fichiers multiples (
< < < < < << Définir le filtre de date ({3727681987.773, 3727682566.676}),
< < < < < < < < < < < < < < < < < < < < < < ) << Importer des données ;
dt_result << Sélection de ligne( Sélectionnez où( :Name( "\!"Prob>F\!"" ) > 0,05 ) ) << Supprimer les lignes ;
dt_result << Distribution (Pile ( 1 ), Distribution nominale ( Colonne ( :Paramètre ), Disposition horizontale ( 1 ), Verticale ( 0 ) ) );
Quelqu'un peut-il m'aider à placer la commande Réexécuter les formules ou me dire pourquoi cela ne fonctionne pas ?
Re : Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)franc
Merci, c'est presque parfait.Cependant, j'ai des fonctions aléatoires dans mes colonnes et je souhaite qu'elles soient mises à jour (choisissez de nouveaux tirages aléatoires) à chaque fois que la boucle est exécutée.Le script que vous avez écrit semble utiliser les mêmes nombres aléatoires pour chaque exécution.Existe-t-il un moyen de mettre à jour les formules à chaque fois ?
Re : Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)Salut dale_lehman
Mon idée est d'obtenir et d'enregistrer le résultat de la plate-forme « par étapes » dans un dossier. Alors ' Importation de plusieurs fichiers ' le résultat entier dans un seul fichier.
Enfin, nettoyez la ligne par ' Valeur P' et distribuez-le comme vous le souhaitez.Détaillez JSL comme ci-dessous :
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++,
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 : Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)Ce que vous avez exposé dans le post précédent est un bon plan. Je ferais ça aussi. Je vais essayer de donner quelques recommandations.
- Si vous débutez dans la création de scripts dans JMP, un point de départ est Guide de script . Certains éléments importants, dans cette tâche spécifique, pourraient être :
- En plus de cela, vous devez être familier avec Scripting Index dans le menu Aide. Il existe 3 groupes d'objets de script : fonctions, objets et zones d'affichage. Il y a une zone de liste déroulante en haut à gauche et vous pouvez vous limiter à un groupe spécifique.
- Pour cette tâche spécifique, vous devrez peut-être consulter le groupe Objets. Toutes les plateformes, y compris le tableau de données, sont répertoriées ici. Vous souhaiterez peut-être consulter l'élément « Ajuster par étapes » sous l'objet « Ajuster le modèle ». Cliquez sur « Ajuster par étapes » et recherchez à droite un message « Terminer » parmi les « Messages d'élément ». C’est peut-être la pièce clé qui vous manque maintenant.
- Pour cette tâche spécifique, vous devez également apprendre à manipuler des tableaux de données. La concaténation, en particulier, peut-être. Accédez à la liste des objets, cliquez sur « Tableau de données » et recherchez à droite « Concaténer » parmi les messages d'élément.
Outre ce qui précède, voici d’autres conseils utiles que j’ai appris de mes collègues.
- Publiez des questions plus petites et spécifiques sur le forum de discussion, dans la mesure du possible. Il sera plus susceptible de générer de l’aide.
- Préférez les captures d’écran aux pièces jointes. Pour les codes JSL, vous pouvez les insérer directement dans la publication afin que les lecteurs puissent les voir. Recherchez le bouton dans la barre d'outils lorsque vous modifiez une publication. Il sera également plus susceptible de générer de l’aide. Par exemple, il est peu probable qu'un lecteur sur un appareil mobile ouvre une pièce jointe.

Re : Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)J'ai en grande partie résolu mon problème, mais j'ai encore une question.Vous trouverez ci-joint un petit script qui exécute la régression pas à pas comme je le souhaite.Mais pour générer 1 000 échantillons, je devais créer une colonne « échantillon » et l'utiliser comme variable « Par » dans l'analyse.Cela fonctionne, mais c'est une manière fastidieuse de faire une simulation, car je dois créer un fichier très long - par exemple, pour 1 000 échantillons de 1 000 observations chacun, j'ai besoin de 1 000 000 de lignes.Quelqu'un connaît-il un moyen plus efficace de réaliser une simulation ?Pour autant que je sache, l'option « simuler » qui accompagne de nombreuses plates-formes JMP ne peut simuler que certains résultats d'analyse, mais pas l'analyse elle-même.
Re : Simulation Monte Carlo pour une plateforme d'analyse (régression pas à pas)Permettez-moi d'être plus précis au cas où l'un des généreux scripteurs pourrait vous aider.J'ai joint une version plus petite de ce que j'essaie de faire.J'ai 10 colonnes (toutes commençant par la colonne 2) dans le fichier joint qui impliquent une distribution normale aléatoire et la première colonne Y, qui utilise 5 colonnes étiquetées paramètre 1 à 5 et une distribution normale aléatoire dans la formule.Je souhaite effectuer les étapes suivantes :
1. Exécutez la régression pas à pas stockée dans le fichier.Je n'ai pas besoin de créer ou d'exécuter le modèle, il me suffit d'exécuter le bouton Go qui exécute la procédure étape par étape après l'exécution à partir de la plateforme Fit Model.
2. Enregistrez la fréquence à laquelle chacune des 10 colonnes commençant par la colonne 2 est sélectionnée par la procédure étape par étape. (Je ne sais pas comment créer un script pour collecter ces informations particulières)
3. Réexécutez la formule pour les 5 colonnes de paramètres afin qu'elles contiennent un nouvel ensemble de valeurs simulées.Je sais que cela peut être fait avec la commande Rerun formula trouvée sur la flèche rouge en haut à gauche du tableau (mais je ne sais pas comment écrire cela).
4. Répétez les étapes 1 et 2. (Je crois que cela peut être fait via une simple boucle)
5. Faites cela 1 000 fois et affichez les distributions pour le nombre de fois où chacune des 10 colonnes de la colonne 2 a été sélectionnée dans la procédure pas à pas.
Je crois que tout cela peut être programmé, mais cela dépasse de loin tout ce que je suis capable de faire.Si quelqu'un peut être utile, je l'apprécierais.Je suis prêt à co-écrire un article avec quelqu'un car j'ai un débouché en tête pour cela.