R 从多元t分布生成随机变量

R 从多元t分布生成随机变量,r,R,我想从R中的多元t分布生成随机变量。我正在使用mvtnorm包,它有命令rmvt从多元t分布生成随机变量。现在我的问题是关于函数的语法,以及是否能够操纵它来做我想要的事情。该函数需要以下内容 rmvt(n, sigma = diag(2), df = 1, delta = rep(0, nrow(sigma)), type = c("shifted", "Kshirsagar"), ...) 其中sigma是一个相关矩阵。现在我遇到的问题是如何从均值为m、协方差矩阵为S的多元t分布中

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

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

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

看一看。据说sigma是尺度而非相关矩阵,相关矩阵(仅定义为df>2)由sigma*df/df-2给出。因此,如果你有一个预先指定的协方差矩阵,那么你应该设置

sigma=S*(D-2)/D
其中D是自由度。要从具有均值m和协方差矩阵S的多元t分布生成n个样本,您可以将均值添加到rmvt调用之外,如您所示:

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
看一看这张照片。据说sigma是尺度而非相关矩阵,相关矩阵(仅定义为df>2)由sigma*df/df-2给出。因此,如果你有一个预先指定的协方差矩阵,那么你应该设置

sigma=S*(D-2)/D
其中D是自由度。要从具有均值m和协方差矩阵S的多元t分布生成n个样本,您可以将均值添加到rmvt调用之外,如您所示:

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