¿Hay alguna manera de encontrar el área común a dos curvas de distribución normal diferentes usando JMP?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy tratando de encontrar el área bajo la parte común de dos curvas de distribución normal diferentes. ¿Cómo puedo hacer eso usando JMP? ¿Alguna forma sencilla de hacerlo?
Re: ¿hay alguna manera de encontrar el área común a dos curvas de distribución normal diferentes usando JMP?Hola,
El rango del gráfico estaba codificado de forma rígida en un solo dígito en lugar de dos dígitos, por lo que la trama estaba "fuera de la página", por así decirlo. Agregué código para calcular los ejes apropiados para el gráfico para que aparezcan las curvas.
También tuve problemas con la función Integrar () que se usa aquí y, en cambio, me conformé con las sumas de Riemann debajo del polígono. Será razonablemente preciso de esta manera.
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);
)
);Re: ¿hay alguna manera de encontrar el área común a dos curvas de distribución normal diferentes usando JMP?¿Alguien puede ayudar a resolver el problema de este script? Mi JSL simplemente no es lo suficientemente bueno como para comprender qué está fallando cuando usamos un conjunto de datos reales y el gráfico se escala incorrectamente y no muestra/calcula el OVL.
datos de ejemplo:
| media1 = 46,17 | estándar1 = 16,27 |
| media2 = 82,08 | estándar2 = 17,68 |
Errores observados
- Usando los datos anteriores, OVL no se muestra / calcula (no estoy seguro de cuál es cierto)
- Los ejes están configurados en la escala incorrecta (una función automática ayudaría)
- Cuando las escalas se ajustan en el código o con la herramienta manual, vemos las curvas PDF pero no el área sombreada
Re: ¿hay alguna manera de encontrar el área común a dos curvas de distribución normal diferentes usando JMP?El gráfico de JMP (gracias @milisegundo ) . Es bueno saber que también hay una solución analítica.
overlapoverlapsuperposición
Re: ¿hay alguna manera de encontrar el área común a dos curvas de distribución normal diferentes usando JMP?@milisegundo ¡Gracias por compartir esto!Verifiqué este script con un ejemplo dado en el siguiente sitio web gracias a un colega mío: https://stats.stackexchange.com/questions/103800/calculate-probability-area-under-the-overlapping-area-of-two-normal-distributi
Con los parámetros de media y sigma para la primera y segunda distribución respectivamente:
"Para su ejemplo, con m 1 = 5.28 , m 2 = 8.45 , σ 1 = 0.91 , σ 2 = 1.36 μ1 = 5,28, μ2 = 8,45, σ1 = 0,91, σ2 = 1,36 , esto produce: C = 6.70458... c=6.70458... , y el área de la sección verde es: 0.158413"
¡El script .JSL da exactamente el mismo resultado para el área de la sección superpuesta!
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);
)
);

Re: ¿hay alguna manera de encontrar el área común a dos curvas de distribución normal diferentes usando JMP?En JMP 12 hay una función Integrate() bastante eficiente que se puede usar para calcular el área confinada por el mínimo de las dos curvas.
El siguiente ejemplo no es muy útil (probablemente querrá obtener los parámetros de la plataforma de distribución), pero puede darle algunas ideas...
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);
)
);
