首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matlab中获得两个变量之间的正协方差?

如何在matlab中获得两个变量之间的正协方差?
EN

Stack Overflow用户
提问于 2020-09-23 05:19:43
回答 1查看 46关注 0票数 1

我想绘制一个两个变量的函数的曲线图,但是这个函数有一些我需要计算的参数。具体地说,这些参数是两个随机变量,它们遵循双变量正态分布,并且它们是相关的。就我的目的而言,我需要的是这两个变量之间的正向协方差。有没有可能我可以做一个循环或其他什么东西来获得一个总是假的协方差?我的努力如下

代码语言:javascript
复制
X=normrnd(3,0.25,2);
Y=normrnd(9,0.4,2);
covar=cov(X,Y);

但是协方差是负的,我需要很多次才能找到有正向的情况。当然,我可以改变均值和标准差,但我想要更稳定的东西,这样可以保持协方差不变,并提供我的工作。我想过命令exprnd(mu,sz),但它不能解决我的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-23 05:39:31

您可以使用内置的matlab函数mvnrnd (多变量-正态-随机数)生成这些数据。这个函数非常有用。

代码语言:javascript
复制
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中找到进一步的讨论。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64017834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档