如何进行二维边距分配?

How to do a two dimensional margin distribution?

我被要求抽样然后做边际分布 $f(x_1,x_5)$ 并绘制它。我有以下有效的代码,但 dnorm 用于一维,所以我想知道是否需要将其更改为 dmvnorm。

如果是这样,我更改了 mu=mu.marginal、sigma=sigma.marginal,添加了一个 y 样本,但是 dmvnorm 说错误是因为非数组输入。感谢 Anye 的帮助。

多变量正态模型:

mu = c(1,2,6,2,-4)
sigma = c(1,2,1,0.5,2)
rho = diag(rep(1,5))
rho[1,2] = rho[2,1] = 0.4
rho[1,3] = rho[3,1] = -0.3
rho[1,4] = rho[4,1] = -0.7
rho[3,5] = rho[5,3] = 0.2
rho[4,5] = rho[5,4] = 0.5
Sigma = rho * (sigma %o% sigma)

我的代码:

p = c(1,5)
(mu.marginal = mu[p])
(Sigma.marginal = Sigma[p,p])
# p is one-dimensional: use dnorm() to compute marginal pdf
x = seq(-1,6,by=0.01)

fx = dnorm(x,mean=mu.marginal,sd=sqrt(Sigma.marginal))
ggplot(data=data.frame(x=x,y=fx),mapping=aes(x=x,y=y)) + geom_line(col="blue")

在我看来,您 mvtnorm 的方向是正确的,并且接近解决方案...我不确定您是如何 运行 进入非数组输入错误的,但这是我使用 mvtnorm:

得到的结果
set.seed(123)
dat <- mvtnorm::rmvnorm(1e4, mean = mu.marginal, sigma = Sigma.marginal)
dat <- as.data.frame(dat)

ggplot(dat, aes(x = V1, y = V2)) +
    geom_bin2d()

你可以看到它是相当球形的,这是你所期望的,因为 Sigma.marginal 的非对角线元素为 0(这意味着 x_1x_5 略微独立正态分布...)