1

我想计算多元线性回归的对数似然。我不确定这段代码是否正确。

我已经使用 mvtnorm r 包中的 dmvnorm 函数计算了对数似然性。

sdmvn_mle <- function(obj){
  sdmvn_mle_1 <- apply(obj$residuals^2,2,mean)
  sdmvn_mle_2 <- mean(residuals(obj)[,1] * residuals(obj)[,2])
  return(matrix(c(sdmvn_mle_1[1], sdmvn_mle_2, sdmvn_mle_2, sdmvn_mle_1[2]), nrow = 2))
} 


llmvn <- function(obj, sd){
  lr <- c()
  for( i in 1: nrow(obj$fitted.values)){
    lr <- c(lr, mvtnorm::dmvnorm(model.response(model.frame(obj))[i,], mean=fitted(obj)[i,], sigma=sd, log=TRUE))
  }
  return(sum(lr))
}

Y <- as.matrix(mtcars[,c("mpg","disp")])
(mvmod <- lm(Y ~ hp + drat + wt, data=mtcars))
# Call:
# lm(formula = Y ~ hp + drat + wt, data = mtcars)

# Coefficients:
#             mpg        disp     
# (Intercept)   29.39493   64.52984
# hp            -0.03223    0.66919
# drat           1.61505  -40.10238
# wt            -3.22795   65.97577

llmvn(mvmod, sdmvn_mle(mvmod))
# [1] -238.7386

我不确定结果是否正确。

此外,请让我知道是否有其他策略可以计算多元线性回归的对数似然。

4

0 回答 0