如何解决如何使用 r 中的 S4 类输出进行代数计算,as.bob()
我在这里问了一个问题:
enter link description here
从那里我了解了 as.brob() 函数。
它帮助我避免在将 e 提高到非常大的数字时变得无穷大。 (我将在我编写的代码中使用 exp(as.brob()) 。
现在我的问题是,由于我要调用我的函数并为其提供输入并获得实数输出,因此它给了我一个 S4 类错误。
我怎样才能从 exp(as.brob)) 得到一个真正的值输出?
下面是矩阵法线密度函数:
dMNorm <- function(Y,Mu,Sigma,Psi,Sigma.inv = NULL,Psi.inv = NULL,Sigma.det = NULL,Psi.det = NULL){
if (is.null(Sigma.inv)) Sigma.inv <- solve(Sigma)
if (is.null(Psi.inv)) Psi.inv <- solve(Psi)
if (is.null(Sigma.det)) Sigma.det <- det(Sigma)
if (is.null(Psi.det)) Psi.det <- det(Psi)
p <- dim(Y)[1]
Tt <- dim(Y)[2]
den <- ((2 * pi)^((-1)* p * Tt / 2)) * (Sigma.det^((-1)* Tt / 2)) * (Psi.det^((-1)* p / 2)) *
exp(-1 / 2 * sum(diag(Sigma.inv %*% (Y - Mu) %*% Psi.inv %*% t(Y - Mu)))***)
#cat("dens",den,"\n")
return(den)
}
上面函数的第 9 行是我得到非常小的地方(一个非常大的数字的倒数)。为此我被引导使用 as.brob(),所以我将这部分更改为
1/exp(as.brob(1 / 2 * sum(diag(Sigma.inv %*% (Y - Mu) %*% Psi.inv %*% t(Y - Mu))))***)
但是当我想使用我的函数 dMNorm() 时,我得到:
**Phi.vector[i] 中的错误,我将不胜感激。
ps,不用说,LaplacesDemon 包中的 dmatrixnorm() 在这里不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。