问题描述
我想绘制两个变量函数的图,但是此函数具有一些我最初需要计算的参数。具体而言,这些参数是两个随机变量,它们遵循Bivaraite正态分布并且相互关联。为了我的目的,我需要的是这两个变量之间的假性协方差。我是否有可能总会循环或获得偏方协方差?我的努力如下
X=normrnd(3,0.25,2);
Y=normrnd(9,0.4,2);
covar=cov(X,Y);
但是协方差是负的,我需要很多次才能找出存在正的情况。当然,我可以更改均值和标准差,但我想更稳定一些,以保持协方差不变并提供工作。我想到了命令exprnd(mu,sz)
,但是它不能解决我的问题。
解决方法
您可以使用内置的matlab函数mvnrnd(多变量正态随机数)来生成这些数据。此功能很有用。
mu = [0,0]; % means of the distributions samples are drawn from
sigma = [1,0.6; 0.6,1]; % covariance of distributions (eye(2) for uncorrelated)
n = 25
[bivariate_data] = mvnrnd(mu,sigma,n);
https://www.mathworks.com/help/stats/mvnrnd.html#d122e544190
编辑:
Sigma是一个协方差矩阵,其中对角线是每个分布的方差,非对角线是两个分布之间的协方差(即[var(variable1),covar(variable1,variable2),var(variable2); covar (变量1,变量2)。
您可以在matlab中进行检查,因为非对角线必须相同,但是对角线不必相同。因此,2x2单位矩阵(matlab中的eye(2))[1,0; [0,1]指定两个具有相等方差和零协方差的分布。或者,ones(2)将是最大协方差。有趣的是,如果尝试指定[1,2; 2,1,],可以在https://stats.stackexchange.com/questions/69114/why-does-correlation-matrix-need-to-be-positive-semi-definite-and-what-does-it-m/69117中找到进一步的讨论。