1414_de-DE
VerteilungsbehälterZunächst möchte ich alle Menschen in der Gemeinde grüßen.
Für mich ist es das erste Mal, dass ich diese Art von Community-Tools verwende.
In den Ausschüttungen:
1) Wo kann ich den Wert der Tonne sehen?
2) Welche Formel wird von JMP verwendet, um den Behälter für die erste Visualisierung zu berechnen?
Danke schön.
SimoneBetreff: VerteilungsbehälterMöglicherweise sind Sie daran interessiert, mehrere der unter beschriebenen Histogrammoptionen zu erkunden
Optionen für kontinuierliche Variablen im Abschnitt „Univariate Analyse“ des Handbuchs „Statistik und Grafiken“.
„Shadowgram“ und „Bin-Breite festlegen“ ermöglichen einige Steuerungsoptionen für das Histogramm.
Unter dem roten Dreieck finden Sie in den Histogrammoptionen auch Optionen für „Zählungen anzeigen“ und „Prozente anzeigen“.
Interessant wäre eine Option zur Anzeige der Behälterkanten oder Schnittpunkte.
Ich habe vergessen, wo ich das folgende Skript gefunden habe, aber es erstellt ein praktisches interaktives Tool zum Definieren von Schnittpunkten.
// ian.cox@jmp.com: 27. August 2009
// Aktuelle Tabelle
if(IsEmpty(Aktuelle Datentabelle()), dt = Open(), dt = Aktuelle Datentabelle());
dtn = dt << GetName;
nr = NRow(dt);
nc = NCol(dt);
// Verschiedenes
lbWidth = 130;
notImplemented = Expr(Dialog("Funktion noch nicht implementiert",Button("OK")));
helpScript = Expr(Dialog("Quantisiert eine kontinuierliche Variable nach Augenmaß auf eine Ordinalvariable",Button("OK")));
// ********************************************** *******************************
// Benutzerdefinierten Dialog in einem Fenster erstellen
// ********************************************** *******************************
customDlg =
NewWindow("Cut-Points Using "||dtn,
BorderBox(left(3),top(2),
VListBox(
HlistBox(
PanelBox("Spalte auswählen",
colListData=ColListBox(All,width(lbWidth),nLines(min(nc,10)))
),
PanelBox("Ausgewählte Spalten in Rolle umwandeln",
LineUpBox(NCol(2), Spacing(3),
ButtonBox("Cut-Points",colListOR << Append(colListData<colListOR = ColListBox(width(lbWidth),nLines(1),Numeric)
)
),
PanelBox("Aktion",
LineupBox(NCol(1),
ButtonBox("OK", OKScript),
ButtonBox("Abbrechen", customDlg<Textfeld(" "),
ButtonBox("Entfernen", colListOR << RemoveSelected),
ButtonBox("Recall", notImplemented),
ButtonBox("Hilfe", helpScript))
)
) // Ende von HListBox
) // Ende von VListBox
) // Ende von BorderBox
); // Ende von NewWindow
// ********************************************** *******************************
// Wenn der Benutzer auf OK klickt. . .
// ********************************************** *******************************
OKScript = Ausdruck(
customDlg << CloseWindow;
// Werte aus dem Dialog abrufen
colOR = colListOR << GetItems;
// Sind die Benutzerauswahlen realisierbar?
if (NItems(colOR) != 1, Dialog("FEHLER: Sie müssen eine Cut-Points-Spalte auswählen", Button("OK")); Throw());
// Spaltenname
colORn = colOR[1];
// Spaltenreferenz
colOR = Column(dt, colORn);
// Eine Verteilung erhalten
// Hinweis: Wir verwenden das Entwurfsmuster „SubstituteInto“, da wir die Dispatch-Nachricht aktualisieren müssen
d = Expr(
dist = dt << Verteilung(
Kontinuierliche Verteilung(
Spalte(colOR),
Quantile(0),
Momente(0),
Vertikal(0),
OutlierBoxPlot(0)
),
SendToReport(
Versenden(
{"colTBD"},
„Verteilungshistogramm“,
FrameBox,
FrameSize(500, 300)
)
)
)
);
SubstituteInto(d, "colTBD", colORn);
D;
// Holen Sie sich den Bericht
distRep = Report(dist);
// Mose-Anweisungen und eine OK-Schaltfläche hinzufügen, wenn die Schnittpunkte definiert wurden
pb = PanelBox("Schnittpunkte definieren");
tb1 = TextBox("Klicken Sie einmal in die Grafik, um einen neuen Schnittpunkt zu definieren. ");
tb2 = TextBox("Wählen Sie 'OK', wenn Sie alle Schnittpunkte definiert haben.\!N ");
bb = ButtonBox("OK", OKScript2);
pb << Append(tb1) << Append(tb2) << Append(bb);
distRep[OutlineBox(2)] << Append(pb);
// Ausdruck, der bei gedrückter Maus im Grafikfeld aufgerufen werden soll – Fügt eine rote vertikale Linie am gewählten x-Wert hinzu
addVLine = Expr(
vl = Expr( distRep[FrameBox(1)] << AddGraphicsScript(PenColor("Red"); VLine(xTBD)) );
SubstituteInto(vl, Expr(xTBD), EvalExpr(x));
vl
);
// Wird verwendet, um aufeinanderfolgende x-Werte bei gedrückter Maus zu erfassen
xVals = {};
// Fügen Sie das Mausefallen-Skript zur Grafikbox hinzu
distRep[FrameBox(1)] << AddGraphicsScript(
Mausefalle(
{},
Print("Bei gedrückter Maus war x "||Char(Round(x,2)));
InsertInto(xVals, x);
addVLine;
);
);
// ********************************************** *******************************
// OKScript2: Wird ausgeführt, wenn alle Schnittpunkte definiert sind und der Benutzer auf OK klickt
// ********************************************** *******************************
OKScript2 = Ausdruck(
distRep << CloseWindow;
// Liste der Schnittpunktwerte in einen sortierten Vektor umwandeln
xVals2 = J(NItems(xVals), 1, .);
für (i=1, i<=NItems(xVals), i++, xVals2 = xVals );
cutPoints = SortAscending(xVals2);
// Holen Sie sich die zu schneidenden Daten
data = colOR << GetValues;
// Wende die Schnittpunkte auf die Daten an, indem du eine Schleife über die Schnittpunkte machst. . .
// NB: Wir behandeln alle fehlenden Werte in „data“, indem wir mit „.“ initialisieren. und sie später als Sonderfall zu behandeln
codedData = J(nr, 1, .);
// txt ist eine Liste von Textwerten, die jeden Bin beschreiben
txt = {};
// Erster Schnittpunkt
r = Loc(data <= cutPoints[1]);
codierte Daten= 1;
InsertInto(txt, "<= "||Char(cutPoints[1]));
// Verbleibende Schnittpunkte außer dem letzten
for (cp = 2, cp <=NRow(cutPoints), cp++,
r = Loc((data > cutPoints[cp-1]) & (data <= cutPoints[cp]));
codierte Daten= cp;
InsertInto(txt, Char(cutPoints[cp-1])||" - "||Char(cutpoints[cp]))
);
// Letzter Schnittpunkt
r = Loc(data > cutPoints[NRow(cutPoints)]);
codierte Daten= NRow(cutPoints) + 1;
InsertInto(txt, "> "||Char(cutPoints[NRow(cutPoints)]));
// TXT verwenden, um eine Textversion der codierten Daten in einer neuen Liste zu erstellen.
// Durchlaufen Sie die Daten und denken Sie daran, alle ausstehenden Werte zu verarbeiten
txtData = {};
für (n = 1, n <= NRow(data), n++,
if (!IsMissing(data),
InsertInto(txtData, txt[codedData]),
InsertInto(txtData, "")
);
);
// Füge eine Spalte mit den Schnittdaten zu dt hinzu
binnedCol = dt << NewColumn(colORn||" Binned", Character, Ordinal, Values(txtData));
// Die Eigenschaft „Wertreihenfolge“ auf die neue Spalte anwenden.
binnedCol << Set Property( "Value Ordering", EvalList(txt));
// Zeigt die Verteilung der alten und neuen Spalten an
dt << Verteilung(
Kontinuierliche Verteilung(
Spalte(colOR),
Quantile(0),
Momente(0),
OutlierBoxPlot(0)
),
Nominale Verteilung(
Spalte(binnedCol),
Frequenzen(0)
)
);
); // Ende von OKScript2
); // Ende von OKScript
Beste grüße,
-Matt