如何从 R 代码中找到代数表达式?

How to find an algebraic expression from an R code?

我有以下双变量正态分布代码:

library(mnormt)

x     <- seq(-5, 5, 0.25) 
y     <- seq(-5, 5, 0.25)
mu    <- c(0, 0)
sigma <- matrix(c(2, -1, -1, 2), nrow = 2)
f     <- function(x, y) dmnorm(cbind(x, y), mu, sigma)
z     <- outer(x, y, f)

a) 我想知道根据上述代码得到的代数表达式z=f(x,y)是什么(请明确写出代数表达式)。 b) 实际上,matrix(c(2, -1, -1, 2), nrow = 2)中的数字2, -1, -12是代数表达式z=f(x,y)?

中的哪些参数

如果你想看源代码,可以去那里there。 我为您评论代码:

dmnorm <- function(x, mean=rep(0,d), varcov, log=FALSE)
{
    # number of variable
    d <- if(is.matrix(varcov)) ncol(varcov) else 1
    
    if(d==1) return(dnorm(x, mean, sqrt(varcov), log=log))
    
    x <- if (is.vector(x)) t(matrix(x)) else data.matrix(x)
    
    if(ncol(x) != d) stop("mismatch of dimensions of 'x' and 'varcov'")
    
    if(is.matrix(mean)) {
        if ((nrow(x) != nrow(mean)) || (ncol(mean) != d))
        stop("mismatch of dimensions of 'x' and 'mean'") }
    
    if(is.vector(mean)) mean <- outer(rep(1, nrow(x)), as.vector(matrix(mean,d)))
    
    # center 
    X  <- t(x - mean)
    
    # compute the inverse of sigma
    conc <- pd.solve(varcov, log.det=TRUE)
    
    # Q is the exponential part
    Q <- colSums((conc %*% X)* X)
    
    # compute the log determinant
    log.det <- attr(conc, "log.det")
    
    # log likelihood
    logPDF <- as.vector(Q + d*logb(2*pi) + log.det)/(-2)
    
    if(log) logPDF else exp(logPDF)
}

这是这个等式的严格应用:

由此而来 website.