Script per esportare AIC in una nuova tabella dati<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto confrontando i risultati AIC per più modelli nella piattaforma Fit Parametric Survival. A questo punto, ho uno script per eseguire tutti i modelli con la produzione di più finestre e copio/incollo l'AIC e gli altri output in un file Excel uno per uno. Inutile oggi, questo è un processo che richiede tempo e sprechi. Sono un principiante in JSL, qualcuno potrebbe aiutarmi a produrre un processo automatizzato per estrarre AIC e altre informazioni dalle finestre di report multiple e salvarle in un'unica finestra di dati? Le informazioni aggiuntive che sto valutando riguardano la convergenza dei parametri, le osservazioni utilizzate e il numero di valori censurati e non censurati.
Grazie per qualsiasi aiuto!
Utilizzo della macro VBA per importare dati in JMP e restituire i risultati JMP al foglio Excel su Weibull AnalysisCiao ragazzi,
Prima di tutto vorrei ringraziarti per aver condiviso i tuoi risultati sugli script e per avermi aiutato ad automatizzare il processo di query dei dati. Sto utilizzando VBA-Macro Excel per copiare la mia tabella in JMP per eseguire l'analisi Weibull e ottenere i valori di scala e forma e copiarli nel mio file Excel VBA -Macro. Di seguito è riportato il codice che ho utilizzato. Spero che possa essere utile anche per gli altri.
VBA-Macro Excel.
Sotto JMP()
App Dim Come JMP.Application
Dim doc Come JMP.Document
Imposta app = CreateObject("JMP.Application")
app.Visibile = Vero
Imposta doc = app.OpenDocument("C:\Users\ABC\Desktop\WS.jsl")
fine sub
Script JSL (salvati come formato WS.jsl)
//! <<>>.
dt = Apri( "C:\Users\ABC\Desktop\Book1.xlsm" ); <<< JSL aprirà il file Excel nella tabella dati JMP per eseguire l'analisi Weibull di seguito>>>
fm = Distribuzione della vita(
Y( :Nome( "TTF,Hr" ) ),
Censore( :Censore ),
Codice censura( 1 ),
Frequenza( :Frequenza ),
<
Metodo dell'intervallo di confidenza (probabilità),
<
<
Tipo di intervallo (simultaneo),
<
{Documento sulle probabilità( Profiler( 1, Intervalli di confidenza( 1 ), Valore termine( Nome( "TTF,Hr" )(4846.6174375, Blocca( 0 ), Mostra( 1 )) ) ) ),
Distribuzione Weibull( Profiler( 1, Intervalli di confidenza( 1 ), Valore termine( Nome( "TTF,Hr" )(4846.6, Blocca( 0 ), Mostra( 1 )) ) ) ),
Quantile di Weibull( Profiler( 1, Intervalli di confidenza( 1 ), Valore termine( Probabilità( 0.5, Blocca( 0 ), Mostra( 1 ) ) ) ) ),
Weibull Hazard( Profiler( 1, Intervalli di confidenza( 1 ), Valore termine( Nome( "TTF,Hr" )(4846.6, Blocca( 0 ), Mostra( 1 )) ) ) ),
Densità Weibull( Profiler( 1, Valore termine( Nome( "TTF,Hr" )(4846.6, Blocca( 0 ), Mostra( 1 )) ) ) ), Stima personalizzata( Weibull, 0 )}
),
Invia al rapporto (
Dispatch( {"Confronta distribuzioni"}, "Distribuzione vita", FrameBox, {Ordine riga griglia( 2 ), Ordine riga di riferimento( 3 )} ),
Dispatch( {"Statistiche", "Confronti modelli"}, "", TableBox, {Ordina per colonna( 2, 1 )} )
)
);
// Per copiare automaticamente i dati di stima parametrica in una nuova tabella di dati (ad esempio: formato senza titolo.jmp)
fmrep = fm << Rapporto;
fmrep[Outline Box("Stima parametrica?" )][Table Box( 1 )] << crea una tabella di dati combinata;
dt1 = Tabella dati corrente();
dt1 << Salva con nome( "c:\Users\ABC\Desktop\AAA.xlsx" ); // per salvare il file senza titolo.jmp come file Excel (in questo caso l'ho chiamato AAA.xlsx) nella posizione desktop.
Chiudi (dt, Nessun salvataggio);
Chiudi (dt1, nessun salvataggio);
Gli script di cui sopra funzionano perfettamente per me.
Ho solo pensato di contribuire a questa comunità con le mie recenti scoperte e apprendimenti.
Grazie!
Jim
Ri: Script per esportare AIC in una nuova tabella datiEUREKA!!! Grazie Jeff, Mark e Ian! Ragazzi, mi avete insegnato molto in breve tempo e mi avete dato la soluzione che mi farà risparmiare ore di clic, copia e incolla inutili!
Ora, se qualcuno di voi sa come aggiungere una colonna per il testo di avviso quando i modelli non convergono, sarebbe la ciliegina sulla torta. Ma sono felice di ciò che abbiamo realizzato!
Ri: Script per esportare AIC in una nuova tabella datiQuando si utilizza By() nell'avvio di una piattaforma, JMP restituirà un elenco delle piattaforme risultanti. Senza di essa, JMP restituirà una singola piattaforma, non un elenco.
Poiché gli esempi qui utilizzavano By(), era necessario indicizzarli nell'elenco delle piattaforme per fare riferimento a una piattaforma specifica per gruppo. Questo è il [1] in:
fmrep1[1][Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;Non stai utilizzando By() in nessuno dei lanci della tua piattaforma, quindi non hai bisogno di [1].
Per riunire tutte le tabelle in un'unica tabella dati, sarebbe più semplice iniziare con tutti i report in un'unica finestra.
Puoi farlo utilizzando New Window() per creare la tua finestra di report.
dt = Open( "$SAMPLE_DATA\Reliability\Tobit2.jmp" );
myWin = New Window( "My Window",
fm1 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm2 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm3 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
);
combined = myWin[Outline Box( "Parametric ?" )][Table Box( 1 )] << make combined data table;
Nota che non abbiamo bisogno di ottenere l'oggetto del report, poiché abbiamo un riferimento alla finestra del report, myWin , Già.
Per ottenere una tabella simile a quella mostrata nel tuo post originale dovrai dividere() la tabella che ottieni da Crea tabella dati combinata.
combined <<Split(
Split By( :Column 1 ),
Split( :Column 2 ),
Remaining Columns( Drop All )
);
So che vuoi anche una colonna per indicare quale modello rappresentano le righe. A seconda di come decidi quali modelli eseguire, potrebbe essere più semplice mantenere tu stesso l'elenco e aggiungere tu stesso una colonna alla tabella dati con tali informazioni.
Se non sai quali modelli hai specificato, è possibile estrarlo dai rapporti parametrici di sopravvivenza ma non è così facile.
-Jeff
Ri: Script per esportare AIC in una nuova tabella datiVa bene, quindi ci stiamo avvicinando. Anche se ho incollato la sceneggiatura sbagliata, Jeff mi ha dato la risposta giusta. Lo script seguente fornisce la tabella desiderata per i dati di esempio:
dt = Aprire ( "$SAMPLE_DATA/Affidabilità/Tobit2.jmp" ) ;
// Aggiunge una colonna 'by' casuale
diCol = dt << Nuova colonna ( "Di" , Numerico , Nominale , Formula ( Intero casuale ( 1 , 2 ))) ;
// Crea il rapporto invisibile
FM = dt << Modello adatto (
Y ( : YBasso , : YAlto ) ,
Effetti ( : età , : liquidità ) ,
Di ( : Di ) ,
Personalità ( Sopravvivenza parametrica ) ,
Distribuzione ( LogNormale ) ,
Correre ( Test del rapporto di verosimiglianza ( 1 ) ) ,
) ;
// Ottiene un riferimento al livello del report
fmrep = FM << Rapporto ;
fmrep [ 1 ][ Casella di contorno ( "Parametrico?" )][ TabellaBox ( 1 )] << creare una tabella dati combinata ;
Vicino ( dt , Nessun salvataggio ) ;
// Questo script funziona come dovrebbe!!
Ma perché è così quando lo rimuovo di Col = dt << Nuova colonna ( ...) E Di ( : Di ) , lo script non produce più una tabella?
E poiché il mio obiettivo è creare un'unica tabella dati combinata da più report, come faccio a far funzionare il seguente script di esempio:
dt = Aprire ( "$SAMPLE_DATA/Affidabilità/Tobit2.jmp" ) ;
// Crea il rapporto invisibile
FM1 = dt << Modello adatto (
Y ( : YBasso , : YAlto ) ,
Effetti ( : età , ) ,
Personalità ( Sopravvivenza parametrica ) ,
Distribuzione ( LogNormale ) ,
Correre ( Test del rapporto di verosimiglianza ( 1 ) ) ,
) ;
FM2 = dt << Modello adatto (
Y ( : YBasso , : YAlto ) ,
Effetti ( : liquidità ) ,
Personalità ( Sopravvivenza parametrica ) ,
Distribuzione ( LogNormale ) ,
Correre ( Test del rapporto di verosimiglianza ( 1 ) ) ,
) ;
FM3 = dt << Modello adatto (
Y ( : YBasso , : YAlto ) ,
Effetti ( : età , : liquidità ) ,
Personalità ( Sopravvivenza parametrica ) ,
Distribuzione ( LogNormale ) ,
Correre ( Test del rapporto di verosimiglianza ( 1 ) ) ,
) ;
// Ottiene un riferimento al livello del report
fmrep1 = FM1 << Rapporto ;
fmrep1 [ 1 ][ Casella di contorno ( "Parametrico?" )][ TabellaBox ( 1 )] << creare una tabella dati combinata ;
GRAZIE A TUTTI!!!
JP
Ri: Script per esportare AIC in una nuova tabella datiHai alcuni errori di iscrizione in questa riga:
fmrep[1]["Parameter Estimates"][TableBox(1)] << Make Combined Data Table;
Dovrebbe invece essere:
fmrep[Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;Potresti usare Outlinebox(1) o inserire il titolo completo ma il carattere jolly "?" lo rende un po' più generale.
-Jeff
Ri: Script per esportare AIC in una nuova tabella datiMark e Ian, grazie per il vostro tempo! Tuttavia non riesco ancora a capire bene, perché la mia versione dello script seguente non produce ancora una tabella. Ho provato a combinare i tuoi due esempi:
dt = Aprire ( "$SAMPLE_DATA/Classe grande.JMP" ) ;
biv = dt << Bivariato (
Y ( : altezza ) ,
X ( : peso ) ,
Linea adatta ,
Di ( : sesso )
) ;
fmrep = FM << Rapporto ;
fmrep [ 1 ][ "Stime dei parametri" ][ TabellaBox ( 1 )] << Crea tabella dati combinata ;
Qualche idea?
Grazie,
JP
Ri: Script per esportare AIC in una nuova tabella datiLaddove ho utilizzato "Stime parametriche" nel pedice per indirizzare una particolare casella di struttura, utilizzeresti invece "Parametric Survival Fit - Model 633 ".
Ri: Script per esportare AIC in una nuova tabella datiOps! Vedo che volevi un tavolo, non un diario. In tal caso "Crea tabella dati combinata" è probabilmente più diretto.
Ri: Script per esportare AIC in una nuova tabella datiBasandosi su ciò che Mark ha spiegato, ecco un modo:
dt = Aprire ( "$SAMPLE_DATA/Affidabilità/Tobit2.jmp" ) ;
// Aggiunge una colonna 'by' casuale
di Col = dt << Nuova colonna ( "Di" , Numerico , Nominale , Formula ( Intero casuale ( 1 , 2 ))) ;
// Crea il rapporto invisibile
FM = dt << Modello adatto (
Y ( : YBasso , : YAlto ) ,
Effetti ( : età , : liquidità ) ,
Di ( : Di ) ,
Personalità ( Sopravvivenza parametrica ) ,
Distribuzione ( LogNormale ) ,
Correre ( Test del rapporto di verosimiglianza ( 1 ) ) ,
Invisibile
) ;
// Ottiene un riferimento al livello del report
fmrep = FM << Rapporto ;
// Questo sarà un elenco, un elemento per gruppo 'per'
contornoTitolo = fmRep << Ottieni titolo ;
// Crea una casella di visualizzazione vuota
lub = LineUpBox ( NCol ( 1 )) ;
// Aggiungi il contenuto di cui abbiamo bisogno
Per ( o = 1 , o <= Articoli ( contornoTitolo ) , o ++,
lub << Aggiungere (
OutlineBox ( contornoTitolo [ o ] ,
( fmRep [ o ])[ TabellaBox ( 1 )] ;
) ;
) ;
) ;
Vicino ( dt , Nessun salvataggio ) ;
// Crea un diario
Nuova finestra ( "Rapporto" , << rivista , lub ) ;
L'unica difficoltà è sapere quali riquadri della tabella includere. Per capirlo, fai clic con il pulsante destro del mouse sul triangolo del nodo del contorno, quindi seleziona Modifica > Mostra struttura ad albero.
Ri: Script per esportare AIC in una nuova tabella datiGrazie per la tua rapida risposta, Marco!! È stato molto utile ed educativo, anche se all'inizio non ha prodotto la tabella dei dati finché non ho riscritto l'ultimo pezzo come
Rapporto ( biv [ 1 ] )[ "Stime dei parametri" ][ TabellaBox ( 1 )] << Crea tabella dati combinata ;
seguendo questo esempio: 46983 - Come creare una tabella dati combinata di statistiche di riepilogo da un report di distribuzione quando si utilizza una variabile Per .
Tuttavia, non riesco ancora a tradurlo nel mio flusso di lavoro, forse perché la tabella che desidero non ha titolo (ad esempio "Stime dei parametri"). Di seguito è riportato un esempio di un rapporto. La parte cerchiata è ciò che voglio trasformare in una tabella dati. Ho incluso un esempio dello script che sto utilizzando in fondo. La sfida è come aggiungere i dati cerchiati da circa 100 report generati contemporaneamente in un'unica tabella dati. Ho aggiunto uno screenshot del tavolo finale che sto cercando, che attualmente sto inserendo manualmente in Excel (che schifo). Avrei anche bisogno di un modo per aggiungere il modello # (ad esempio 633) a ciascuna riga.
Grazie ancora per il vostro aiuto!
JP


Ecco un esempio dello script che sto utilizzando:
Modello adatto (
Censurare ( : Disperso ) ,
Codice di censura ( "0" ) ,
Y ( : giorni alla dispersione ) ,
Effetti ( : Peso ,: Anno ,: Fonte ,: Traslocazione ,: Trattamento ,: Geologia ,: Luogo , ) ,
Personalità ( Sopravvivenza parametrica ) ,
Distribuzione ( Frechet ) ,
Correre ( Test del rapporto di verosimiglianza ( 1 ) ) ,
Invia a rapporto (
Spedizione (
{} ,
Adattamento parametrico di sopravvivenza ,
OutlineBox ,
{ Imposta titolo ( "Adattamento parametrico di sopravvivenza - Modello 632" )}
)
)
) ;
Modello adatto (
Censurare ( : Disperso ) ,
Codice di censura ( "0" ) ,
Y ( : giorni alla dispersione ) ,
Effetti ( : Peso ,: Anno ,: Fonte ,: Traslocazione ,: Trattamento ,: Geologia , ) ,
Personalità ( Sopravvivenza parametrica ) ,
Distribuzione ( Frechet ) ,
Correre ( Test del rapporto di verosimiglianza ( 1 ) ) ,
Invia a rapporto (
Spedizione (
{} ,
Adattamento parametrico di sopravvivenza ,
OutlineBox ,
{ Imposta titolo ( "Adattamento parametrico di sopravvivenza - Modello 633" )}
)
)
) ;
Ri: Script per esportare AIC in una nuova tabella datiPuoi produrre questo risultato in modo interattivo facendo clic con il pulsante destro del mouse sulla tabella con il valore AIC nel report e selezionando Crea tabella dati combinata.
L'equivalente script richiede l'invio di un messaggio con lo stesso nome del comando di menu all'oggetto casella di visualizzazione responsabile della presentazione del valore AIC nel report. Usa il seguente esempio per questa idea:
- apri la Grande Classe
- lanciare la piattaforma bivariata con altezza rispetto a peso e sesso come variabile di raggruppamento
- inserire una linea in entrambi i gruppi
- ottenere il riferimento al livello del report
- inserire ripetutamente l'albero di visualizzazione nel report al livello della prima tabella (ad esempio, stime dei parametri)
- inviare il messaggio
dt = Aprire ( "$SAMPLE_DATA/Classe grande.JMP" ) ;
biv = dt << Bivariato (
Y( : altezza ) ,
X( : peso ) ,
Linea adatta ,
Di( : sesso )
);
biv4 = biv << Rapporto ;
bivr[ 1 ][ "Stime dei parametri" ][ TabellaBox ( 1 )] << Crea tabella dati combinata ;