Facteurs dans le simulateur à l'aide de variables pour la simulation de Monte CarloBonjour,
Je me demande de faire une simulation de Monte Carlo en utilisant les multiples dimensions répertoriées dans le tableau de données (dt0), les N lignes de dt0 sont dynamiques en fonction des entrées et des exigences de l'utilisateur.
Ma question est de savoir comment utiliser la routine appropriée pour ajouter ces dimensions dans les facteurs du simulateur ?
J'ai essayé d'utiliser la fonction 'Substitute, Parse' pour que cela fonctionne. Mais cela ne fonctionne que lorsque toutes ces dimensions sont répertoriées dans Factors().
Voici mes scripts :
Eval(
Substitute(
Expr(
myanalysis = dt << Profiler(
Y( :Name( "TA Target" ) ),
Profiler(
1,
Simulator(
1,
Factors( Dim A, Dim B, Dim C, Dim D, Dim E, Dim F, ),
Responses( Name( "TA Target" ) << No Noise ),
Resimulate
)
),
)
),
Expr( Dim A ), Parse( "Dim A<< Random( Normal( 1, 0.01 ) )" ),
Expr( Dim B ), Parse( "Dim B<< Random( Normal( 1, 0.01 ) )" ),
Expr( Dim C ), Parse( "Dim C<< Random( Normal( 1, 0.01 ) )" ),
Expr( Dim D ), Parse( "Dim D<< Random( Normal( 1, 0.01 ) )" ),
Expr( Dim E ), Parse( "Dim E<< Random( Normal( 1, 0.01 ) )" ),
Expr( Dim F ), Parse( "Dim F<< Random( Normal( 1, 0.01 ) )" ),
)
);Re : Facteurs dans le simulateur en utilisant des variables pour la simulation de Monte CarloMerci Ian !
C'est peut-être la méthode la plus prometteuse et la plus réalisable en ajoutant de nombreuses variables dans la liste des fonctions pour obtenir la simulation de Monte Carlo par des scripts basés sur la version actuelle de JMP.
Re : Facteurs dans le simulateur en utilisant des variables pour la simulation de Monte CarloOui, afficher le rapport deux fois était juste pour illustrer que la fonction fonctionne.
Vous pouvez simplement vous baser sur le modèle de codage ci-dessus ("SubstituteInto()" peut effectuer n'importe quel nombre de remplacements). L'analyse générée n'est pas significative, mais le code ci-dessous est un exemple. L'"expression de modèle" a été créée par JMP (avec quelques modifications ultérieures) :
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
// Define a JSL function
doSimulator =
function({x1Var, x2Var, yVar}, {Default Local},
// Template expression
myFit = Expr(
fm = dt << Fit Model(
Y( yTBD ),
Effects( x1TBD, x2TBD ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run(
Profiler(
1,
Simulator(
1,
Factors(
x1TBD << Random( Normal( 290, 50 ) ),
x2TBD << Random( Normal( 460, 50 ) )
),
Responses( yTBD << No Noise ),
Resimulate
)
)
)
)
);
// Bake in the variablee passed to the function
SubstituteInto(myFit,
Expr(x1TBD), NameExpr(x1Var),
Expr(x2TBD), NameExpr(x2Var),
Expr(yTBD), NameExpr(yVar)
);
// Do the fit
myFit;
// Return the reference to the fit Model object
fm;
);
// Try out the function . . .
f = doSimulator(Column(dt, "PNP1"), Column(dt, "PNP2"), Column(dt, "NPN1"));Re : Facteurs dans le simulateur en utilisant des variables pour la simulation de Monte CarloMerci beaucoup Ian!
Il semble que la fonction fonctionne. Cependant, avec les scripts en suivant vos conseils, plusieurs profileurs seront générés avec un seul facteur affiché dans chaque profileur. Je me demande comment afficher tous les facteurs dans un rapport Profiler. Avez-vous un commentaire? Appréciez-le.
Voici mes scripts révisés :
doSimulator=Function(
{xVar, MeanVar, SigmaVar}, {Default Local},
myFP=Expr(
myProfiler=dt<<PROFILER></PROFILER>Re : Facteurs dans le simulateur en utilisant des variables pour la simulation de Monte CarloPeut-être que ce code pourrait vous orienter dans la bonne direction :
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Define a JSL function
doSimulator =
function({xVar, yVar}, {Default Local},
// Template expression
myFit = Expr(
fm = dt << Fit Model(
Y( yTBD ),
Effects( xTBD ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run(
Profiler(
1,
Simulator(
1,
Factors( xTBD << Random( Normal( 80, 10 ) ) ),
Responses( yTBD << No Noise ),
Resimulate
)
)
)
)
);
// Bake in the variablee passed to the function
SubstituteInto(myFit, Expr(xTBD), NameExpr(xVar), Expr(yTBD), NameExpr(yVar));
// Do the fit
myFit;
// Return the reference to the fit Model object
fm;
);
// Try out the function . . .
fhw = doSimulator(Column(dt, "height"), Column(dt, "weight"));
fwh = doSimulator(Column(dt, "weight"), Column(dt, "height"));