如何对n个数X_1至X_n(一次抽样?)进行抽样,使其总和为给定的Y,并且知道X_i的无条件分布是(或将是)参数为u和西格玛的正态分布?
仅仅绘制n个正态分布的数字并将其zoom 到总Y似乎是不正确的.如果Y的绝对值非常大,它将倾向于产生n个异常值(相对于无条件分布),而不是-我不知道-1个异常值.另外:如果Y为零,则结果没有意义.
如何对n个数X_1至X_n(一次抽样?)进行抽样,使其总和为给定的Y,并且知道X_i的无条件分布是(或将是)参数为u和西格玛的正态分布?
仅仅绘制n个正态分布的数字并将其zoom 到总Y似乎是不正确的.如果Y的绝对值非常大,它将倾向于产生n个异常值(相对于无条件分布),而不是-我不知道-1个异常值.另外:如果Y为零,则结果没有意义.
我没有试过,但这对condMVNorm package应该是可行的.
让我解释一下n=2.我们从两个独立的高斯随机变量X1和X2开始.设置Y=X1+X2.这样就很容易得到(X1,Y)的方差-协方差矩阵.然后,对于condMVNorm,你可以在给定Y=y的情况下,从X1的条件分布中进行抽样.当然,你也可以得到X2,其中X2=Y-X1.
通过设置Y=X1+...+Xn并考虑随机向量(X_1,...,X_{n-1},Y),这可推广到任意整数n.
这是n=3的代码.
library(condMVNorm)
# X_i parameters
mu <- 1
sigma <- 2
# (X1, X2, X1+X2+X3) parameters
Mu <- c(mu, mu, 3 * mu)
Sigma <- rbind(
c(sigma^2, 0, sigma^2),
c(0, sigma^2, sigma^2),
c(sigma^2, sigma^2, 3*sigma^2)
)
# (X1, X2) given Y=y (where Y = X1+X2+X3)
y <- 5
# number of simulations
nsims <- 10
# simulations of (X1, X2) given Y=y
rcmvnorm(
nsims, Mu, Sigma, dependent.ind = c(1, 2), given.ind = 3, X.given = y
)