Ciao comunità JMP,
Attualmente sto cercando di scrivere uno script che apre una tabella di dati esistente che contiene una colonna "X1" e una colonna "Y1" con 10 righe. Lo script prevede quindi Y1 in una nuova colonna, crea una colonna residua (Previsto Y1 - Y1) e quindi crea una colonna residua prevista. Da lì, voglio che lo script aggiunga una certa quantità di valori "inventati" X1 / Y1 alla tabella di dati esistente, nella speranza di automatizzare il processo. Il seguente codice è ciò che ritengo responsabile dell'aggiunta dei punti dati alla tabella dei dati. Il problema è che il seguente script non aggiunge un elenco accurato di valori X1 (i valori X1 sono semplicemente tutti i numeri interi compresi tra 1-10 e quando eseguo il codice seguente di solito ottengo solo numeri interi 1 e 10).
d = DOE (Augment Design, X (: X1), Y (: Y1) / *, {Crea design, Crea tabella} * /);
d << Crea design;
dt3 = d << Crea tabella;
dt2 << concatenate (dt3, Aggiungi alla prima tabella (1));
Ecco il mio intero script se aiuta:
// 1. Crea la colonna X1 e Y1 corrispondente
Chiudi tutto (tabelle dati, nessun salvataggio);
sourceDT = Open ("SH2.jmp");
dt2 = sourceDT << Sottoinsieme (Columns (), Rows (), Nome tabella output ("Fixed.jmp"));
// 2. Crea la colonna Ystat prevista, salva le formule nella stessa tabella di dati (prima iterazione)
PredictedY1 = dt2 << Neural (
Y (: Y1),
X (: X1),
Informativo mancante (0),
Metodo di convalida ("Holdback", 0.3333),
Adatta (NTanH (3))
);
PredictedY1 << Salva formule profilo;
// 3. Aggiunge la colonna residua
dt2 << Nuova colonna ("Residual 1", Formula (Abs (: PredictedY1 -: Y1)));
// 4. Crea e prevede la colonna residua
PredictedResidual1 = dt2 << Neural (
Y (: residuo 1),
X (: X1),
Informativo mancante (0),
Metodo di convalida ("Holdback", 0.3333),
Adatta (NTanH (3))
);
PredictedResidual1 << Salva formule profilo;
// Iterazione 2
d = DOE (Augment Design, X (: X1), Y (: Y1) / *, {Crea design, Crea tabella} * /);
d << Crea design;
dt3 = d << Crea tabella;
dt2 << concatenate (dt3, Aggiungi alla prima tabella (1));
PredictedY2 = dt2 << Neural (
Y (: Y1),
X (: X1),
Informativo mancante (0),
Metodo di convalida ("Holdback", 0.3333),
Adatta (NTanH (3))
);
PredictedY2 << Salva formule profilo;
// 3. Aggiunge la colonna residua
dt2 << Nuova colonna ("Residual 2", Formula (Abs (: PredictedY1 2 -: Y1)));
// 4. Crea e prevede la colonna residua
PredictedResidual2 = dt2 << Neural (
Y (: residuo 2),
X (: X1),
Informativo mancante (0),
Metodo di convalida ("Holdback", 0.3333),
Adatta (NTanH (3))
);
PredictedResidual2 << Salva formule profilo;
Colonna (dt2, "X1") << Sopprimi Formula Eval ();
Colonna (dt2, "Y1") << Sopprimi Formula Eval ();
dt2 << Seleziona dove (: Residuo 1 <= 3);
dt2 << elimina righe;
Grazie,
Kyle
Non sono sicuro di cosa tu voglia. La mia interpretazione è che si desidera aggiungere nuove righe alle righe precedenti. Augment Design crea nuovi trattamenti e il messaggio Crea tabella genererà la nuova tabella combinata. Crea le nuove righe ottimali per il modello specificato e le righe indicate.
Penso che tu voglia creare una seconda tabella di dati con i livelli che decidi e concatenarli alle righe esistenti. In alternativa, è possibile inviare iterativamente il messaggio << Aggiungi righe () alla prima tabella di dati per aggiungere i nuovi livelli.
Mi scuso per qualsiasi confusione. Hai ragione che voglio creare una seconda tabella di dati con i livelli da me determinati e concatenarli alle righe esistenti. Il problema è che la seconda tabella di dati crea una tabella con valori esplicitamente 1 o 10. Voglio che la seconda tabella di dati abbia valori distribuiti casualmente tra 1 e 10 (che è l'intervallo di valori della tabella di dati originale). Augment Design potrebbe non essere il modo migliore per farlo, ma sono molto nuovo su JSL, quindi non sono sicuro di come procedere
Grazie
È ancora possibile utilizzare uno dei due metodi che ho suggerito: creare una seconda tabella di dati e concatenarla o aggiungere direttamente righe alla tabella di dati originale.
Schizzo di idea:
dt2 = New Table( "Augmentation Runs",<BR />Add Rows( 10 ),<BR />New Column( "X1", Numeric, Continuous, Values( J( 10, 1, Random Uniform() ) )<BR />);<BR /><BR />dt << Concatenate( dt2 );
In alternativa:
For( I = 1, I < 11, I++,
dt << Add Rows( { X1 = Random Uniform() } );
);