R从plm对象中提取对数似然
R Extract Log Likelihood from a plm object
我想从 plm
对象中提取对数似然。
当使用基础 stats
包中的 logLik
函数与 lfe
包中的 felm
或 feols
时,它工作正常=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。
我想从 plm
对象中提取对数似然。
当使用基础 stats
包中的 logLik
函数与 lfe
包中的 felm
或 feols
时,它工作正常=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。