我一直在搜索答案,但除了off. R docs之外没有找到任何关于此功能的信息。
如果我想用不同的平均值或标准偏差来计算相同x中的1维正态分布的值,我只需要调用
dnorm(x, mu, sigma)
其中mu和sigma将是具有所需方法和sigma的数组。 当x和mu是向量而sigma是协变矩阵时,有没有办法用mnormt模块执行dmnorm函数的相同技巧?
P.S。:对不起我的英文,谢谢你的回答。
答案 0 :(得分:3)
在R中,函数集合称为“包”。如果函数未在其参数中进行矢量化,则可以将一个参数作为带有sapply
的向量或带有mapply
的并行列表集传递给它。所以你应该考虑数学问题,特别是'均值'不再是一个数字而是一个向量,而sigma(dmnorm
称之为'varcov')不再是一个数字而是一个数字矩阵。帮助页面中的第一个示例为您提供了21个不同的x,y,z和单个均值向量和sigma矩阵的密度。
使用该示例作为起点,列出7 x,y,x和7种不同的均值和sigma,然后将mapply
列为xyz中的前7项:
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