多次元正規分布に従うd次元ベクトルからなる標本を作成(python.numpy)

どうも( ´_ゝ`)

前回python.pyplotでとんでもない間違いをしていたことを書きましたので,前の記事の修正版です.

import numpy as np
import matplotlib.pyplot as plt

# create random variance-covariance matrix (positive-definite symmetric matrix)
def rand_vcm(d):
    A = np.random.normal(size=(d,d)) + np.eye(d)
    return A.T.dot(A)

# settings
d = 2
mu = np.random.normal(size=d)
sigma0 = rand_vcm(d)
sigma1 = rand_vcm(d)
n0, n1 = 100, 100
N = n0, n1
x0 = np.random.multivariate_normal(mu, sigma0, n0)
x1 = np.random.multivariate_normal(mu, sigma1, n1)

plt.figure(1)
plt.plot(x0[:,0], x0[:,1], "ro")
plt.plot(x1[:,0], x1[:,1], "bx")
plt.show()

正しい結果はこんな感じになります. wpid-20131101_1.png

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中