В R наборы функций называются «пакетами».Если функция не векторизована в своих параметрах, вы можете передать ей один параметр как вектор с sapply
или как параллельный набор списка с mapply
.Таким образом, вы должны рассмотреть математическую проблему, особенно то, что «среднее» больше не является единственным числом, а скорее вектором, и что сигма (которую dmnorm
называет «varcov») больше не является единственным числом, а скорее матрицей.Первый пример на странице справки дает вам плотность 21 различных x, y, z и одну среднюю векторную и сигма-матрицу.
Используя этот пример в качестве отправной точки, составьте список из 7 x, y, х и 7 различных средств и сигм, а затем mapply
это до первых 7 пунктов в XYZ:
x <- seq(-2,4)
y <- 2*x+10
z <- x+cos(y)
mu <- c(1,12,2)
Sigma <- matrix(c(1,2,0,2,5,0.5,0,0.5,3), 3, 3)
lsig <- lapply(seq(-2,4)/10, "+", Sigma); lmean<-lapply(seq(-2,4)/10, "+",mu)
mapply(dmnorm, x=as.data.frame(t(cbind(x,y,z)[1:7,])), mean=lmean, varcov=lsig)
# V1 V2 V3 V4 V5 V6 V7
# 6.177e-06 6.365e-04 5.364e-03 3.309e-02 2.205e-02 6.898e-03 1.077e-03