矢量化正态分布python

时间:2017-10-22 22:52:38

标签: python scipy normal-distribution mle

可能是一个愚蠢的问题,原谅我,但是,

来自here

N = 10000
x = 10 + 2*np.random.randn(N)
y = 5 + x + np.random.randn(N)

def neg_loglike(const,coef,std):
    mu = const + coef*x
    print(mu.shape)
    return -1*stats.norm(mu, std).logpdf(y).sum()

seed = np.array([1,1,1])
res = minimize(neg_loglike, seed, method = 'Nelder-Mead', 
            options={'disp': True})
在这种情况下,

mu是一个数组/向量 - stats.norm生成x 的每个值的正态分布吗?具有多种手段的正态分布意味着什么......(显然我没有得到这个)

最后,是res.x中最佳值的正确解释 这些参数生成一组正态分布,最大化在分布中看到y的概率。?

1 个答案:

答案 0 :(得分:2)

是的,norm接受locscale参数的向量,并将每个输入视为自己的分布。请注意,输入一个参数的矢量和另一个参数的标量是很好的,就像您引用的链接中的情况一样(scale1loc是vector x)。

例如:

from scipy.stats import norm

norm(loc=[1,2,3], scale=1).logpdf([4,5,6])

输出:

array([-5.41893853, -5.41893853, -5.41893853])