首页 文章

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

提问于
浏览
0

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

1 回答

  • 0

    请运行 ?rWishart 查看功能文档 .

    您可以阅读,您需要提供所需的样本数量 n (即 n 随机矩阵),自由度 df 和函数的参数 Sigma . 此外,您还需要确定所需随机矩阵的维数 .

    # 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)
    

    该函数生成一个1 x p x p数组(实际上是一个矩阵),但我们删除了不需要的维度 .

    您可以“手动”生成一个Wishart分布式矩阵

    library("mvtnorm")
    rgaus <- rmvnorm(n = df, mean = rep(0, p), sigma = Sigma)
    rwish2 <- crossprod(rgaus) # crossprod is the same as "t(rgaus) %*% rgaus"
    

    这应该有助于您更好地了解Wishart实际上的分布 . 它是来自具有方差 Sigma 的零均值多元正态分布的所谓散射矩阵 df 样本的分布 .

相关问题