如何解决在 R 中使用 plm 的没有预测变量的回归模型?
我有一个不平衡面板数据表,其中包含变量 ID
、year
和 outcome
。每个 ID
的数据跨度为 2005-2020 年,但每个 ID
不会拥有所有 15 年的数据。这是一个示例:
ID,year,outcome
1,2005,70
1,2006,73
1,2007,2008,68
2,65
2,71
2,64
2,2009,63
3,2011,78
3,2012,81
4,75
我想运行一个plm
回归模型没有预测变量(即截距的回归模型)。
我尝试运行以下命令,但收到错误消息“空模型”:
feModel <- plm(damMean ~ 1,data = finalDT,model = "within",index = c("sireID","year"))
# Error in plm.fit(data,model,effect,random.method,random.models,random.dfcor,:
empty model
这可以使用 R 中的 plm
包吗?
解决方法
我认为这与其说是一个编程问题,不如说是一个统计问题。此外,我认为这与其说是关于“plm”包本身的功能的问题,不如说是这种内模型是否有意义以及对模型内实施的技术估计方法。
模型内的plm(固定效应模型)不包含截距。其他一些统计软件包在其内部模型中具有某种程度的人为拦截(最显着的可能是 Stata,但也有 gretl)。您可能需要查看 ?plm::within_intercept
及其引用的文献,以了解有关模型内截距的更多详细信息。
让我们看看在仅将截距作为内部模型中的回归量的情况下会发生什么:
library("plm")
data("Grunfeld",package = "plm")
pGrun <- pdata.frame(Grunfeld)
plm(inv ~ 1,data = pGrun,model = "within") # errors with "empty model"
pGrun$int <- 1 # intercept
within_int <- Within(pGrun$int) # within transformation of intercept
# -> all zeros:
head(within_int)
## 1-1935 1-1936 1-1937 1-1938 1-1939 1-1940
## 0 0 0 0 0 0
all.equal(as.numeric(within_int),rep(0,200L),check.attributes = FALSE)
## TRUE
截距的内变换全为零,因此 plm 关于空模型的错误消息是正常的。 gretl 是一个具有模型内截距的计量经济学包,输出对这种仅截距模型的估计:
coefficient std. error t-ratio p-value
---------------------------------------------------------
const 145.958 7.68517 18.99 8.85e-046 ***
这个值是多少?这是因变量的均值
mean(pGrun$inv)
## 145.9582
或者,如果您想通过使用 plm
的模型估计得出该均值,您可以仅使用截距估计 "pooling"
模型:
plm(inv ~ 1,model = "pooling")
## Model Formula: inv ~ 1
## Coefficients:
## (Intercept)
## 145.96
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。