向量化正态分布 python
Vectorized normal distribution python
可能是个愚蠢的问题所以请原谅我,但是
来自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 是一个 array/vector - 所以 stats.norm
是否为 每个 x 值生成正态分布?正态分布有多种方式是什么意思...(显然我不明白)
最后,是对res.x
中最优值的正确解释
这些参数生成一组正态分布,最大化在分布中看到 y 的概率..?
是的,norm
接受 loc
和 scale
参数的向量,并将每个输入视为其自己的分布。请注意,可以为一个参数输入一个向量,为另一个参数输入一个标量,就像您引用的 link 中的情况一样(其中 scale
是 1
和 loc
是向量 x
).
例如:
from scipy.stats import norm
norm(loc=[1,2,3], scale=1).logpdf([4,5,6])
输出:
array([-5.41893853, -5.41893853, -5.41893853])
可能是个愚蠢的问题所以请原谅我,但是
来自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 是一个 array/vector - 所以 stats.norm
是否为 每个 x 值生成正态分布?正态分布有多种方式是什么意思...(显然我不明白)
最后,是对res.x
中最优值的正确解释
这些参数生成一组正态分布,最大化在分布中看到 y 的概率..?
是的,norm
接受 loc
和 scale
参数的向量,并将每个输入视为其自己的分布。请注意,可以为一个参数输入一个向量,为另一个参数输入一个标量,就像您引用的 link 中的情况一样(其中 scale
是 1
和 loc
是向量 x
).
例如:
from scipy.stats import norm
norm(loc=[1,2,3], scale=1).logpdf([4,5,6])
输出:
array([-5.41893853, -5.41893853, -5.41893853])