Оценочные параметры распределения Гаусса неверны - PullRequest
0 голосов
/ 07 марта 2019

Я экспериментирую с гауссовым распределением и его вероятностью.Чтобы определить максимальную вероятность, я различаю вероятность по mu (ожидание) и сигме (среднее), которые равны data.mean () и data.std () соответственно

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as mlab
import math
from scipy.stats import norm

def calculate_likelihood(x, mu, sigma): 
    n = len(x)  
    likelihood = n/2.0 * np.log(2 * np.pi) + n/2.0 * math.log(sigma **2 ) + 1/(2*sigma**2) * sum([(x_i - mu)**2 for x_i in x ])

    return likelihood

def estimate_gaussian_parameters_from_data(data):
    return data.mean(), data.std()

def main():
    mu = 0
    sigma = 2
    x_values = np.linspace(mu - 3*sigma, mu + 3*sigma, 1000)
    y_values_1 = mlab.normpdf(x_values, mu, sigma)

    estimated_mu, estimated_sigma = estimate_gaussian_parameters_from_data(y_values_1)

if (__name__ == "__main__"):
    main()

Я ожидал, что оценка_му и оценка_игма приблизительно должны быть равны му и сигма , но это не так.Вместо 0 и 2 я получаю 0,083 и 0,069.Я понимаю что-то не так?

1 Ответ

1 голос
/ 07 марта 2019

mlab.normpdf - это PDF, который возвращает вероятность x.Так как среднее значение равно 0, вы увидите точки около 0 с высокой вероятностью.y_values_1 - плотность вероятности.

s = np.random.normal(0, 2, 1000)

Приведенный выше пример кода 1000 точек, которые обычно распределяются со средним 0 и стандартным значением 2

np.mean(s) == 0.018308805079364696 and np.std(s) == 1.9467605916031896
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...