我想绘制一个两个变量的函数的曲线图,但是这个函数有一些我需要计算的参数。具体地说,这些参数是两个随机变量,它们遵循双变量正态分布,并且它们是相关的。就我的目的而言,我需要的是这两个变量之间的正向协方差。有没有可能我可以做一个循环或其他什么东西来获得一个总是假的协方差?我的努力如下
X=normrnd(3,0.25,2);
Y=normrnd(9,0.4,2);
covar=cov(X,Y);但是协方差是负的,我需要很多次才能找到有正向的情况。当然,我可以改变均值和标准差,但我想要更稳定的东西,这样可以保持协方差不变,并提供我的工作。我想过命令exprnd(mu,sz),但它不能解决我的问题。
发布于 2020-09-23 05:39:31
您可以使用内置的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(variable1,variable2))。
你可以在matlab中检查这一点,因为非对角线必须相同,但对角线不一定是相同的。因此,2x2单位矩阵(matlab中的eye(2)) 1,0;0,1指定了两个具有相等方差和零协方差的分布。或者,1(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中找到进一步的讨论。
https://stackoverflow.com/questions/64017834
复制相似问题