2

我想从 R 中的多元 t 分布生成随机变量。我正在使用具有从多元 t 分布生成随机变量mvtnorm的命令的包rmvt。现在我的问题是关于函数的语法以及能够操纵它来做我想做的事。该功能需要以下

rmvt(n, sigma = diag(2), df = 1, delta = rep(0, nrow(sigma)),
     type = c("shifted", "Kshirsagar"), ...)

其中 sigma 是相关矩阵。现在我遇到的问题是如何从具有均值 m 和协方差矩阵 S 的多元 t 分布中进行采样。以下是适当的语法吗?

rmvt(1,S,df=n) + m

或者

rmvt(1,R,df=n)*sigma + m

其中我的协方差矩阵可以分解为 S = sigma*R(即,R 是我的相关矩阵)。当我运行这两行代码时,我得到了不同的结果,所以这部分是我的困惑的根源。

4

1 回答 1

4

查看rmvt的帮助文件。有人说这sigma是尺度(不是相关)矩阵,而相关矩阵(仅定义为df>2)由 给出sigma * df/(df-2)。因此,您是否有一个预先指定的协方差矩阵S,那么您应该设置

sigma=S*(D-2)/D

哪里D是自由度。要从具有均值和协方差矩阵的多元 t 分布生成n样本,您可以将均值添加到调用之外,如您所示:mSrmvt

rmvt(n, sigma=S*(D-2)/D, df=D) + m 

或通过使用mu参数:

rmvt(n, mu=m, sigma=S*(D-2)/D, df=D)

编辑:无论出于何种原因,rmvt我的机器上都没有正确加载,所以我必须先输入这个才能正确加载函数:

rmvt <- bfp:::rmvt
于 2013-08-09T18:47:37.803 回答