如何计算R中的多元正态分布函数
这是我尝试的,利用这个包 样本数据集如何计算R中的多元正态分布函数,r,normal-distribution,R,Normal Distribution,这是我尝试的,利用这个包 样本数据集 库(mvtnorm) 种子集(2357) df首先,您不需要模拟任何东西来研究pmvnorm函数: pmvnorm(lower=rep(-Inf, 3), upper=c(80, Inf, Inf), mean=c(80,0,0), corr=diag(rep(1,3))) 结果是0.5,正如您预期的那样 你的平均向量大约是(79,0,0),所以让我们试试: pmvnorm(lower=rep(-Inf, 3), upper=c(80, Inf, Inf)
库(mvtnorm)
种子集(2357)
df首先,您不需要模拟任何东西来研究pmvnorm
函数:
pmvnorm(lower=rep(-Inf, 3), upper=c(80, Inf, Inf), mean=c(80,0,0), corr=diag(rep(1,3)))
结果是0.5
,正如您预期的那样
你的平均向量大约是(79,0,0)
,所以让我们试试:
pmvnorm(lower=rep(-Inf, 3), upper=c(80, Inf, Inf), mean=c(79,0,0), corr=diag(rep(1,3)))
现在的结果是0.8413447
。没什么事。通过只指定相关矩阵,您告诉软件假定所有方差都是统一的。在您的模拟中,方差分别为400、25和25:与您在参数中指定的值非常不同
正确的计算使用数据的协方差矩阵,而不是其相关矩阵:
pmvnorm(lower=rep(-Inf, 3), upper=c(80, Inf, Inf), mean=means, sigma=cov(df))
结果是0.5178412
,与数据完全一致。@Frank感谢您的帮助编辑。我会在以后的帖子中记住大会!
pmvnorm(lower=rep(-Inf, 3), upper=c(80, Inf, Inf), mean=c(79,0,0), corr=diag(rep(1,3)))
pmvnorm(lower=rep(-Inf, 3), upper=c(80, Inf, Inf), mean=means, sigma=cov(df))