Tôi quan tâm đến việc làm thế nào người ta có thể tính toán một lượng tử của phân phối đa biến. Trong các hình, tôi đã rút ra 5% và 95% lượng tử của một phân phối chuẩn đơn biến nhất định (bên trái). Đối với phân phối chuẩn nhiều biến số bên phải, tôi tưởng tượng rằng một chất tương tự sẽ là một isoline bao quanh cơ sở của hàm mật độ. Dưới đây là một ví dụ về nỗ lực của tôi để tính toán điều này bằng cách sử dụng gói mvtnorm
- nhưng không thành công. Tôi cho rằng điều này có thể được thực hiện bằng cách tính toán một đường viền kết quả của hàm mật độ đa biến, nhưng tôi đã tự hỏi liệu có một sự thay thế nào khác ( ví dụ , tương tự qnorm
). Cảm ơn bạn đã giúp đỡ.
Thí dụ:
mu <- 5
sigma <- 2
vals <- seq(-2,12,,100)
ds <- dnorm(vals, mean=mu, sd=sigma)
plot(vals, ds, t="l")
qs <- qnorm(c(0.05, 0.95), mean=mu, sd=sigma)
abline(v=qs, col=2, lty=2)
#install.packages("mvtnorm")
require(mvtnorm)
n <- 2
mmu <- rep(mu, n)
msigma <- rep(sigma, n)
mcov <- diag(msigma^2)
mvals <- expand.grid(seq(-2,12,,100), seq(-2,12,,100))
mvds <- dmvnorm(x=mvals, mean=mmu, sigma=mcov)
persp(matrix(mvds,100,100), axes=FALSE)
mvqs <- qmvnorm(0.95, mean=mmu, sigma=mcov, tail = "both") #?
#ex. plot
png("tmp.png", width=8, height=4, units="in", res=400)
par(mfcol=c(1,2))
#univariate
plot(vals, ds, t="l")
qs <- qnorm(c(0.05, 0.95), mean=mu, sd=sigma)
abline(v=qs, col=2, lty=2)
#multivariate
pmat <- persp(seq(-2,12,,100), seq(-2,12,,100), matrix(mvds,100,100), axes=FALSE, shade=TRUE, lty=0)
cont <- contourLines(seq(-2,12,,100), seq(-2,12,,100), matrix(mvds,100,100), levels=0.05^2)
lines(trans3d(cont[[1]]$x, cont[[1]]$y, cont[[1]]$level, pmat), col=2, lty=2)
dev.off()