numpy.random.multivariate_normal
さまざまな matplotlib プロット アプローチをテストするために、x 座標と y 座標の相関配列を生成したいのですが、必要なサンプルを取得できないため、どこかで失敗しています。理想的には、x の値は -0.51 から 51.2 の間、y の値は 0.33 から 51.6 の間である必要があります (ただし、後でプロットを制約できるため、同じ範囲で問題ないと思います) が、どういう意味かはわかりません ( 0, 0?) と共分散値を使用して、関数からこれらのサンプルを取得する必要があります。
17916 次
1 に答える
32
名前が意味するようnumpy.random.multivariate_normal
に、正規分布を生成します。これは、任意の間隔外のポイントを見つける可能性が 0 でないことを意味します。相関のある一様分布を生成できますが、これはもう少し複雑です。考えられる 2 つの方法については、こちらをご覧ください。
正規分布を使用する場合は、半区間が 3 つの標準偏差に対応するようにシグマを設定できます (必要に応じて悪い点を除外することもできます)。このようにして、間隔内に最大 99% のポイントが含まれます。例:
import numpy as np
from matplotlib.pyplot import scatter
xx = np.array([-0.51, 51.2])
yy = np.array([0.33, 51.6])
means = [xx.mean(), yy.mean()]
stds = [xx.std() / 3, yy.std() / 3]
corr = 0.8 # correlation
covs = [[stds[0]**2 , stds[0]*stds[1]*corr],
[stds[0]*stds[1]*corr, stds[1]**2]]
m = np.random.multivariate_normal(means, covs, 1000).T
scatter(m[0], m[1])
于 2013-09-08T13:49:49.960 に答える