首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不平衡面板上第一次差分回归的残差

不平衡面板上第一次差分回归的残差
EN

Stack Overflow用户
提问于 2016-09-07 08:07:01
回答 1查看 529关注 0票数 4

我试图使用plm来估计一些不平衡面板数据上的第一个差分模型。我的模型似乎奏效了,我得到了系数估计,但我想知道是否有一种方法可以得到每一次观测的残差(或拟合值)。

我遇到了两个问题,我不知道如何将残差附加到与它们相关的观察上,而且我似乎得到了一个不正确的残差数。

如果我使用model.name$residuals从估计模型中检索残差,就会得到一个比model.name$model更短的向量。

代码语言:javascript
复制
require(plm)
X <- rnorm(14)
Y <- c(.4,1,1.5,1.3,1,4,5,6.5,7.3,3.7,5,.7,4,6)
Time <- rep(1:5,times=2)
Time <- c(Time, c(1,2,4,5))
ID <- rep(1:2,each=5)
ID <- c(ID,c(3,3,3,3))
TestData <- data.frame("Y"=Y,"X"=X,"ID"=ID,"Time"=Time)
model.name <- plm(Y~X,data=TestData,index = c("ID","Time"),model="fd")

> length(model.name$residuals)
[1] 11
> nrow(model.name$model)
[1] 14

(注: ID=3缺少对t=3的观察)

查看model.name$model,我看到它包含所有的观测,包括ID的每个成员的t=1。在第一个差分中,t=1观测将被删除,因此在这种情况下,所有时间段的两个ID都应该有4个剩余的剩余时间周期。ID=3对于t=2应该有一个残留物,对于缺少的t=3没有一个,对于t=4没有一个,因为没有值(由于缺少t=3值),而对于t=5则是一个残差。

从这一点看,应该有10个残差,但我有11个。我想知道为什么会有这么多的残差,以及如何将残差连接到正确的索引(ID和时间)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-07 20:12:38

model="fd"的滞后是基于相邻的行,而不是时间索引的实际值。因此,如果您有非连续的时间段,这将给您意外的结果。为了避免这种情况,请在尊重滞后时间的同时进行差异,并估计模型。这些数据的不平衡性在这里并不值得关注。

从包plm的1.7.0版本开始,lag()函数根据每个默认时间段的值执行滞后(以前的默认值是相邻的行)。使用这个函数自己做滞后的事情。

继续你的例子:

代码语言:javascript
复制
pTestData <- pdata.frame(TestData, index=c("ID", "Time"))

pTestData$Y_diff <- plm::lag(pTestData$Y) - pTestData$Y
pTestData$X_diff <- plm::lag(pTestData$X) - pTestData$X
fdmod <- plm(Y_diff ~ X_diff, data = pTestData, model = "pooling")
length(residuals(fdmod)) # 10
nrow(fdmod$model)        # 10

我解释了在引用延迟函数时使用了plm::,因为其他几个包也有一个滞后函数(最显著的是statsdplyr),您希望在这里使用包plm中的一个。若要将残差增大到差异数据(实际用于计算模型),只需执行以下操作:dat <- cbind(fdmod$model, residuals(fdmod))

此外,您可能对函数is.pconsecutive感兴趣,以检查数据的机密性:

代码语言:javascript
复制
is.pconsecutive(pTestData)
#    1     2     3 
# TRUE  TRUE FALSE 

函数make.pconsecutive将通过插入缺少时间段的带有NA值的行来使数据连续。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39364471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档