<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Kann mir jemand sagen, ob Jittering anpassbar ist? wie mache ich es?Danke
Wenn Sie Graph Builder verwenden, ist es möglicherweise nicht erforderlich, die Datentabelle zu ändern. In JMP 11 ist es möglich, lokale benutzerdefinierte Transformationen direkt im Control Panel von Graph Builder hinzuzufügen.
Um X zu jittern, klicken Sie einfach mit der rechten Maustaste auf die Variable und wählen Sie sie aus Formel... , geben Sie eine entsprechende Transformation ein und klicken Sie auf „Anwenden“ oder „OK“, um die lokale Variable zu erstellen (dh sie kann als normale Variable im Graph Builder verwendet werden, wird aber nicht zur Datentabelle hinzugefügt). Ziehen Sie beide X in das X-Achsen-Feld und wählen Sie Punkte für die Jitter-Transformation und die Anpassungslinie für das ursprüngliche X aus.
Hier ist die JSL-Version, die auf die Beispieltabelle von KarenB angewendet wird:
Graph Builder (
Variablen (
X ( : X ) ,
X (
Spalte transformieren (
„Gezittertes X“ ,
Formel ( : X + Zufällig normal () * Col Std Dev ( : X ) / 20 )
) ,
Position ( 1 )
) ,
Y ( : Y )
) ,
Elemente (
Passformlinie (
X ( 1 ) ,
Y ,
Legende ( 5 ) ,
Vertrauen in die Passform ( 1 ) ,
Grad ( "Linear" ) ,
) ,
Punkte ( X ( 2 ) , Y , Legende ( 6 ) )
)
)
Ich habe es wie folgt zum Laufen gebracht.
Problem: X und Y im Originaldatensatz weisen eine starke Diskretisierung auf, sodass es verdeckte Punkte gibt.
Ziel: Die Daten mit Jitter in X und Y anzeigen, aber die Linienanpassung an den Originaldaten durchführen
Beispiel: Der ursprüngliche Datensatz hat N=6. Beachten Sie die sich wiederholenden Werte von X und Y
Y X
50 1
80 2
80 2
90 2
150 8
150 8
Verfahren
1. Verdoppeln Sie die Anzahl der Zeilen und fügen Sie am Ende des Datensatzes neue Zeilen hinzu, deren Anzahl der Anzahl der Zeilen im ursprünglichen Datensatz entspricht. Fügen Sie in diesem Fall 6 Zeilen hinzu.
2. Erstellen Sie neue X'- und Y'-Spalten mit den unten gezeigten Formeln, um die ursprünglichen Daten zu wiederholen, aber auch zusätzliche Zeilen zu haben, die durch einen zufälligen Jitter vom ursprünglichen X abweichen, indem Sie 1/20 (oder einen anderen Bruchteil) der SD von verwenden die verschiedenen Datenpunkte.Erstellen Sie eine neue Gruppenspalte, um anzugeben, ob X' und Y' Original- oder Jitter-Ergebnisse enthalten.(Anstatt den 1/20-Jitter-Multiplikator in den Formeln zu erfassen, könnten Sie auch eine Tabellenvariable erstellen, damit es einfacher ist, den Multiplikator im laufenden Betrieb zu ändern.)
Y X Gruppe X' Y'
50 1 Original 1 50
80 2 Original 2 80
80 2 Original 2 80
90 2 Original 2 90
150 8 Original 8 150
150 8 Original 8 150
nervös 0,8675 47,178279975
nervös 2.0640 79.698789972
nervös 2.0296 79.164367702
nervös 2,0775 92,320672901
nervös 7,9297 150,14705263
nervös 7.7895 151.34309192
3. Blenden Sie die ersten 6 Zeilen aus, in denen X nicht leer ist (ich weiß nicht, wie das mit einer Formel geht).Schließen Sie die zweiten 6 Zeilen aus, in denen X leer ist (gleicher Kommentar).
4. Zeichnen Sie Y' durch X' und passen Sie eine Linie an. Aktivieren Sie die automatische Neuberechnung, damit Sie mit den Formeln herumspielen und die Auswirkung auf die Zeile sehen können. Voilà, Sie sehen nur die gejitterten Daten, aber die Linienanpassung basiert nur auf den nicht gejitterten Daten.
Anscheinend könnten Sie dies per Skript ausführen und dem Benutzer eine dynamische Kontrolle über das Zittern geben:
Das Skript könnte den ursprünglichen Datensatz nehmen und ihn in eine neue temporäre Tabelle kopieren, die Funktion ausführen, die ich manuell für die Tabelle ausgeführt habe (die Zeilen verdoppeln, X' und Y' hinzufügen, das Ausblenden und Ausschließen durchführen), eine Zeile anpassen und geben Der Benutzer bietet eine Möglichkeit, den in der Jitter-Breite verwendeten Multiplikator zu steuern (ich habe 1/20 des ursprünglichen StdDev als neuen Jitter-StdDev verwendet), indem er einen Schieberegler verwendet, der sich unter dem Diagramm befindet und eine Konstante steuert, die im temporären Tabellendatensatz verwendet wird.
Verwendete Formeln:
Group = If( Is Missing( :X ), „jittered“, „original“)
X' = If( Is Missing( :X ), :X[Row() - Col Number( :X ), Empty()] + Random Normal() * (Col Std Dev( :X ) / 20), :X )
Y' = If( Is Missing( :Y ), :Y[Row() - Col Number( :Y ), Empty()] + Random Normal() * (Col Std Dev( :Y ) / 20), :Y )
Ich verwende bereits die erste Lösung gegen Jitter, würde aber eine einfachere Lösung bevorzugen. Und für die Sonnenblumen gibt es eine Lösung für SAS/Graph in Michael Friendlys SAS-System für statistische Grafiken, das ich seit 1992 verwende.
Für die Überlagerung von gejitterten Punkten und einer Regressions- oder Lösslinie gibt es nur für die Y-Achse eine einfachere Möglichkeit: Platzieren Sie die unjitterten und gejitterten y-Variablen auf der Y-Achse, senden Sie die unjitterten an die rechte Y-Achse und modifizieren Sie dann die Linie für die linke Variable und die Punkte für die rechte. Aber ich habe noch keine einfache Lösung für die X-Achse gefunden.
Trotzdem danke.
Für Streudiagramme können Sie eine Formelspalte mit einer gejitterten Version der tatsächlichen Variablen erstellen.Im Allgemeinen addiere ich ein Vielfaches einer zufälligen Uniform und probiere verschiedene Multiplikatoren aus, bis ich einen finde, der gut aussieht.
Jedoch , man kann dann keine Regressionslinien durch die gejitterten Daten ziehen.Zu diesem Zweck könnte man möglicherweise zwei separate Diagramme erstellen, eines mit den Regressionslinien und verborgenen Daten und eines mit den gejitterten Daten.Ich weiß nicht, ob Sie sie in JMP überlagern könnten, aber Sie könnten es sehr vorsichtig Überlagern Sie sie in etwas wie PowerPoint.Vielleicht kann jemand einen einfacheren Weg vorschlagen.
Hallo,
Dies ist keine Antwort, sondern eine andere Frage: Warum ist es im Graph Builder möglich, eine Form von Jitter für Punktdiagramme (nur eine halbkontinuierliche Variable) zu definieren und nicht (zumindest JMP Pro 11.1) für ein Streudiagramm? Wo ist Jitter am nützlichsten?
Sonnenblumen werden auch sehr nützlich sein. Sehen Sie sich einfach an, was SPSS dagegen tun kann.
Yves Roy, Frankreich