在生成多变量分布时,Python类似于mvrnorm的经验设置?

时间:2015-07-28 02:07:31

标签: python r numpy

因此,在R的{​​{1}}包中,有一个名为MASS的函数用于生成多变量分布。它有一个名为mvrnorm的参数,当设置为TRUE时,mu(均值)和sigma(协方差矩阵)指定了empler,而不是总体均值和协方差矩阵。

简而言之,当您取出样品时,平均值和方差与处方非常相似。

python中有类似的东西吗? 例如,我一直无法在numpy中找到这样的东西。

2 个答案:

答案 0 :(得分:1)

解决方案:

import numpy as np
import rpy2
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
MASS = importr('MASS')                       # Must use R: install.packages('MASS')
r = robjects.r

np.matrix(MASS.mvrnorm(n = 10, mu = r.c(0,0), Sigma = r.diag(2), empirical = True))

This helped.

答案 1 :(得分:0)

解决方案: mvrnorm等效于np.random.multivariate_normal

通过绘制生成的数据点可以在二维中看到此几何属性:

import matplotlib.pyplot as plt
import numpy as np

mean = [0, 0]
cov = [[1, 0], [0, 100]]  # diagonal covariance

x, y = np.random.multivariate_normal(mean, cov, 5000).T

plt.plot(x, y, 'x')
plt.axis('equal')
plt.show()

enter image description here

看看: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.multivariate_normal.html