Passa elementi dalle statistiche calcolate a coordinate specifiche in una tabella di dati salvataGenero diversi grafici con statistiche calcolate. Vorrei trasmettere parametri statistici calcolati specifici, ad esempio il minimo, la mediana e il massimo da quantili e Std Dev da Statistiche riassuntive a coordinate specifiche in una tabella di dati salvata utilizzando JSL.
Ad esempio vorrei passare
- Quantile minimo alla riga 5, colonna 7
- mediana alla riga 5, colonna 8
- Quantile massimo alla riga 5, colonna 9
- Std Dev alla riga 5 colonna 10.
alla mia tabella dati salvata. Come ottenerlo usando JSL?
(le coordinate sono vuote nella tabella dei dati salvati per cominciare)
Tabella datiGraficaScriptingRe: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvatapenso sottoscrizione della tabella dati può aiutarti in questo
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvataCiao @Neo
vedi se riesci a estrarre quello che ti serve da questo script
Names Default To Here( 1 );
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 20 ),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
// Open Data Table: Big Class.jmp
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Launch platform: Distribution
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
// Extract min median max and SD
resultsdt[5, 7] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = output[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
quando si tratta di estrarre numeri dall'output bisogna stare attenti. I riferimenti corretti alle posizioni possono cambiare se l'output è diverso a causa delle preferenze o include solo più output in una finestra.
facci sapere se funziona.
ron
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvataGrazie @ron_horne . Penso che funzionerebbe. Tuttavia, prima di provare questo sul mio problema reale, ho una domanda. La "Tabella dei risultati" deve essere aperta prima che i valori possano essere trasferiti ad essa?
Nel mio caso, la "Tabella dei risultati" è un file salvato e non avevo intenzione di aprirlo a meno che non sia possibile passargli valori in altro modo.
(Dovrò cambiare il resto del mio codice se ho bisogno di avere la mia "Tabella dei risultati" aperta nell'istanza quando i valori vengono passati ad essa)
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvata
Ciao @Neo
Per quanto ne so, non c'è modo in JMP di impostare i dati in una cella di una tabella chiusa.
Se qualcun altro qui ne sa di più, ce lo faccia sapere.
forse puoi aprire un'altra tabella come intermediario per mantenere lì le informazioni mentre stai ancora raccogliendo e solo alla fine aprire la tabella dei risultati finali.
ron
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvata@ron_horne . Grazie. Mi ci è voluto del tempo per ricodificare in modo da poter avere La "Tabella dei risultati" aperta per i valori delle statistiche calcolate potrebbe essere trasferita ad essa.
Ho iniziato con il tuo suggerimento e ho dio una domanda. Perché questo non funziona?
distb = Distribution( Continuous Distribution( Column( :height ) ) ) ;
// Extract min median max and SD
resultsdt[5, 7] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = distb[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
e perché dovrebbe esserlo?
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
Ho più grafici di distribuzione a cui posso facilmente assegnare un nome come distb1, distb2,... ma se ne ho bisogno
output = Report( dist = dt << Distribution( ..... ) );
Dovrò verificare come questo influisce sul resto del mio codice.
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvataciao Neo,
il tuo riferimento a distb non funziona sine distb non è un livello di report di nulla. è il livello di analisi. In JMP c'è una differenza tra loro.
per estrarre qualsiasi cosa dall'output è necessario fare riferimento esplicitamente al livello del report.
guarda questo: https://community.jmp.com/t5/JSL-Cookbook/Extract-Statistics-from-an-Analysis-into-a-Report/ta-p/41547
se hai più output dovrai nominarli e definirli correttamente per essere sicuro di ottenere i valori a cui stai mirando.
facci sapere se funziona. in caso contrario, considera di fornire alcuni file e script dal punto in cui ti stanno dando problemi.
ti auguro il meglio,
ron
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvataGrazie @ron_horne . Provo a dare una panoramica di ciò che sto cercando di fare. Il mio script principale ha il seguente flusso (semplificato qui).
Apri una tabella di dati (e chiamala dt ), quindi tracciare i grafici di distribuzione per diverse colonne utilizzando una funzione
getDistribution ("ColName", "LSL", "USL", "other input parameters")
Ciascun grafico di distribuzione risultante ha "Quantile", "Statistiche di riepilogo" e "Analisi delle capacità (con schema chiuso)".
La parte successiva dello script principale è creare una tabella (chiamiamola risultati ) con diverse righe e colonne in cui devo passare i valori delle statistiche calcolate come indicato nel post originale.
Tuttavia, quanto segue non funziona.
output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 6 ), Number Col Box( 11)] << get( 1 ); // max
Mi sono assicurato che i numeri in Table Box () e Number Col Box () siano corretti. ottengo il seguente errore
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 6 ), Number Col Box( 11 )] << /*###*/get( 1 ) /*###*/
Dove sto sbagliando?
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvataCiao @Neo ,
se ho capito bene il tuo problema devi prestare attenzione alla numerazione e agli indirizzi. una volta utilizzati i nomi delle caselle di contorno, la numerazione di Table Box e Number Col Box inizia da 1.
Pertanto, prova quanto segue:
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
se vuoi usare Number Col Box (11) prova questo:
resultsdt[5, 9] = Output[Number Col Box( 11)] << get( 1 ); // max
spero che ora funzioni.
generalmente, ci sono modi molto più fantasiosi per far sì che lo script trovi la posizione dei valori di interesse usando xpath() o il pattern matching come in questo link: http://www.pega-analytics.co.uk/blog/oneway-advisor-step-3/
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvataGrazie ancora @ron_horne , ma entrambi non funzionano e mi dà lo stesso errore.
Stai dicendo che quanto segue è un uso corretto e valido? Nota che è non tramando la distribuzione se usata come sotto (a proposito non capisco la funzione di dist in dist=dt ?)
Output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
e l'errore (copiato dal log)
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , Output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[5, 9] = /*###*/Output[Outline Box( "Pass Distribution" ),
Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/
/*###*/
Sto ottenendo è dovuto alla mia seguente affermazione (anche quando il tuo suggerimento di seguito)
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
Se sì, vorrei fare un semplice test e passare qualcosa di più semplice a resultsdt. C'è un semplice test che posso fare per verificare se riesco a ottenere qualcosa da? Produzione alla tabella dati risultati ?
Re: Passare elementi da statistiche calcolate a coordinate specifiche in una tabella dati salvata@ron_horne . Quanto segue dovrebbe aiutare a chiarire un po' di più le cose in quanto è molto simile al mio problema reale. Ottengo il diagramma di distribuzione tramite una funzione.
Names Default To Here (1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = dt << getDistChart ("weight", 55, 185);
A me sembra che l'ultima riga non stia facendo ciò che dovrebbe fare per estrarre i valori dalla distribuzione poiché nessuna distribuzione viene tracciata in primo luogo. La domanda ora è come ottenere i valori delle statistiche calcolate quando la distribuzione viene tracciata tramite una funzione come la mia sopra. Forse una funzione non è un messaggio, quindi non può essere inviata a un oggetto usando <
Qualsiasi aiuto sarebbe molto utile poiché sto ancora imparando JMP.