如何从多元正态分布创建多个观测值

  • 本文关键字:个观 创建 正态分布 python
  • 更新时间 :
  • 英文 :


我正在尝试从多元正态分布(平均值,I(创建n = 100个观测值x,而x是一个(2,(向量,并且已知均值遵循另一个多元分布(([0,0],sigma((。我怎样才能实现这些目标?我被困在np.random.multivariate_normal功能中的尺寸部分,似乎我从未设置过我想要的尺寸。

mean_mean = np.array([0,0])
mean_sigma = np.array([[0.1,0],[0,0.1]])
mu = np.random.multivariate_normal(m0,S0,1).reshape(2,)
u = np.array([0,0])
I = np.array([[1,0],[0,1]])
x = np.random.multivariate_normal(u,I,100)

由于我们不知道均值的值,而只知道均值服从某种分布,因此我们首先需要制作均值的n=100样本,我们可以这样做:

import numpy as np
samples = 100
mean_mean = np.array([0, 0])
mean_sigma = np.array([[0.1, 0], [0, 0.1]])
mu = np.random.multivariate_normal(mean_mean, mean_sigma, samples)

有了这个,我们可以对所需的x值进行采样。不幸的是,我们传递给multivariate_normal的平均值必须是 1 维的,因此我们无法通过不同的平均值对绘制进行矢量化。相反,在这里,我循环讨论给出我们x值的方法。

I = np.array([[1, 0], [0, 1]])
x = np.zeros([samples, 2])
for i in range(samples):
    x[2*i:2*(i+1)] = np.random.multivariate_normal(mu[i], I, 1)

编辑

经过一番思考,很容易矢量化x的吸引力。为此,我们将从标准多元正态中汲取并变换输出。

x = np.random.multivariate_normal(np.zeros(2), I, samples)
x += mu

最新更新