50 votos

Porcentaje de regiones superpuestas de dos distribuciones normales

Me preguntaba, dadas dos distribuciones normales con $\sigma_1,\ \mu_1$ y $\sigma_2, \ \mu_2$

  • ¿cómo puedo calcular el porcentaje de regiones superpuestas de dos distribuciones?
  • Supongo que este problema tiene un nombre específico, ¿conoces algún nombre concreto que describa este problema?
  • ¿Conoce alguna implementación de esto (por ejemplo, código Java)?

2 votos

¿A qué se refiere con lo de la región superpuesta? ¿Se refiere a la zona que está por debajo de ambas curvas de densidad?

0 votos

Me refiero a la intersección de dos áreas

5 votos

En resumen, escribir los dos pdfs como $f$ y $g$ ¿realmente quieres calcular $\int \min(f(x),g(x))dx$ ? ¿Podría aclararnos el contexto en el que surge y cómo se interpretaría?

0voto

Kondybas Puntos 2645

Aquí está la versión Java, Biblioteca de matemáticas de Apache Commons :

import org.apache.commons.math3.distribution.NormalDistribution;

public static double overlapArea(double mean1, double sd1, double mean2, double sd2) {

    NormalDistribution normalDistribution1 = new NormalDistribution(mean1, sd1);
    NormalDistribution normalDistribution2 = new NormalDistribution(mean2, sd2);

    double min = Math.min(mean1 - 6 * sd1, mean2 - 6 * sd2);
    double max = Math.max(mean1 + 6 * sd1, mean2 + 6 * sd2);
    double range = max - min;

    int resolution = (int) (range/Math.min(sd1, sd2));

    double partwidth = range / resolution;

    double intersectionArea = 0;

    int begin = (int)((Math.max(mean1 - 6 * sd1, mean2 - 6 * sd2)-min)/partwidth);
    int end = (int)((Math.min(mean1 + 6 * sd1, mean2 + 6 * sd2)-min)/partwidth);

    /// Divide the range into N partitions
    for (int ii = begin; ii < end; ii++) {

        double partMin = partwidth * ii;
        double partMax = partwidth * (ii + 1);

        double areaOfDist1 = normalDistribution1.probability(partMin, partMax);
        double areaOfDist2 = normalDistribution2.probability(partMin, partMax);

        intersectionArea += Math.min(areaOfDist1, areaOfDist2);
    }

    return intersectionArea;

}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X