簡體   English   中英

估計的高斯分布參數錯誤

[英]Estimated Gaussian distribution parameters are wrong

我正在試驗高斯分布及其可能性。 為了找出最大似然,我將關於mu (期望)和sigma(均值)的似然性加以區分,它們分別等於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()

我希望估計_mu估計 _sigma大約等於musigma ,但事實並非如此。 而不是0和2我得到0.083和0.069。 我明白什么地方不對嗎?

mlab.normpdf是pdf,它返回x的概率。 由於均值為0,因此您將看到0周圍的點具有很高的概率。 y_values_1是概率密度。

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

上面的代碼采樣了1000個點,它們的均值為0和std 2正態分布

np.mean(s) == 0.018308805079364696 and np.std(s) == 1.9467605916031896

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM