Y vs. X oder Parallele Darstellung oder etwas anderes?Ich habe eine Reihe von Daten, bei denen ich Schwierigkeiten habe, meine Wünsche zu visualisieren.
In der einfachsten Wiedergabe dieser Daten habe ich vier Datenspalten:
- "Probe". Ich habe ungefähr 1800 Proben in den vorliegenden Daten.
- "Subsample". Diese werden als "2", "3" und "4" bezeichnet. Jedes meiner 1800 Samples hat jedes dieser drei Subsamples.
- "Position". Diese werden "A", "B" und "C" genannt, aber eigentlich handelt es sich um Namen, die bestimmten numerischen Positionen zugeordnet werden, die an bestimmten Stellen der Unterprobe gemessen werden. Stellen Sie sich das Subsample als einen Zoll vor, der einen Zoll lang ist. Die Position "A" liegt möglicherweise 1/4 Zoll in der Unterprobe, "B" könnte 1/2 Zoll in der Unterprobe sein und "C" könnte 3/4 Zoll in der Unterprobe sein. Ich habe ein gewisses Interesse daran, zwischen "A", "B" und "C" zu interpolieren, da ich zunächst eine quadratische Beziehung annehme und weiß, dass dies bestenfalls eine Annäherung ist.
- "Daten". Die tatsächliche Messung an der Position innerhalb der Unterprobe innerhalb der Probe.
Ich habe einen einfachen Graph Builder erstellt, indem ich Data vs. Position, mit Gruppe Y gegen das Subsample und Überlagern des Samples. Der Plot (der eine viel kleinere Teilmenge der Sample-Variablen enthält) sieht in etwa so aus:

Parallele Darstellungen fallen mir ebenfalls in den Sinn, und mit einem einfachen Aufruf der Split-Plattform und ein wenig Aufwand im Graph Builder kann ich Folgendes feststellen:
Für den Neugierigen sieht die JSL, um diese Handlung zu erhalten, ungefähr so aus:
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 ) ) )
);
Aber eigentlich hat keine Handlung alle Funktionen, die ich will.
- In der parallelen Darstellung werden die Grafiken nebeneinander angeordnet (als ob ich die Gruppe X verwendet hätte). Wie zuvor gezeigt, möchte ich wirklich, dass das Subsample vertikal mit einem Verhalten der Gruppe Y angeordnet ist.
- Da meine Position (A, B, C) eine zugrunde liegende numerische Dimension darstellt, möchte ich (für jetzt) ein quadratisches Modell annehmen und an verschiedenen Positionen zwischen A und C interpolieren. Das Y vs. Der X-Ansatz, der ein Smoother-Element im Graph Builder verwendet, funktioniert dies gut. Das Parallel-Diagramm besteht darauf, die Kurve mehr wie eine logisitische Funktion zwischen jeder Parallelachse darzustellen.
- Ich möchte eine konstante Farbe für alle Proben in der Grafik. Es ist zwar relativ einfach, auf die Legende zu doppelklicken und die Farbe im Y-Format festzulegen. X Ansatz, es ist ein bisschen langweilig und verallgemeinert nicht gut, wenn ich es in JSL machen möchte. (Im Wesentlichen muss ich eine Schleife ausführen und die Farbeigenschaft für jedes Beispiel in den Graph Builder-Ausdruck einfügen.)
- Ich möchte eine mittlere Vorhersagelinie hinzufügen (durchgehende, dickere schwarze Linie). Keine dieser Methoden scheint diese Fähigkeit zu haben. Ich weiß nicht mal, wo ich mit Parallel anfangen würde. Für Y vs. XI dachte daran, die Datenspalte einfach wieder in die Y-Achse zu ziehen, aber das Problem ist, dass beide Versionen von Data die Overlay-Eigenschaft respektieren möchten. Ich kann nicht herausfinden, wie die Überlagerung für eine der Ansichten und nicht für die andere funktioniert.
- Im Idealfall würde ich gerne ein Sample auswählen und alle drei Subsamples in der Zeichnung hervorheben, etwa wie folgt:

Dies funktioniert in der parallelen Ansicht, aber in der Y vs. X-Ansicht Jedes Sample wird mit 9 Datenzeilen dargestellt (3 Unterproben * 3 Positionen). Wenn Sie auf eine der Zeilen in diesem Diagramm klicken, wird JMP über die drei Positionen hervorgehoben. JMP weiß jedoch nicht, dass ich möchte, dass die anderen beiden Subsamples hervorgehoben werden, da Gruppe Y als meine Sample-ID angesehen wird. Dies ist wahrscheinlich das schwierigste Kriterium, das ich schriftlich formulieren kann. - Ehrlich gesagt, denke ich, gibt es zusätzliche Fragen bezüglich der Variabilität der Messungen und der Identifizierung von abgelegenen Proben oder sogar von untergeordneten Proben innerhalb einer Probe? Ich bin mir nicht sicher, ob einer dieser Ansätze mich dahin bringt.
Ich weiß, dass JMP 14 einen Functional Data Explorer haben wird, aber ich bin nicht sicher, ob es mit der geschachtelten Struktur, die ich hier habe, funktionieren wird, und auch der Tatsache, dass es nur drei Messungen pro Untersample gibt.
Welche anderen Optionen sollte ich prüfen?
Re: Y vs X oder Parallele Darstellung oder etwas anderes?Wir schauen in diese Richtung. Es ist immer noch etwas schwierig zu verstehen, was auf diese Weise von Probe zu Probe geschieht (dh wo passt Probe 1 wirklich relativ zu Probe 2 relativ zu Probe 3?).
Es gibt einige Missverständnisse darüber, wie meine Daten organisiert sind. Deshalb habe ich auch die Mock-Datentabelle geändert.
Hier finden Sie die Modelldatentabelle und meine aktuelle Profiler-Analyse. Es ist sowieso ein Anfang.
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 ) )
)
);Re: Y vs X oder Parallele Darstellung oder etwas anderes?Das ist also ein ganz anderer Ansatz.
Zunächst müssen Sie Ihren Standort von einem Buchstaben in den tatsächlichen Wert ändern, den er darstellt.
Versuchen Sie jetzt, das Fit-Modell zu verwenden. Daten sind dein Y und dein X'x sind diese Effekte.
Wenn Sie auf Run klicken, wenn sich die B-Position nicht in der Mitte von A und C befindet, deaktivieren Sie "Polynome zentrieren" im roten Dreieck-Menü
|
Auswirkungen
|
|
location * subsample
|
|
location * location
|
|
Standort
|
|
Unterprobe
|
Dieser Satz von Begriffen gibt Ihnen die quadratische Position für die Position (stellen Sie sicher, dass die Position durchgehend numerisch ist und nicht durch einen Buchstaben). Die Haupteffekte für Position und Subsample sowie die Interaktion lassen Sie für jede Ebene der Subsamples eine unabhängige Steigung und einen Intercept haben.
Dies ist die Profilerfigur. (Ich habe 1800 Samples aus drei Orten verspottet, jeder Satz von drei ist ein Subsample)
Vorhersage-Profiler

Sie können also aus dem Graphen interpolieren. Wenn Sie jedoch die Vorhersageformel in der Datentabelle speichern, können Sie andere Entscheidungen treffen. Überprüfen Sie die Formel. Diese Art von Monstoren, weil sie Koeffizienten für jedes der Unterproben enthält.
//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 ) )
)
);