¿Cuál es la distribución normal cuando la desviación estándar es cero?

Entiendo que la distribución normal no está definida si la desviación estándar es cero, pero necesito manejar el caso donde todos los valores son iguales en un algoritmo de computadora. El siguiente método debe devolver un valor válido, incluso si la desviación estándar es cero. ¿Cómo puedo arreglar este método para que no se divida entre cero?

public static double NormalDist(double x, double mean, double standard_dev) { double fact = standard_dev * Math.Sqrt(2.0 * Math.PI); double expo = (x - mean) * (x - mean) / (2.0 * standard_dev * standard_dev); return Math.Exp(-expo) / fact; } 

Mi idea era insertar esto al principio del método:

 if (standard_dev == 0.0) { return x == mean ? 1.0 : 0.0; } 

¿Sería correcto?

Comentarios

  • No ' t " corregir " it. El PDF de distribución normal no está definido para $ \ sigma = 0 $, ' no es 1 como en su " corrección "
  • @Aksakal apunta a un tema importante: ¿exactamente cómo piensa utilizar NormalDist en su algoritmo?
  • Esto se está utilizando en un na ï ve clasificador bayes. Es ' s intentando seleccionar una clase según los datos de un conjunto de entrenamiento. Para mí, si parece que si todos los valores en un conjunto de parámetros son iguales, no deberían tener influencia en el resultado. Entonces, por ejemplo, si miramos cómo el tamaño de zapato cae dentro de una distribución para determinar si una persona (la clase) es hombre o mujer, pero si sucede que todas las personas en la distribución tienen exactamente el mismo tamaño de zapato, entonces el tamaño del zapato no puede usarse para diferenciar y debe eliminarse de consideración. Estoy buscando manejar este caso.
  • Tal vez la respuesta no sea cambiar la salida de este método, sino simplemente descartar ese valor por completo.

Respuesta

Cuando la desviación estándar es cero, su PDF gaussiano (normal) se convierte en Función delta de Dirac . No puede simplemente insertar una desviación estándar cero en la expresión convencional. Por ejemplo, si el PDF está conectado a algún tipo de integración numérica, esto no funcionará. Tienes que modificar las integrales. En el siguiente ejemplo, calculamos el valor medio de la función $ g (x) $ usando la densidad gaussiana $ f (x | \ mu, \ sigma ^ 2) $:

$$ \ int g (x ) f (x | \ mu, \ sigma ^ 2) dx $$

cuando conecta la varianza cero, esto se vuelve funcional delta: $$ \ int g (x) f (x | \ mu, 0) dx = \ int g (x) \ delta (x- \ mu) dx = g (\ mu) $$

Tu código tiene que poder reconocer esto, de lo contrario fallará.

Una forma de solucionar esto es sorprendentemente simple: ingrese un valor muy pequeño de $ \ sigma $ en gaussiano en lugar de cero. Tendrá que elegir el $ \ sigma $ correcto para su situación. Si es demasiado pequeño, aumentará su exponente y las integrales no funcionarán o la precisión será baja. Esto va a una aproximación gaussiana conocida de la función delta: $$ \ delta (x) = \ lim _ {\ sigma \ to 0} \ mathcal N (0, \ sigma) $$

Comentarios

  • Si " falla " tiene que depender de su especificación funcional. Si la intención es simplemente devolver una versión continua de la densidad de probabilidad, entonces la función que siempre devuelve cero es correcta, porque el delta de Dirac tiene una densidad definida en todas partes menos en la media. Si, por otro lado, se llama a esta función como parte de un cálculo de probabilidad para calcular una estimación de ML, entonces no hay implementación alguna que haga que tenga éxito: todo lo que puede hacer es generar una condición de error.
  • @whuber, formato de punto flotante admite infinito positivo. Entonces, podría configurar el PDF al infinito. El problema ' es que incluso entonces su rutina de optimización de probabilidad no funcionará debido a la discontinuidad. Por lo tanto, ' digo que tiene que modificar el código que usa PDF. Él no puede ' salirse con la suya jugando solo con PDF
  • Publiqué un comentario adicional arriba con más información. Yo ' estoy pensando que Aksakal es correcto. Tengo que modificar el código que usa el método.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *