如何从Wishart分布生成随机协方差矩阵

时间:2018-12-09 21:20:43

标签: r matrix random data-analysis covariance

我需要为项目生成一个n x n正定协方差矩阵。建议从Wishart发行中提取图纸。如何在R中生成理想的随机协方差矩阵,理想情况下也要使用Wishart分布。我已经尝试过rwishart()来获取值,但是需要更多帮助。谢谢

1 个答案:

答案 0 :(得分:0)

请通过运行?rWishart查看功能文档。

如您所见,您需要提供所需的样本数量n(即n个随机矩阵),自由度df和参数{{1 }}到函数。此外,您还需要确定所需随机矩阵的维数。

Sigma

该函数生成一个1 x p x p数组(有效地是一个矩阵),但是我们删除了不需要的维。

您可以通过

“手动”生成wishart分布矩阵
# Set parameters
n <- 1  # Number of matrices
p <- 5  # Dimension
df <- 10  # Degrees of freedom
Sigma <- toeplitz((p:1)/p)  # the matrix parameter of the distribution

# Draw n Wishart distributed matrices
rwish <- drop(rWishart(n, df, Sigma))
print(rwish)

应该可以帮助您更好地了解Wishart发行版的实际含义。它是方差为library("mvtnorm") rgaus <- rmvnorm(n = df, mean = rep(0, p), sigma = Sigma) rwish2 <- crossprod(rgaus) # crossprod is the same as "t(rgaus) %*% rgaus" 的零均值多元正态分布中所谓的散射矩阵df样本的分布。