Y vs X o Parallel Plot o Something Else?Ho una serie di dati che ho problemi a visualizzare il modo in cui voglio.
Nella resa più semplice di questi dati, ho quattro colonne di dati:
- "Campione". Ho circa 1800 campioni nei dati attuali.
- "Sottocampione". Questi sono chiamati "2", "3" e "4". Ognuno dei miei 1800 campioni ha ciascuno di questi tre sottocampioni.
- "Posizione". Questi sono chiamati "A", "B" e "C", ma questi sono in realtà nomi dati a posizioni numeriche specifiche misurate in particolari posizioni nel sottocampione. Pensa al sottocampione come a un bastone lungo un pollice. La posizione "A" potrebbe essere 1/4-inch nel sottocampione, "B" potrebbe essere 1/2-inch nel sottocampione, e "C" potrebbe essere 3/4-inch nel sottocampione. Ho un certo interesse nell'interpolazione tra "A", "B" e "C", assumendo per ora una relazione quadratica e sapendo che questa è nella migliore delle ipotesi un'approssimazione.
- "Dati". La misurazione effettiva eseguita nella posizione all'interno del sottocampione all'interno del campione.
Ho creato un semplice Graph Builder tracciando Data vs. Posizione, con il gruppo Y contro il sottocampione e sovrapposizione del campione. La trama (presa su un sottoinsieme MUCH più piccolo della variabile Sample) assomiglia a qualcosa del genere:

Mi vengono in mente anche grafici paralleli, e con una semplice chiamata alla piattaforma Split e un po 'di sforzo nel Graph Builder, posso inventare questo:
Per i curiosi, la JSL per ottenere questa trama sembra qualcosa del genere:
Graph Builder(
Variables(
X( :C 2 ), X( :B 2, Position( 1 ) ), X( :A 2, Position( 1 ) ),
X( :C 3 ), X( :B 3, Position( 2 ) ), X( :A 3, Position( 2 ) ),
X( :C 4 ), X( :B 4, Position( 3 ) ), X( :A 4, Position( 3 ) )
),
Elements( Position( 1, 1 ), Parallel( X( 1 ), X( 2 ), X( 3 ), Legend( 8 ), Curve Lines( 1 ) ) ),
Elements( Position( 2, 1 ), Parallel( X( 1 ), X( 2 ), X( 3 ), Legend( 7 ), Curve Lines( 1 ) ) ),
Elements( Position( 3, 1 ), Parallel( X( 1 ), X( 2 ), X( 3 ), Legend( 6 ), Curve Lines( 1 ) ) )
);
Ma in realtà nessuna delle due trame ha tutte le caratteristiche che voglio.
- Il grafico parallelo espone i grafici fianco a fianco (come se stessi usando il Gruppo X). Come mostrato in precedenza, voglio davvero che il sottocampione sia disposto verticalmente con un comportamento simile a quello del gruppo Y.
- Dato che la mia posizione (A, B, C) rappresenta una dimensione numerica sottostante, mi piacerebbe assumere un modello quadratico (per ora) e interpolare in varie posizioni tra A e C. La Y vs. L'approccio X che usa un elemento Smoother in Graph Builder, lo fa bene. Il grafico parallelo insiste nel rendere la curva più simile a una funzione logisitica tra ciascun asse parallelo.
- Voglio un colore costante per tutti i campioni nel grafico. Mentre è relativamente facile fare doppio clic sulla legenda e impostare il colore nella Y vs. X approccio, è un po 'noioso e non generalizza bene se voglio farlo in JSL. (Essenzialmente devo eseguire un ciclo e inserire la proprietà color per ogni campione nell'espressione Graph Builder.)
- Vorrei aggiungere una linea di predizione media (linea nera solida e più spessa). Nessuno dei due metodi sembra avere questa capacità. Non so nemmeno dove iniziare con Parallel. Per Y vs. X ho pensato semplicemente a trascinare di nuovo la colonna Dati sull'asse Y, ma il problema è che entrambe le versioni di Data vogliono rispettare la proprietà Overlay. Non riesco a capire come far funzionare l'Overlay su una delle viste e non sull'altra.
- Idealmente, mi piacerebbe essere in grado di selezionare un campione e di evidenziare tutti e tre i sottocampioni nella trama, qualcosa del genere:

