Qual é a distribuição normal quando o desvio padrão é zero?

Eu entendo que a distribuição normal é indefinida se o desvio padrão for zero, mas preciso lidar com o caso em que todos os valores são iguais em um algoritmo de computador. O método a seguir deve retornar um valor válido, mesmo se o desvio padrão for zero. Como posso corrigir esse método para não dividir por zero?

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; } 

Minha ideia era inserir isso no início do método:

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

Isso seria correto?

Comentários

  • Você não ' t " fix " it. O PDF de distribuição normal é indefinido para $ \ sigma = 0 $, ele ' não é 1 como em sua " correção "
  • @Aksakal aponta para uma questão importante: exatamente como você pretende usar NormalDist em seu algoritmo?
  • Isso está sendo usado em um na ï classificador de ve bayes. É ' tentar selecionar uma classe com base nos dados de um conjunto de treinamento. Para mim, parece que, se todos os valores em um conjunto de parâmetros são iguais, eles não deveriam ter influência no resultado. Então, por exemplo, se estivermos olhando como o tamanho do sapato cai dentro de uma distribuição para determinar se uma pessoa (a classe) é do sexo masculino ou feminino, mas se acontecer de todas as pessoas na distribuição terem exatamente o mesmo tamanho de sapato, então o tamanho do sapato não pode ser usado para diferenciar e deve ser removido da consideração. Estou tentando lidar com este caso.
  • Talvez a resposta não seja alterar a saída desse método, mas apenas descartar esse valor por completo.

Resposta

Quando o desvio padrão é zero, seu PDF gaussiano (normal) se transforma em função delta de Dirac . Você não pode simplesmente inserir o desvio padrão zero na expressão convencional. Por exemplo, se o PDF estiver conectado a algum tipo de integração numérica, isso não funcionará. Você tem que modificar as integrais. No exemplo abaixo, calculamos o valor médio da função $ g (x) $ usando a densidade gaussiana $ f (x | \ mu, \ sigma ^ 2) $:

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

quando você conecta a variância zero, isso se torna funcional delta: $$ \ int g (x) f (x | \ mu, 0) dx = \ int g (x) \ delta (x- \ mu) dx = g (\ mu) $$

Seu código deve ser capaz de reconhecer isso, caso contrário, ele falhará.

Uma maneira de corrigir isso é surpreendentemente simples: conecte um valor muito pequeno de $ \ sigma $ em gaussiano em vez de zero. Você terá que escolher o $ \ sigma $ certo para sua situação. Se for muito pequeno, seu expoente explodirá e as integrais não funcionarão ou a precisão será baixa. Isso vai para uma aproximação Gaussiana conhecida da função delta: $$ \ delta (x) = \ lim _ {\ sigma \ to 0} \ mathcal N (0, \ sigma) $$

Comentários

  • Se " falha " depende de sua especificação funcional. Se a intenção é meramente retornar uma versão contínua da densidade de probabilidade, então a função que sempre retorna zero está correta, porque o delta de Dirac tem uma densidade definida em todos os lugares, exceto na média. Se, por outro lado, essa função está sendo chamada como parte de um cálculo de probabilidade para calcular uma estimativa de ML, então não há nenhuma implementação que fará com que ela seja bem-sucedida: tudo que ela pode fazer é gerar uma condição de erro.
  • @whuber, floating formato de ponto suporta infinito positivo. Então, ele pode definir o PDF para o infinito. O problema ' é que mesmo assim sua rotina de otimização de probabilidade não funcionará, por causa da descontinuidade. Portanto, ' estou dizendo que ele deve modificar o código que usa PDF. Ele não pode ' se safar apenas mexendo com o PDF
  • Publiquei um comentário adicional acima com mais informações. Eu ' estou pensando que Aksakal está correto. Tenho que modificar o código que usa o método.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *