如何在Python中生成随机协方差矩阵?
How to generate a random covariance matrix in Python?
所以我想在给定以下条件的情况下为随机变量 X 生成一个 50 X 50 的协方差矩阵:
- 一个方差比其他方差大 10 倍
- X 的参数仅略微相关
在 Python/R 等中有没有办法做到这一点?或者有没有你能想到的可以满足这些要求的协方差矩阵?
感谢您的帮助!
好的,您只需要一个矩阵,随机性并不重要。这是根据您的描述构造矩阵的方法。从 50 x 50 的单位矩阵开始。将 10 分配给第一个(左上)元素。为所有其他元素分配一个小数字(我不知道什么适合您的问题,也许是 0.1?0.01?这取决于您)。现在取该矩阵并将其平方(即计算 transpose(X) . X ,其中 X 是您的矩阵)。急!您已经对特征值求平方,所以现在您有一个协方差矩阵。
如果小元素足够小,X已经是正定的。但是平方保证了这一点(假设没有零特征值,您可以通过计算行列式来验证这一点——如果行列式不为零,则没有零特征值)。
我假设您可以为这些操作找到 Python 个函数。
所以我想在给定以下条件的情况下为随机变量 X 生成一个 50 X 50 的协方差矩阵:
- 一个方差比其他方差大 10 倍
- X 的参数仅略微相关
在 Python/R 等中有没有办法做到这一点?或者有没有你能想到的可以满足这些要求的协方差矩阵?
感谢您的帮助!
好的,您只需要一个矩阵,随机性并不重要。这是根据您的描述构造矩阵的方法。从 50 x 50 的单位矩阵开始。将 10 分配给第一个(左上)元素。为所有其他元素分配一个小数字(我不知道什么适合您的问题,也许是 0.1?0.01?这取决于您)。现在取该矩阵并将其平方(即计算 transpose(X) . X ,其中 X 是您的矩阵)。急!您已经对特征值求平方,所以现在您有一个协方差矩阵。
如果小元素足够小,X已经是正定的。但是平方保证了这一点(假设没有零特征值,您可以通过计算行列式来验证这一点——如果行列式不为零,则没有零特征值)。
我假设您可以为这些操作找到 Python 个函数。