Spitze einer WahrscheinlichkeitsverteilungHallo
Ich habe einen Datensatz, der am besten zur Johnson-Su-Verteilung passt, und ich habe mich gefragt, ob es eine Möglichkeit gibt, den Wert des Peaks dieser Verteilung abzuschätzen. Es gibt nur einen Peak, der sich stark vom Median bzw. Mittelwert unterscheidet. Diesen „Modus“ zu nennen, könnte hier die bestmögliche Lösung sein, aber wie schätze ich diesen Punkt ein?
Betreff: Peak einer WahrscheinlichkeitsverteilungKann die Profiloption für die gruppierte Datenverteilung erweitert werden? Für N Gruppen muss der Modus ermittelt werden, der der Verteilung jedes Elements in der Gruppe entspricht. Oder sollte ich jedes Mal eine Unterteilung nach Gruppe vornehmen und dann die Profiler-Option verwenden? Ich habe die Spalte „groupby“ verwendet und dann angepasst, aber es sieht so aus, als würde sie einen einzelnen Wert für den gesamten Datensatz und nicht für jedes Gruppenmitglied liefern.
Betreff: Peak einer WahrscheinlichkeitsverteilungMit dem Profiler haben Sie eine Lösung, die funktioniert. Was die Skripte betrifft, die bei Ihnen nicht funktionieren, werden in diesem Artikel einige der Änderungen hervorgehoben, die an den Funktionen „Maximieren“ und „Minimieren“ vorgenommen wurden. Vielen Dank an das JMP-Tech-Support-Team für den Hinweis!
https://community.jmp.com/t5/JMPer-Cable/Minimize-and-Maximize-Functions-in-JSL/ba-p/36355
Betreff: Peak einer WahrscheinlichkeitsverteilungLauras Methode ist ordentlicher! Und weitaus weniger fehleranfällig. Es ist immer am besten, JMP die Arbeit für Sie erledigen zu lassen, wenn Sie einen Weg finden.
Betreff: Peak einer WahrscheinlichkeitsverteilungEines der Dinge, die ich an JMP liebe, ist, dass es einem oft viele Möglichkeiten bietet, ein Problem zu lösen.Alle vorherigen Vorschläge zum Ermitteln des Modus der angepassten Johnson SU-Dichte für die Daten sind großartig, aber hier ist eine weitere Option, die den Profiler verwendet.
Nachdem Sie mithilfe der Verteilung die Johnson-Su-Verteilung an Ihre Daten angepasst haben, können Sie auswählen Dichteformel speichern von dem Ausgestattet mit Johnson Su Speisekarte.Dadurch wird die Johnson-Su-Dichteformel in einer Spalte Ihrer Datentabelle gespeichert.

Als nächstes können Sie den Profiler öffnen, indem Sie wählen Diagramm>>Profiler .Geben Sie Ihre Dichteformel als an Y, Vorhersageformel und klicken Sie auf OK.Als nächstes schalten Sie das ein Erwünschtheitsfunktionen aus Vorhersage-Profiler Speisekarte.Danach wählen Sie Maximieren Sie die Attraktivität von dem Vorhersage-Profiler Speisekarte.Dadurch wird der Modus (das Maximum) Ihrer Johnson Su-Dichte für diese Daten ermittelt.

Betreff: Peak einer WahrscheinlichkeitsverteilungVielen Dank! 

Betreff: Peak einer WahrscheinlichkeitsverteilungIch habe kein Problem mit den Daten in dieser Spalte. Hier ist eine neue Version, die die manuelle Eingabe der Parameterschätzungen vermeidet und sich an Ians Lösung orientiert:
Names Default to Here( 1 );
dist = Current Data Table() << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :T10_100 ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Fit Distribution( Johnson Su )
)
);
estimates = Report( dist )["Fitted Johnson Su"][NumberColBox(1)] << Get As Matrix;
dist expr = Substitute(
Expr(
Johnson Su Density(
q, // quantile
ggg, // gamma or first shape parameter
ddd, // delta or second shape parameter
ttt, // theta or location parameter
sss // sigma or scale parameter
)
),
Expr( ggg ), estimates[1],
Expr( ddd ), estimates[2],
Expr( ttt ), estimates[3],
Expr( sss ), estimates[4]
);
peak height = Maximize( dist expr, { q( 0.01, 70 ) } );
difference = Minimize( peak height - dist expr, { q( 0.01, 70 ) } );
Print( "The peak location is " || Char( q ) );
Ich erhalte dieses Ergebnis mit Ihren Daten:


