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