<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto tentando di eseguire quanto segue con uno script JMP:
- Adatta le distribuzioni Weibull a due diverse colonne di dati continui (TBI e TTR) in una tabella (dt1) PER tutte le diverse combinazioni di due colonne categoriali nella stessa tabella (STNFAM e VIEW_STATE_ID)
- Estrai i parametri Alpha e Beta per tutte le distribuzioni risultanti e scrivili in una tabella. Anche stamparli nel registro in un formato analizzabile funzionerebbe
Ecco il prototipo attuale dello script che ha lo scopo di estrarre semplicemente i parametri di distribuzione per il primo nodo generato nel report:
******************************************Inizio dello script
DT1 = currentDataTable();
dist = DT1 <<
Distribuzione(
Per (:STNFAM, :VIEW_STATE_ID),
Distribuzione continua(
Colonna(:TBI_HRS),
Distribuzione adatta (Weibull con soglia)
),
Distribuzione continua(
Colonna(:TTR_HRS),
Distribuzione adatta (Weibull con soglia)
)
);
//test per verificare se dist è una piattaforma legittima che può essere manipolata successivamente nello script
mostra proprietà(dist);
rapportoDist = dist<
//test per verificare se reportDist è un report legittimo che può essere manipolato successivamente nello script
mostra proprietà(distreport);
//test per vedere se riesco a estrarre i parametri Alpha e Beta solo dal primo nodo in reportDist
alphaParam = reportDist[Riquadro contorno(1)][Riquadro tabella(3)][Riquadro numero colonne(1)] << Ottieni(1);
betaParam = reportDist[Riquadro contorno(1)][Riquadro tabella(3)][Riquadro numero colonne(1)] << Ottieni(2);
//stampa i parametri estratti nel log per vedere se corrispondono ai valori desiderati
stampa(alphaParam);
stampa(betaParam);
************************************************** ***************************Fine della sceneggiatura
Questo script funziona come previsto se dt1 contiene solo 1 combinazione di STNFAM e VIEW_STATE_ID. Le proprietà di "dist" e "reportDist" vengono visualizzate nel registro e anche i parametri Weibull vengono stampati nel registro come desiderato. Tuttavia, se in dt1 è presente più di una combinazione di STNFM e VIEW_STATE_ID, viene visualizzato il seguente errore e nel registro non viene visualizzata alcuna proprietà della piattaforma o del report:
************************************************** **************************Inizio del registro
/*:
//:*/
DT1 = currentDataTable();
dist = DT1 <<
Distribuzione(
Per (:STNFAM, :VIEW_STATE_ID),
Distribuzione continua(
Colonna(:TBI_HRS),
Distribuzione adatta (Weibull con soglia)
),
Distribuzione continua(
Colonna(:TTR_HRS),
Distribuzione adatta (Weibull con soglia)
)
);
//test per verificare se dist è una piattaforma legittima che può essere manipolata successivamente nello script
mostra proprietà(dist);
rapportoDist = dist<
//test per verificare se reportDist è un report legittimo che può essere manipolato successivamente nello script
mostra proprietà(distreport);
//test per vedere se riesco a estrarre i parametri Alpha e Beta solo dal primo nodo in reportDist
alphaParam = reportDist[Riquadro contorno(1)][Riquadro tabella(3)][Riquadro numero colonne(1)] << Ottieni(1);
betaParam = reportDist[Riquadro contorno(1)][Riquadro tabella(3)][Riquadro numero colonne(1)] << Ottieni(2);
//stampa i parametri estratti nel log per vedere se corrispondono ai valori desiderati
stampa(alphaParam);
stampa(betaParam);
/*:
carattere previsto arg 1 nell'accesso o nella valutazione di 'Outline Box', Outline Box( 1 )Problema di pedice nell'accesso o nella valutazione di 'Subscript', reportDist[Outline Box( 1 )]
Nello script seguente, errore contrassegnato da /*###*/
DT1 = Tabella dati corrente();
dist = DT1 << Distribuzione(
Per (:STNFAM, :VIEW_STATE_ID),
Distribuzione continua(
Colonna(:TBI_HRS),
Distribuzione adatta (Weibull con soglia)
),
Distribuzione continua(
Colonna(:TTR_HRS),
Distribuzione adatta (Weibull con soglia)
)
);
Mostra proprietà( dist );
rapportoDist = dist << rapporto;
Mostra proprietà(distreport);
alphaParam = reportDist[/*###*/Outline Box/*###*/(1)][Tabella Box( 3 )][
Numero Col Box( 1 )] << Get( 1 );
betaParam = reportDist[Casella di contorno( 1 )][Casella di tabella( 3 )][Casella di colonne numeriche( 1 )] <<
Ottieni(2);
Stampa(alphaParam);
Stampa(betaParam);
************************************************** ******************************************Fine del registro
JMP non sembra riconoscere "dist" e "reportDist" come piattaforma legittima e segnala quando è presente più di una combinazione generata dagli argomenti BY nella prima sezione del codice. Qualcuno può indicarmi la giusta direzione per ottenere il risultato desiderato?
Allegati:
- Subset_Weibull_Fit_Script.jsl (lo script mostrato nel messaggio sopra)
- 1_Combo_Subset di XSITE_Weibull_Fit_All_STNFAM_1-10-14.jmp (la tabella di test su cui lo script funziona come previsto)
- 2_Combo_Subset di XSITE_Weibull_Fit_All_STNFAM_1-10-14.jmp (la tabella di test su cui lo script non funziona come previsto)
Grazie,
Quando è presente più di una combinazione, dist e reportDist lo sono elenchi contenente tanti elementi quante sono le combinazioni. Puoi determinare se è così utilizzando la funzione Is List(). Se disponi di elenchi, puoi ottenere il numero di elementi utilizzando la funzione N Items() per determinare quanti elementi sono presenti in essi. È possibile inserire l'ulteriore elaborazione in un ciclo oppure potrebbe essere appropriato utilizzare il messaggio Crea tabella dati combinata o il messaggio Crea tabella dati per estrarre tutti i parametri.