Ri: Le funzioni statistiche (Col Mean per esempio) potrebbero avere bug sulla prima riga della tabella di dati quando si utilizza << Imposta ogni valore per sostituire i valori nella colonnaQuesto deve andare al supporto tecnico di JMP
Re: Funzioni statistiche (ad esempio Col Mean) probabilmente buggate sulla prima riga della tabella dati quando si utilizza << Imposta ogni valore per sostituire i valori nella colonnaDopo aver aggiunto ulteriore formattazione alla stampa del valore , l'aggregazione Col ... passa alla modalità molto lenta, già nota da qui:
Come-si-utilizza-la-formula-del-massimo-di-colonna-con-un-"dove"/mp/578576/highlight/true#M78599
newCol=New Column("new");
newCol << Set Each Value(Col Mean(write("-value, row # ",row(),"\!n");:Vals, write("groupby row # ",row()," ",newCol[row()],"\!n");:A));
Sembra che per ogni singola riga
- tutte le righe vengono valutate: prima il valore e poi l'argomento GroupBy
- quindi viene valutato (di nuovo) l'argomento GroupBy della riga specifica
e poi i valori corrispondenti vengono raccolti e aggregati.
Poi inizia con la riga successiva:
- tutte le righe vengono valutate (di nuovo): prima il valore e poi l'argomento GroupBy
- quindi viene valutato (di nuovo) l'argomento GroupBy della riga successiva
e così via....
Questo spiega perché l'esecuzione è proporzionale in modo quadratico alla lunghezza delle righe, [confronta Come-si-utilizza-la-formula-Col-Maximum.... ]
Divertente: le valutazioni aggiuntive sono diverse dalla luna - non ci sono se non guardi
Forse qualcuno di Jmp potrebbe fornire una visione più dettagliata...
stampa completa della versione lenta:
Vedi altro...-value, row # 1
groupby row # 1 .
-value, row # 2
groupby row # 2 .
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 1 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 .
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 2 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 3 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 4 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 5 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 6 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 2.5
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 7 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 2.5
-value, row # 7
groupby row # 7 2.5
-value, row # 8
groupby row # 8 .
groupby row # 8 .
Ri: Le funzioni statistiche (Col Mean per esempio) potrebbero avere bug sulla prima riga della tabella di dati quando si utilizza << Imposta ogni valore per sostituire i valori nella colonnaSono un po 'ansioso quando utilizzo la stessa colonna contemporaneamente come input e output di un calcolo.
Caso estremo: Se Col... L'aggregazione ha agito riga per riga come Lag(), l'output sarebbe come un bruco che si muove lungo le righe, riga per riga modificando l'output dell'aggregazione.
Per quanto riguarda la velocità, va bene così Col ... l'aggregazione lo fa molto meglio.
Per quanto riguarda la prevenzione del problema: idea intelligente di aggiungere una riga temporanea di riserva. In alternativa, si potrebbe usare una colonna temporanea per memorizzare i valori, giusto?
Per quanto riguarda: Perché?
[modificato dopo l'inserimento della versione lenta]
ehm...
L'aggiunta di una funzione di stampa all'argomento GroupBy aiuta a vedere cosa sta succedendo...
Infatti, il Valore E Raggruppa per le funzioni vengono valutate due volte.
Prima per ottenere i valori da confrontare con l'argomento GroupBy della riga 1, poi di nuovo dopo aver scritto il risultato nella riga 1.
newCol=New Column("new");
newCol << Set Each Value(Col Mean(Print(row());:Vals,<BR /> write("\!n groupby row # ",row()," ",newCol[row()],"\!n");:A));
una linea con solo un numero: quale valore la funzione è stata valutata?
una riga con raggruppa per riga # ... : Quale Raggruppa per funzione è stata valutata?
1
groupby row # 1 .
2
groupby row # 2 .
3
groupby row # 3 .
4
groupby row # 4 .
5
groupby row # 5 .
6
groupby row # 6 .
7
groupby row # 7 .
8
groupby row # 8 .
groupby row # 1 .
1
groupby row # 1 2.5
2
groupby row # 2 .
3
groupby row # 3 .
4
groupby row # 4 .
5
groupby row # 5 .
6
groupby row # 6 .
7
groupby row # 7 .
8
groupby row # 8 .
groupby row # 2 .
groupby row # 3 .
groupby row # 4 .
groupby row # 5 .
groupby row # 6 .
groupby row # 7 .
groupby row # 8 .
Ri: Le funzioni statistiche (Col Mean per esempio) potrebbero avere bug sulla prima riga della tabella di dati quando si utilizza << Imposta ogni valore per sostituire i valori nella colonnaHa (TS-00036082) e il supporto lo ha inoltrato allo sviluppo di JMP. Lo scopo di questo post era solo quello di renderlo un po' più visibile.
Modifica: poiché l'ho accettata come soluzione, aggiungerò una possibile soluzione alternativa che sembrava funzionare: aggiungi una riga extra al tuo datatable come prima riga, usa << imposta ogni valore per aggiornare i valori e quindi rimuovi quella riga vuota extra
// workaround
dt << Add Row(1, At Start);
Column(dt, "Column 1 1") << Set Each Value(Col Mean(:Column 1 1, :A));
dt << Delete Rows(1);
Il bug era presente per me per JMP16.2 e JMP17.0
Le funzioni statistiche (ad esempio Col Mean) potrebbero presentare bug nella prima riga della tabella dati quando si utilizza << Imposta ogni valore per sostituire i valori nella colonnaMentre cercavo di far funzionare la mia soluzione per Esiste un modo più veloce per fare un loop?, mi sono imbattuto in un problema per cui la prima riga dei miei dati non sembrava corretta (in effetti il problema riguardava l'intero primo gruppo).
Names Default To Here(1);
dt = New Table("Untitled 5",
Add Rows(8),
Compress File When Saved(1),
New Column("Vals", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 1 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("A", Character, "Nominal", Set Values({"A", "A", "A", "A", "B", "B", "B", "B"})),
New Column("B", Character, "Nominal", Formula(Col Mean(:Vals, :A)))
);
dt << New Column("Column 3", Numeric, Continuous, <<SET each="" value=""></SET>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/51122iF900862836EE33DB/jthi_1-1678901605470.png" role="button" title="jthi_1-1678901605470.png" alt="jthi_1-1678901605470.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>A me sembra che Col Mean venga calcolato per la prima riga e poi la media per il resto del gruppo <STRONG>uno</STRONG> venga calcolata usando questo valore già sostituito. C'è una soluzione alternativa in cui puoi aggiungere una riga vuota come prima nella tabella dati -> usa << imposta ogni valore -> rimuovi quella prima riga.</P>
<P> </P>
<P>Ho già aperto un ticket riguardante questo problema (TS-00036082) e il supporto JMP ha inviato un report di bug al team di sviluppo, ma volevo renderlo più visibile. Potrei dover controllare alcuni dei miei vecchi script per vedere se ci sono punti in cui uso << Set Each Value() per sostituire i valori esistenti (di solito lo uso durante la creazione di colonne) quando uso funzioni statistiche di colonna.</P><LINGO-LABS id="lingo-labs-613593" slang="en-US" mode="UPDATE"><LINGO-LABEL>Ingegneria della qualità e dei processi</LINGO-LABEL></LINGO-LABS>Re: Funzioni statistiche (ad esempio Col Mean) probabilmente buggate sulla prima riga della tabella dati quando si utilizza << Imposta ogni valore per sostituire i valori nella colonna
@hogi ha scritto:
Dopo aver aggiunto ulteriore formattazione alla stampa del valore , l'aggregazione Col ... passa alla modalità molto lenta, già nota da qui:
Come-si-utilizza-la-formula-del-massimo-di-colonna-con-un-"dove"/mp/578576/highlight/true#M78599
Ho appena verificato il comportamento con Jmp 17.2 e versioni successive (<=18.1.1). Il problema è scomparso:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Clear Select << Select Rows( Index( 5, 40 ) ) <<DELETE rows=""></DELETE>
gives:
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1734384257364.png" style="width: 174px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_0-1734384257364.png" style="width: 174px;"><img src="https://us.v-cdn.net/6038925/uploads/images/71281i524773A5E5A75986/hogi_0-1734384257364.png" width="174" height="408" role="button" title="hogi_0-1734384257364.png" alt="hogi_0-1734384257364.png" /></span></SPAN>
so, the value and GroupBy values are calculated for every row - then the GroupBy values are calculated again for every row.<BR />That's it.