J'ai actuellement un script qui génère une colonne aléatoire de X, calcule une colonne de Y en fonction des X, crée une colonne Y prédite, une colonne résiduelle (Y prédite - Y) et une colonne Y prédite. À partir de là, mon code sélectionne les lignes avec des résidus inférieurs à 3 et les supprime.
Je souhaite ensuite ajouter plus de lignes de points de données augmentés et refaire le cycle dans le but de réduire les résidus. Ci-dessous mon code:
// 1. Creates X1 column, and corresponding Y1 and Ystat columns
Close All( Data Tables, NoSave );
dt = New Table( "SampleRun 3",
Add Rows( 100 ),
New Script(
"Ystat vs. X1",
Graph Builder(
Variables( X( :X1 ), Y( :Ystat ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
)
),
New Column( "X1",
Formula( Random Integer( 50 ) )
),
New Column( "Y1",
Formula( If( :X1 < 25, 2 * :X1, 25 <= :X1 <= 30, 3 * :X1, 4 * :X1 ) )
),
New Column( "Ystat",
Formula( :Y1 )
)
);
// 2. Creates predicted Ystat column, saves formulas into same data table (first iteration)
PredictedYstat = dt << Neural(
Y( :Ystat ),
X( :X1 ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Fit( NTanH( 3 ) )
);
PredictedYStat << Save Profile Formulas;
// 3. Adds residual column
dt << New Column( "Residual 1", Formula( Abs( :Predicted Ystat - :Ystat ) ) );
Column( dt, "X1" ) << Suppress Formula Eval();
Column( dt, "Y1" ) << Suppress Formula Eval();
Column( dt, "Ystat" ) << Suppress Formula Eval();
dt << Select where( :Residual 1 <= 3 );
dt << delete rows;
// 4. Creates and predicts residual column
PredictedResidual = dt2 << Neural(
Y( :Residual 1 ),
X( :X1 ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Fit( NTanH( 3 ) )
);
PredictedResidual << Save Profile Formulas;
// 5. Adds new data points, cycle starts over from 2 (lets user choose how many)
// Iteration 2
DOE( Augment Design, X( :X1 ), Y( :Ystat ), {Make Design, Make Table} );
dt << add rows();
Mais le dernier morceau de code (où il est supposé ajouter des lignes) ne fait rien. Aucune suggestion?
Merci,
Kyle
Oui, c'était supposé être dt au lieu de dt2. Merci pour la correction. Si ajouter des lignes (); attend une valeur spécifiée, comment puis-je ajouter d'autres valeurs X à partir d'une conception augmentée à la fin du tableau de données "Exemple d'analyse 3" spécifié dans mon code? Désolé si cela est super facile, je suis très nouveau à JMP / JSL.
Merci
Je crois que c'est le moyen le plus simple de faire ce que vous voulez:
d = DOE( Augment Design, X( :X1 ), Y( :Ystat )/*, {Make Design, Make Table}*/ );
d << Make Design;
dt2 = d << Make Table;
dt << concatenate( dt2, Append to first table( 1 ) );
N'oubliez pas que JMP n'est ni Excel ni R. Dans JMP, il n'est souvent pas nécessaire d'écrire du code complexe pour que les choses se passent bien. Souvent, il est beaucoup plus facile d’utiliser une des plateformes JMP, comme "concaténer".