Funziona nella vista parallela, ma nella Y vs. Vista X ogni campione è rappresentato con 9 righe di dati (3 sottocampioni * 3 posizioni). Facendo clic su una delle righe di quel grafico, JMP evidenzierà le 3 posizioni, ma JMP non ha idea che io voglia evidenziare gli altri due sottocampioni perché il Gruppo Y è visto come il mio identificatore di esempio. Questo è probabilmente il criterio più difficile da accettare per scrivere. - Francamente penso che ci possano essere ulteriori domande sulla variabilità delle misurazioni e sull'identificazione di campioni periferici, o anche sottocampioni esterne in un campione? Non sono sicuro che entrambi questi approcci mi portino lì.
So che JMP 14 avrà un Functional Data Explorer ma non sono sicuro che funzionerà con la struttura nidificata che ho qui, e anche il fatto che ci sono solo tre misurazioni per sottocampione ...
Quali altre opzioni dovrei guardare?
Ri: Y vs X, o Parallel Plot o Something Else?Stiamo cercando di andare in questa direzione. È ancora piuttosto difficile capire veramente cosa sta succedendo da campione a campione in questo modo (cioè, dove il campione 1 si adatta in realtà al campione 2 rispetto al campione 3?).
C'è anche qualche incomprensione nel modo in cui i miei dati sono organizzati, quindi ho modificato anche la tabella dei dati falsa.
Vedi la tabella dei dati falsi e la mia attuale analisi del Profiler qui. È un inizio, comunque.
New Table( "mock data",
Add Rows( 1800 * 9 ),
New Column( "sample", Numeric, "Nominal", Format( "Best", 12 ), Formula( Sequence( 1, 1801, 1, 9 ) ) ),
New Column( "subsample", Numeric, "Nominal", Format( "Best", 12 ), Formula( Sequence( 1, 3, 1, 3 ) ) ),
New Column( "location", Numeric, "Continuous", Format( "Best", 12 ), Formula( Sequence( 1, 3 ) ) ),
New Column( "Data", Numeric, "Continuous", Format( "Best", 12 ), Formula( Abs( Random Normal() * :location ^ 2 ) ) )
);
Fit Model(
Y( :Data ),
Effects( :subsample, :location, :subsample * :location, :location * :location, :subsample * :location * :location ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler( 1 ),
:Data << {Effect Summary( 0 ), Summary of Fit( 0 ), Analysis of Variance( 0 ), Parameter Estimates( 0 ),
Effect Tests( 0 ), Effect Details( 0 ), Lack of Fit( 0 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 0 ), Box Cox Y Transformation( 0 )},
Automatic Recalc( 1 )
),
Local Data Filter(
Add Filter( columns( :sample ), Where( :sample == 1 ), Display( :sample, Size( 224, 315 ), List Display ) )
)
);Ri: Y vs X, o Parallel Plot o Something Else?Quindi questo è un approccio abbastanza diverso.
la prima cosa è cambiare la tua posizione da una lettera al valore reale che rappresenta.
Ora prova a utilizzare il modello in forma. I dati sono il tuo Y e il tuo X'x sono questi effetti.
Prima di premere run, se la posizione B non è nel mezzo di A e C, quindi disattivare "polinomiali centrali" dal menu triange rosso
|
effetti
|
|
posizione * sottocampione
|
|
posizione * posizione
|
|
Posizione
|
|
sottocampione
|
Questo insieme di termini ti darà la quadratica per la posizione (assicurati che la posizione sia numerica continua, non una lettera) quindi gli effetti principali per la posizione e il sottocampione più l'interazione ti permetteranno di avere una pendenza indipendente e di intercettare per ogni livello di sottocampione.
Questa è la figura del profiler. (Ho preso in giro 1800 campioni, da tre posizioni, ogni serie di tre sono un sottocampione)
Profiler di previsione

Pertanto, è possibile interpolare dal grafico, ma se si salva la formula di previsione nella tabella dati, è possibile interpolare altre posizioni. Controlla la formula. È una specie di monostore perché contiene coefficienti per ciascuno dei sottocampioni.
//Mock Data Table
New Table( "mock data",
Add Rows( 1800 ),
New Column( "sample", Numeric, "Nominal", Format( "Best", 12 ), Formula( Sequence( 1, 1801 ) ) ),
New Column( "subsample", Numeric, "Nominal", Format( "Best", 12 ), Formula( Sequence( 1, 601, 1, 3 ) ) ),
New Column( "location", Numeric, "Continuous", Format( "Best", 12 ), Formula( Sequence( 1, 3 ) ) ),
New Column( "Data",Numeric,"Continuous",Format( "Best", 12 ),Formula( Abs( Random Normal() * :location ^ 2 ) )
)
);