Функция dmnorm () с несколькими средствами - PullRequest
1 голос
/ 23 октября 2011

Я искал ответ, но не нашел никакой информации об этой функции, кроме выключенного .R docs .

Если я хочу вычислить значения одномерного нормального распределения в одном и том же x с различными средними или стандартными отклонениями, я просто позвоню

dnorm(x, mu, sigma)

, гдеmu и sigma будут массивами с желаемыми средствами и сигмами.Есть ли способ выполнить тот же трюк с помощью функции dmnorm из модуля mnormt, когда x и mu являются векторами, а сигма - ковариационной матрицей?

PS: простите за мой английский, спасибо за ответы.

1 Ответ

3 голосов
/ 23 октября 2011

В 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...