我有一个不平衡面板数据表,其中包含变量ID
、year
和outcome
。每个ID
的数据跨度为2005-2020年,尽管每个ID
不会有全部15年的数据。这是一个示例:
ID, year, outcome
1, 2005, 70
1, 2006, 73
1, 2007, 70
1, 2008, 68
2, 2005, 65
2, 2006, 71
2, 2007, 68
2, 2008, 64
2, 2009, 63
3, 2011, 78
3, 2012, 81
4, 2008, 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, data = pGrun, model = "pooling")
## Model Formula: inv ~ 1
## Coefficients:
## (Intercept)
## 145.96