Scipy.stats multivariate_normal异常:z分量标准差不符合预期
问题原因与解决办法
你的问题出在对scipy.stats.multivariate_normal参数的理解上:
- 该函数的第二个参数
cov要求传入协方差矩阵,而非标准差矩阵。 - 你当前传入的
np.diag([0,0,50])中,50是方差值,对应的标准差为√50≈7.07,这就是实际结果标准差远小于预期50的原因。
修正后的代码如下:
from scipy import stats import numpy as np mu = np.array([0,0,2000]) # 协方差是标准差的平方,这里用50²=2500作为z分量的协方差 sigma = np.diag([0,0,50**2]) vals = stats.multivariate_normal(mu, sigma, allow_singular=True).rvs(10000) # 验证z分量的标准差 print(vals[:,2].std()) # 输出应接近50
内容的提问来源于stack exchange,提问作者Sploogemeister
相关产品推荐
相关产品推荐

