在Python(3.3)中生成相关数据 [英] Generate correlated data in Python (3.3)
本文介绍了在Python(3.3)中生成相关数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
R中有一个函数(cm.rnorm.cor
,来自软件包CreditMetrics
),该函数采用样本量,变量量和相关矩阵来创建相关数据.
In R there is a function (cm.rnorm.cor
, from package CreditMetrics
), that takes the amount of samples, the amount of variables, and a correlation matrix in order to create correlated data.
Python是否有等效功能?
Is there an equivalent in Python?
推荐答案
numpy.random.multivariate_normal
is the function that you want.
示例:
import numpy as np
import matplotlib.pyplot as plt
num_samples = 400
# The desired mean values of the sample.
mu = np.array([5.0, 0.0, 10.0])
# The desired covariance matrix.
r = np.array([
[ 3.40, -2.75, -2.00],
[ -2.75, 5.50, 1.50],
[ -2.00, 1.50, 1.25]
])
# Generate the random samples.
y = np.random.multivariate_normal(mu, r, size=num_samples)
# Plot various projections of the samples.
plt.subplot(2,2,1)
plt.plot(y[:,0], y[:,1], 'b.')
plt.plot(mu[0], mu[1], 'ro')
plt.ylabel('y[1]')
plt.axis('equal')
plt.grid(True)
plt.subplot(2,2,3)
plt.plot(y[:,0], y[:,2], 'b.')
plt.plot(mu[0], mu[2], 'ro')
plt.xlabel('y[0]')
plt.ylabel('y[2]')
plt.axis('equal')
plt.grid(True)
plt.subplot(2,2,4)
plt.plot(y[:,1], y[:,2], 'b.')
plt.plot(mu[1], mu[2], 'ro')
plt.xlabel('y[1]')
plt.axis('equal')
plt.grid(True)
plt.show()
结果:
另请参阅《 SciPy食谱》中的 CorrelatedRandomSamples .
See also CorrelatedRandomSamples in the SciPy Cookbook.
这篇关于在Python(3.3)中生成相关数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文