Es sind also nicht die Daten oder das Skript, es muss JMP (Installation) sein.
Betreff: Peak einer WahrscheinlichkeitsverteilungDie Optimierung funktioniert auch in der Beispieldatentabelle nicht. Außerdem habe ich Ians Skript verwendet, das völlig unabhängig von meinen Daten ist. Dann muss also etwas mit der Installation nicht stimmen, wie Sie darauf hingewiesen haben. Soll ich JMP jetzt neu installieren?
Ich hänge die Datenspalte trotzdem an.
Betreff: Peak einer WahrscheinlichkeitsverteilungIch sehe nichts Falsches an Ians oder meinem Skript, sodass die Datentabelle oder die JMP-Installation übrig bleiben. Beginnen wir mit der Datentabelle. Kannst du es teilen? Wenn ja, identifizieren Sie bitte die Datenspalte, die Sie verwendet haben. Eigentlich brauchen wir nur die Datenspalte, die das Problem verursacht. Sie können den Rest löschen, wenn das für Sie besser ist.
Danke!
Betreff: Peak einer WahrscheinlichkeitsverteilungBei Ihrem Skript und meinem Datensatz hat es nicht funktioniert. Das Gleiche gilt für Ians Drehbuch, heißt es
„Optimierung fehlgeschlagen: Fehlgeschlagen: Zielfunktion kann nicht verringert werden.“
Also habe ich einfach mit Bills Lösung weitergemacht, aber ich betrachte sie nur als vorübergehende Lösung für mein Problem.
Betreff: Peak einer WahrscheinlichkeitsverteilungWollen Sie damit sagen, dass mein Lösungsskript mit dem von Ihnen geposteten Originalbeispiel nicht funktioniert hat (wie bei mir) oder dass es mit einem neuen Datensatz nicht funktioniert hat? Wenn letzteres der Fall ist, können Sie die Daten weitergeben?
Hast du Ians Drehbuch ausprobiert?
Betreff: Peak einer WahrscheinlichkeitsverteilungMarks Methode ist ordentlich. Hier ist eine Alternative, die die Funktion direkt verwendet:
NamesDefaultToHere(1);
ClearLog();
// Make some representative data
dt = NewTable("Johnson Su", NewColumn("Data", Numeric, Continuous, Formula(Random Johnson Su( 5, 2, 1, 1 ))));
dt << addRows(50);
// Fit the data
dist = dt << Distribution(Continuous Distribution( Column( :Data ), Fit Distribution( Johnson Su ) ));
// Get the fitted parameters
params = Report(dist)[NumberColBox(3)] << get;
gamma = params[1]; // Shape
delta = params[2]; // Shape
theta = params[3]; // Location
sigma = params[4]; // Scale
// http://www.mathwave.com/articles/johnson_su_distribution.html
// f(x) = delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 );
// where:
// z = (x - eta)/lambda;
// and:
// delta > 0 lambda > 0
jsu = Expr(delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 ) );
SubstituteInto(jsu, Expr(z), Expr((x - eta)/lambda));
// Use the fitted parameter values
// Note the change in parameter names! 'lambda' -> 'sigma' and 'eta' -> 'theta'
SubstituteInto(jsu,
Expr(gamma), Eval(gamma),
Expr(delta), Eval(delta),
Expr(eta), Eval(theta),
Expr(lambda), Eval(sigma)
);
// Get upper and lower bounds for the optimisation (either side of the (assumed) single peak)
vals = Column(dt, "Data") << getValues;
low = Quantile(0.25, vals);
high = Quantile(0.75, vals);
// Do the maximization
Maximize(jsu, {x(low, high)}, << Tolerance(10^-10), << showDetails(true));
Print(x);
(„Nach Augenmaß“ scheint es zu funktionieren, aber natürlich kein Test).
Betreff: Peak einer WahrscheinlichkeitsverteilungDanke für die Antwort. Aber irgendwie funktioniert es bei mir nicht. Es sagt
„Optimierung fehlgeschlagen: Fehlgeschlagen: Maximale Iterationen überschritten“
Ich verwende JMP 12, möglicherweise verfügt der Optimierer über eine eingeschränkte Funktionalität.
Betreff: Peak einer WahrscheinlichkeitsverteilungNur zur Ergänzung.
Marks Methode ist wirklich die beste Methode, um den Spitzenwert zu ermitteln. Um jedoch schnell einen geschätzten Wert zu erhalten, können Sie die Kurve anpassen und dann das JMP-Fadenkreuz-Werkzeug verwenden, das Sie im Menü „Extras“ oder in Ihrer Menüleiste finden. Klicken Sie auf das Werkzeug und platzieren Sie dann das Fadenkreuzsymbol an der Stelle, die Ihrer Meinung nach den Höhepunkt am besten darstellt. Daraufhin wird ein Wert angezeigt. Wenn Sie JMP 13 verwenden, erhalten Sie eine Lupe mit dem Fadenkreuz-Werkzeug, die Ihnen hilft, näher heranzukommen.
HTH
Betreff: Peak einer WahrscheinlichkeitsverteilungLeider bietet die Distributionsplattform keinen Modus für eine Analysefunktion. Ich habe gesucht, konnte aber auch die Formel für den Modus einer Johnson-Verteilung nicht finden.
Ein anderer Ansatz besteht darin, den numerischen Optimierer JMP zur Suche nach der Lösung zu verwenden. Mein Ansatz besteht darin, das zu verwenden Maximieren() Funktion, um die maximale Dichte der angepassten Verteilung zu ermitteln, die dem Peak entspricht, und verwenden Sie dann die Minimieren() Funktion zum Finden des Quantils, das eine Wahrscheinlichkeit erzeugt, die dem Maximum am nächsten kommt. Hier ist die Lösung in Schritten, die zu Ihrem Vorhaben passen.
- Ich habe das Spritzgussbeispiel aus dem Beispieldatenverzeichnis geöffnet.
- Ich habe die Vertriebsplattform in der Spalte „Schrumpfungsdaten“ geöffnet.
- Ich passe die Johnson SU-Verteilung an, um die Johnson SU-Parameterschätzungen zu erhalten.
- Ich habe ein Skript mit den oben beschriebenen zwei Schritten geschrieben, um die Position des Gipfels zu finden.
Hier ist die angepasste Verteilung:

.Das Skript ist:
peak height = Maximize(
Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
difference = Minimize(
peak height - Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
Print( "The peak location is " || Char( q ) );
Beachten Sie, dass die Schätzungen in den Funktionsaufruf kopiert werden, der zweimal verwendet wird.
Hier ist das Ergebnis im Protokoll:

Lassen Sie sich von all den Meldungen nicht beunruhigen – es hat wunderbar funktioniert! Das Ergebnis seht ihr unten.