c'è un modo per trovare l'area comune a due diverse curve di distribuzione normale usando JMP?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto cercando di trovare l'area sotto la porzione comune di due diverse curve di distribuzione normale. Come posso farlo utilizzando JMP? Qualche modo semplice per farlo?
Ri: c'è un modo per trovare l'area comune a due diverse curve di distribuzione normale usando JMP?CIAO,
L'intervallo del grafico era un mezzo codificato nelle singole cifre piuttosto che nelle doppie cifre, quindi la trama era "fuori pagina" per così dire. Ho aggiunto il codice per calcolare gli assi appropriati per il grafico in modo che le curve vengano visualizzate.
Ho anche avuto problemi con la funzione Integrate () usata qui, e ho optato invece per le somme di Riemann sotto il poligono. Sarà ragionevolmente accurato in questo modo.
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);
)
);Ri: c'è un modo per trovare l'area comune a due diverse curve di distribuzione normale usando JMP?Qualcuno può aiutare il problema a risolvere questo script. Il mio JSL semplicemente non è abbastanza buono per capire cosa non va quando utilizziamo un set di dati reale e il grafico si ridimensiona in modo errato e non visualizza / calcola OVL?
dati di esempio:
| media1 = 46,17 | std1 = 16,27 |
| media2 = 82,08 | std2 = 17,68 |
Errori osservati
- Utilizzando i dati di cui sopra, OVL non viene visualizzato/calcolato (non sono sicuro di quale sia vero)
- Gli assi sono impostati sulla scala sbagliata (una funzione automatica aiuterebbe)
- Quando le scale vengono regolate nel codice o utilizzando lo strumento manuale, vediamo le curve PDF ma nessuna area ombreggiata
Ri: c'è un modo per trovare l'area comune a due diverse curve di distribuzione normale usando JMP?Il grafico di JMP (grazie @SM ). Bello sapere che esiste anche una soluzione analitica.
overlapoverlapsovrapposizione
Ri: c'è un modo per trovare l'area comune a due diverse curve di distribuzione normale usando JMP?@SM Grazie per aver condiviso questo!Ho confrontato questo script con un esempio fornito sul seguente sito Web grazie a un mio collega: https://stats.stackexchange.com/questions/103800/calculate-probability-area-under-the-overlapping-area-of-two-normal-distributi
Con i parametri media e sigma rispettivamente per la prima e la seconda distribuzione:
"Per il tuo esempio, con μ 1 = 5.28 , μ 2 = 8.45 , σ 1 = 0,91 , σ 2 = 1.36 μ1=5.28,μ2=8.45,σ1=0.91,σ2=1.36 , questo produce: C = 6.70458... c=6.70458... , e l'area della sezione verde è: 0,158413"
Lo script .JSL fornisce esattamente lo stesso risultato per l'area della sezione sovrapposta!
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);
)
);

Ri: c'è un modo per trovare l'area comune a due diverse curve di distribuzione normale usando JMP?In JMP 12 esiste una funzione Integrate() abbastanza efficiente che può essere utilizzata per calcolare l'area delimitata dal minimo delle due curve.
L'esempio seguente non è molto utile (probabilmente vorresti ottenere i parametri dalla piattaforma di distribuzione) ma potrebbe darti qualche idea...
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);
)
);
