Gibt es eine Möglichkeit, mit JMP die gemeinsame Fläche zweier verschiedener Normalverteilungskurven zu ermitteln?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich versuche, die Fläche unter dem gemeinsamen Teil zweier verschiedener Normalverteilungskurven zu ermitteln. Wie kann ich das mit JMP machen? Gibt es eine einfache Möglichkeit, dies zu tun?
Betreff: Gibt es eine Möglichkeit, mit JMP die gemeinsame Fläche zweier verschiedener Normalverteilungskurven zu ermitteln?Hallo,
Der Diagrammbereich bestand aus fest codierten Mittelwerten im einstelligen Bereich und nicht im zweistelligen Bereich, sodass die Darstellung sozusagen „von der Seite“ war. Ich habe Code hinzugefügt, um die entsprechenden Achsen für das Diagramm zu berechnen, damit die Kurven angezeigt werden.
Ich hatte auch Probleme mit der hier verwendeten Integrate()-Funktion und entschied mich stattdessen für Riemann-Summen unter dem Polygon. Auf diese Weise wird es einigermaßen genau sein.
Names Default to Here( 1 );
// Define curves and calculate overlap area
mean1 = 46.17;
stdev1 = 16.27;
mean2 = 82.08;
stdev2 = 17.68;
<BR />N1 = Expr(Normal Density(x, mean1, stdev1));<BR />N2 = Expr(Normal Density(x, mean2, stdev2));
//––––––––––
// calculate graph ranges
rangemin = Minimum(mean1-6*stdev1,mean2-6*stdev2);
rangemax = Maximum(mean1+6*stdev1,mean2+6*stdev2);
// Illustration
ym = zm = 1 :: 2000; // 2000 has to do with how detailed the plot should be
multiplier = (rangemax-rangemin)/(Maximum(ym)-Minimum(ym));
xm = (ym-Minimum(ym))*multiplier+rangemin;
ovl = 0;
For(i = 1, i <= N Col(xm), i++,
ym[i] = Minimum(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2));
zm[i] = Maximum(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2));
If(i>1, ovl += 0.5*(ym[i-1]+ym[i])*(xm[i]-xm[i-1]));
);
New Window("Overlap Coefficient",
y = Graph Box(
Y Scale(0, 1.2*Maximum(zm)),
X Scale(rangemin, rangemax),
Y Function(N1, x);
Y Function(N2, x);
Text({Mean(xm), 0.6*Maximum(zm)}, "OVL% = ", ovl*100);
Fill Color(1);
Polygon(xm, ym);
)
);Betreff: Gibt es eine Möglichkeit, mit JMP die gemeinsame Fläche zweier verschiedener Normalverteilungskurven zu ermitteln?Kann mir jemand bei der Lösung dieses Skripts helfen? Mein JSL ist einfach nicht gut genug, um zu verstehen, was schief läuft, wenn wir einen echten Datensatz verwenden und das Diagramm falsch skaliert und OVL nicht anzeigt/berechnet?
Beispieldaten:
| Mittelwert1 = 46,17 | std1 = 16,27 |
| Mittelwert2 = 82,08 | std2 = 17,68 |
Fehler beobachtet
- Unter Verwendung der oben genannten Daten wird OVL nicht angezeigt/berechnet (ich bin nicht sicher, was wahr ist)
- Die Achsen sind auf den falschen Maßstab eingestellt (eine Auto-Funktion würde helfen)
- Wenn die Maßstäbe im Code oder mit einem Handwerkzeug angepasst werden, sehen wir die PDF-Kurven, aber keinen schattierten Bereich
Betreff: Gibt es eine Möglichkeit, mit JMP die gemeinsame Fläche zweier verschiedener Normalverteilungskurven zu ermitteln?Die Grafik von JMP (danke @MS ). Gut zu wissen, dass es auch eine analytische Lösung gibt.
overlapoverlapÜberlappung
Betreff: Gibt es eine Möglichkeit, mit JMP die gemeinsame Fläche zweier verschiedener Normalverteilungskurven zu ermitteln?@MS Vielen Dank fürs Teilen!Dank eines Kollegen habe ich dieses Skript anhand eines Beispiels auf der folgenden Website überprüft: https://stats.stackexchange.com/questions/103800/calculate-probability-area-under-the-overlapping-area-of-two-normal-distributi
Mit den Mittelwert- und Sigma-Parametern für die erste bzw. zweite Verteilung:
„Für Ihr Beispiel, mit μ 1 = 5.28 , μ 2 = 8.45 , σ 1 = 0,91 , σ 2 = 1,36 μ1=5,28,μ2=8,45,σ1=0,91,σ2=1,36 , Dies ergibt: C = 6.70458... c=6,70458... , und die Fläche des grünen Abschnitts beträgt: 0,158413"
Das .JSL-Skript liefert genau das gleiche Ergebnis für den Bereich des überlappenden Abschnitts!
Names Default To Here(1);
// Define curves and calculate overlap area
mean1 = 5.28;
stdev1 = 0.91;
mean2 = 8.45;
stdev2 = 1.36;
N1 = Expr(Normal Density(x, mean1, stdev1));
N2 = Expr(Normal Density(x, mean2, stdev2));
ovl = Integrate(Min(N1, N2), x, ., .);
Show(ovl);
//––––––––––
// Illustration
ym = xm = (-1000 :: 1000) / 100;
For(i = 1, i <= N Col(xm), i++,
ym[i] = Min(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2))
);
New Window("Overlap Coefficient",
y = Graph Box(
Y Scale(0, 1),
X Scale(-5, 12),
Y Function(N1, x);
Y Function(N2, x);
Text({0, 0.6}, "OVL% = ", ovl*100);
Fill Color(1);
Polygon(xm, ym);
)
);

Betreff: Gibt es eine Möglichkeit, mit JMP die gemeinsame Fläche zweier verschiedener Normalverteilungskurven zu ermitteln?In JMP 12 gibt es eine recht effiziente Integrate()-Funktion, die zur Berechnung der durch das Minimum der beiden Kurven begrenzten Fläche verwendet werden kann.
Das folgende Beispiel ist nicht sehr nützlich (Sie möchten die Parameter wahrscheinlich von der Vertriebsplattform erhalten), kann Ihnen aber einige Anregungen geben ...
Names Default To Here(1);
// Define curves and calculate overlap area
N1 = Expr(Normal Density(x, 1, 2));
N2 = Expr(Normal Density(x, 0, 1));
ovl = Integrate(Min(N1, N2), x, ., .);
Show(ovl);
//––––––––––
// Illustration
ym = xm = (-500 :: 500) / 100;
For(i = 1, i <= N Col(xm), i++,
ym[i] = Min(Normal Density(xm[i], 1, 2), Normal Density(xm[i], 0, 1))
);
New Window("Overlap Coefficient",
y = Graph Box(
Y Scale(0, 1),
X Scale(-5, 5),
Y Function(N1, x);
Y Function(N2, x);
Text({0, 0.6}, "OVL = ", ovl);
Fill Color(1);
Polygon(xm, ym);
)
);
