2013-09-08 5 views
11

さまざまなmatplotlibプロット手法をテストするために、xとy座標の相関配列を生成したいと思いますが、どこかで失敗します。numpy.random.multivariate_normal私に必要なサンプルをくれて。理想的には、x値は-0.51と51.2の間、y値は0.33と51.6の間に設定することをお勧めします(後でプロットを制限することができるので、等しい範囲がOKです)。しかし、 0、0?)と共分散値Iは関数からこれらのサンプルを得るために使用すべきである。Numpyを使ってランダムな相関xとy点を生成する

答えて

20

名前が示すように、numpy.random.multivariate_normalは正規分布を生成します。つまり、指定された間隔の外にポイントを見つける確率はゼロです。相関のある一様分布を生成することができますが、これはもう少し複雑です。 2つの可能な方法についてはhereをご覧ください。

標準分布にしたい場合は、半分の間隔が3標準偏差に対応するようにsigmasを設定できます(必要に応じて悪い点を除外することもできます)。この方法では、あなたの区間内のあなたのポイントの〜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]) 

enter image description here

関連する問題