[英]Regression model without predictors using plm in R?
我有一个不平衡面板数据表,其中包含变量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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.