Ho salvato i miei residui studentizzati e li ho raggruppati, ho eseguito uno screening dei valori anomali come di seguito:
Explore Outliers(
Y( Column Group( "Studentized Group" ) ),
Robust Fit Outliers( K Sigma( 2.5 ), Huber( 1 ) )
);
obj << Change to Missing(
Ora, se ci sono dati mancanti nelle colonne studentizzate, devo creare una nuova colonna da quella Y(variabile) utilizzando tutti i dati originali senza quella riga che è il valore anomalo trovato nel residuo studentizzato.
Non c'è solo una variabile, possono essercene molte. Quindi deve essere generale.
Immagino che probabilmente sia una formula/script che controlla la stringa dopo "Studentized resid" per trovare la stessa colonna che ha lo stesso nome e che creerà una nuova colonna con la quale verrà modificata quella mancante nella colonna/riga del residuo studentizzato.
Ciao @Bmllnn ,
La piattaforma consentirà di creare uno script in grado di generare una colonna "Culled" che rimuove i valori anomali in una nuova colonna formula.
Sto utilizzando il set di dati "Diamond" nella cartella dei dati di esempio come esempio, se eseguo la piattaforma Robust Fit Outlier, posso premere "Colonna formula" e verrà creata una nuova colonna in cui sono stati rimossi i valori anomali

Nel set di dati dei diamanti qui sotto puoi vedere che i valori sono stati rimossi:

Se vuoi scriverne uno script, puoi farlo in questo modo (ho aggiunto un'opzione di menu per selezionare la colonna per renderlo più flessibile):
dt=current data table();
cols=dt<<GET column="" names=""></GET>
<BR />
<BR />Ciao,
Grazie per la risposta. Quello che ho attualmente è questo:
obj << Studentized Residuals;
dt << Clear Selection;
colList = dt << Get Column Names( String );
For( i = 1, i <= N Cols( dt ), i++,
If( Contains( colList[i], "Studentized" ),
Column( colList[i] ) << Set Selected( 1 )
)
);
dt << group columns("Studentized Group");
// ANOTHER script
Names Default To Here(1);
dt=Current Data Table();
dt << Explore Outliers(
Y( Column Group("Studentized Group" ) ),
Robust Fit Outliers( K Sigma( 2.5 ), Huber( 1 ) ),
SendToReport(
Dispatch( {"Robust Fit Outliers"}, "", TabListBox, {Set Selected( 2 )} ),
Dispatch( {"Robust Fit Outliers"}, "", Tab Page Box( 2 ),
{Title( "Outliers by Cell" )}
),
Dispatch( {"Robust Fit Outliers"}, "", List Box( 9 ),
{Padding( {Left( 12 ), Top( 0 ), Right( 0 ), Bottom( 0 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", TextBox,
{Padding( {Left( 2 ), Top( 6 ), Right( 0 ), Bottom( 8 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Panel Box( 3 ),
{Padding( {Left( 0 ), Top( 0 ), Right( 12 ), Bottom( 0 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Lineup Box( 3 ), {Spacing( 1 )} ),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 11 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 12 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Lineup Box( 4 ), {Spacing( 1 )} ),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 13 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 14 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
)
)
);Tutto questo funziona. Poi da qui devo selezionare i valori anomali e fare la formula IF in una nuova colonna per il residuo studentizzato (come hai detto). Tuttavia, dopo devo creare una Nuova colonna per i parametri che sono stati trovati con il valore anomale per trasformarla in una colonna senza valori anomali nel set di dati reale.
@Bmllnn ,
Se ho capito bene, hai un gruppo di colonne che sono residui studentizzati di diversi modelli, vuoi eseguire i valori anomali del Robust Fit e quindi creare copie di ciascuna delle singole colonne studentizzate, ma con le righe dei valori anomali rimosse per ciascuna colonna?
In tal caso, ti basta cliccare sulla "Colonna formula" e verranno generate automaticamente le nuove colonne, oppure utilizzare il codice JSL come di seguito:
Names Default to Here(1);
dt=current data table();
colList = dt << Get Column Names( String );
For( i = 1, i <= N Cols( dt ), i++,
If( Contains( colList[i], "Studentized" ),
Column( colList[i] ) << Set Selected( 1 )
)
);
dt << group columns("Studentized Group");
//Run the outliers
obj=Explore Outliers(
Y( Column Group( "Studentized Group" ) ),
);
obj<< Robust Fit Outliers( K Sigma( 2.5 ), Huber( 1 ) );//run the robust fit
wait(2);//wait to allow time for platform to run and perform calculations
obj<< Formula Columns( Suffix( "Culled" ) );//Create each column from the original studentised, with outliers removed