R从plm对象中提取对数似然

R Extract Log Likelihood from a plm object

我想从 plm 对象中提取对数似然。

当使用基础 stats 包中的 logLik 函数与 lfe 包中的 felmfeols 时,它工作正常=18=] 包,但不包含任何 plm 对象,结果错误消息为:

Error in UseMethod("logLik") : 
  no applicable method for 'logLik' applied to an object of class "c('plm', 'panelmodel')"

我检查了一下 plm 不是 stats 包中定义的 class(参见 stats:::)。

我是否在概念上遗漏了什么(意识到这是 ML 估计)?比如,为什么 lfe 和 fixst 使它工作而 plm 不工作?有解决方法吗?

谢谢!

library(plm)
library(lfe)
library(fixest)
data("Produc", package = "plm")

# lfe
xx <- felm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp| state + year|0|0,data = Produc)
summary(xx)
logLik(xx)

# fixest
yy <- feols(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp| state + year,data = Produc)
summary(yy)
logLik(yy)

# PLM
zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,data = Produc, index = c("state","year"))
summary(zz)
logLik(zz)

我想我明白了:

object这里是一个plm对象,就像上面的zz

logLik.plm <- function(object){
  out <- -plm::nobs(object) * log(2 * var(object$residuals) * pi)/2 - deviance(object)/(2 * var(object$residuals))
  
  attr(out,"df") <- nobs(object) - object$df.residual
  attr(out,"nobs") <- plm::nobs(summary(object))
  return(out)
}

这应该也适用于 AIC 命令。

我创建了一个 public 要点 here