0

我尝试为数据集运行 MLE。我得到了与 glm 相同的系数。我通过在 optim 中使用 hessian 矩阵的结果来计算渐近协方差矩阵,甚至没有得到与协方差矩阵 glm 几乎相同的结果。我的错误在哪里?谢谢!

 logLikePois <- function(y, x, parameter) {

      betaKoef <- parameter

      lambda <- exp(betaKoef %*% t(x))

      logLikeliHood <- sum(dpois(y, lambda, log = TRUE))

      return(-logLikeliHood)

    }

    grad <- function (y,x,parameter){
      betaKoef <- parameter

      lambda <- exp(betaKoef%*%t(x))
      gradient <-  -((y-lambda)%*%(x))
      return(gradient)
    }

    data(discoveries)
    disc <- data.frame(count=as.numeric(discoveries),
                       year=seq(0,(length(discoveries)-1),1))

    yearSqr <- disc$year^2

    formula <- count~  year + yearSqr

    form <- formula(formula)

    model <- model.frame(formula, data = disc)

    x <- model.matrix(formula, data = disc)

    y <- model.response(model)

    parFullModell <- rep(0,ncol(x))

    optimierung <- optim(par = parFullModell,gr=grad, fn = logLikePois,
                         x = x, y = y, method = "BFGS" ,hessian = TRUE)

    covVar <- solve(optimierung$hessian)
    covVar
    TEST <- summary(glm(count ~ year + yearSqr,family = "poisson", disc))
    TEST$cov.unscaled
4

0 回答 0