标签: plm

具有PLM包的异方差性强大的标准误差

我在尝试使用Stata后学习R,我必须说我喜欢它.但现在我遇到了一些麻烦.我即将对Panel Data进行一些多次回归,因此我正在使用该plm软件包.

现在我想plm在R中获得与我使用lm函数和Stata时相同的结果,当我执行异方差性稳健和实体固定回归时.

比方说,我有一个变量面板数据集Y,ENTITY,TIME,V1.

我用这段代码在R中得到了相同的标准错误

lm.model<-lm(Y ~ V1 + factor(ENTITY), data=data)
coeftest(lm.model, vcov.=vcovHC(lm.model, type="HC1))
Run Code Online (Sandbox Code Playgroud)

就像我在Stata中执行此回归一样

xi: reg Y V1 i.ENTITY, robust
Run Code Online (Sandbox Code Playgroud)

但是,当我使用plm包执行此回归时,我得到其他标准错误

plm.model<-plm(Y ~ V1 , index=C("ENTITY","YEAR"), model="within", effect="individual", data=data)
coeftest(plm.model, vcov.=vcovHC(plm.model, type="HC1))
Run Code Online (Sandbox Code Playgroud)
  • 我错过了设置一些选项吗?
  • plm模型是否使用其他类型的估计,如果是,如何?
  • 我可以在某种程度上使用plm与Stata 相同的标准错误, robust

r robustness standard-error stata plm

13
推荐指数
2
解决办法
7514
查看次数

R中是否存在PLM的预测函数?

我有一个小的N大T面板,我通过plm(面板线性回归模型)估算,具有固定的效果.

有没有办法获得新数据集的预测值?(我想估计我的样本子集的参数,然后使用它们来计算整个样本的模型隐含值).

谢谢!

r plm

12
推荐指数
3
解决办法
7897
查看次数

plm:使用fixef()手动计算固定效果twoways模型的拟合值

请注意:我试图获取代码一起工作时间与个人固定效应和不平衡的数据集.下面的示例代码适用于平衡数据集.

请参阅下面的编辑

我试图使用包手动计算固定效果模型的拟合值(具有个人和时间效应)plm.这更像是一个确认我理解模型和包的机制的练习,我知道我可以从plm对象中获取拟合值,来自两个相关问题(这里这里).

从小plm插图(第2页),基础模型是:

y _it = alpha + beta _transposed*x _it +(mu _i + lambda _t + epsilon _it)

其中mu_i是错误术语的单独组成部分(又名"个人效应"),lambda_t是"时间效应".

固定效果可以通过使用提取fixef(),我认为我可以使用它们(连同自变量)来计算模型的拟合值,使用(使用两个独立变量)这样:

fit _it = alpha + beta _1*x1 + beta _2*x2 + mu _i + lambda _t

这是我失败的地方 - 我得到的值远不及拟合值(我得到的是实际值和模型对象中残差之间的差异).首先,我没有看到alpha任何地方.我尝试使用固定效果显示为与第一个,平均值等不同,但没有成功.

我错过了什么?它很可能是对模型的误解,或代码中的错误,我担心...提前谢谢.

PS:其中一个相关的问题提示pmodel.response()应该与我的问题有关(以及没有plm.fit功能的原因),但是它的帮助页面并没有帮助我理解这个功能实际上做了什么,我找不到任何例子如何解释它产生的结果.

谢谢!

我所做的示例代码:

library(data.table); library(plm)

set.seed(100)
DT <- data.table(CJ(id=c("a","b","c","d"), time=c(1:10)))
DT[, x1:=rnorm(40)] …
Run Code Online (Sandbox Code Playgroud)

r plm

11
推荐指数
1
解决办法
3405
查看次数

R和Stata中的第一差分线性面板模型方差

我想让一位同事复制一个第一差异线性面板数据模型,我用Stata和plmR(或其他一些包)中的包来估计.

在Stata中,xtreg没有第一个差异选项,所以我运行:

reg D.(y x), nocons cluster(ID)
Run Code Online (Sandbox Code Playgroud)

在R中,我正在做:

plm(formula = y ~ -1 + x, data = data, model = "fd", index = c("ID","Period"))
Run Code Online (Sandbox Code Playgroud)

系数匹配,但R中的标准误差大于Stata中的标准误差.我查看了plm帮助和pdf文档,但我必须遗漏一些东西.

r standard-error stata plm

10
推荐指数
1
解决办法
1万
查看次数

面板数据的双集群标准错误

我在R(时间和横截面)中有一个面板数据集,并且想要计算由两个维度聚类的标准误差,因为我的残差是双向相关的.谷歌搜索我发现http://thetarzan.wordpress.com/2011/06/11/clustered-standard-errors-in-r/提供了执行此操作的功能.它似乎有点特别,所以我想知道是否有一个已经过测试的包并且这样做了吗?

我知道sandwichHAC标准错误,但它没有做双聚类(即沿着两个维度).

regression r standard-error panel-data plm

8
推荐指数
4
解决办法
6026
查看次数

在plm中向前滞后

这是一个非常简单的问题,但我无法找到明确的答案,所以我想我会问它.我使用该plm包来处理面板数据.我试图使用该lag函数及时滞后变量FORWARD(默认是从前一个句点检索值,我想要NEXT中的值).我发现了一些旧的文章/问题(大约2009年),这表明这可以k=-1作为一个论点使用.但是,当我尝试这个时,我收到一个错误.

示例代码:

library(plm)
df<-as.data.frame(matrix(c(1,1,1,2,2,3,20101231,20111231,20121231,20111231,20121231,20121231,50,60,70,120,130,210),nrow=6,ncol=3))
names(df)<-c("individual","date","data")
df$date<-as.Date(as.character(df$date),format="%Y%m%d")
df.plm<-pdata.frame(df,index=c("individual","date"))
Run Code Online (Sandbox Code Playgroud)

滞后:

lag(df.plm$data,0)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31 
         50           60           70          120          130          210

lag(df.plm$data,1)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31 
         NA           50           60           NA          120           NA

lag(df.plm$data,-1)
##returns
Error in rep(1, ak) : invalid 'times' argument
Run Code Online (Sandbox Code Playgroud)

我还读到了plm.data已经取代pdata.frame某些应用程序的内容plm.但是,plm.data似乎根本没有使用该lag功能:

df.plm<-plm.data(df,indexes=c("individual","date"))
lag(df.plm$data,1)
##returns
[1]  50  60  70 120 130 210
attr(,"tsp")
[1] 0 5 1
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何帮助.如果有人有另外一个包裹用于滞后的建议,我会全力以赴.然而,我确实喜欢plm …

r lag plm

8
推荐指数
1
解决办法
4332
查看次数

如何在面板数据回归中处理NA?

我试图预测包含NAs的数据的拟合值,并基于生成的模型plm.这是一些示例代码:

require(plm)
test.data <- data.frame(id=c(1,1,2,2,3), time=c(1,2,1,2,1), 
   y=c(1,3,5,10,8), x=c(1, NA, 3,4,5))
model <- plm(y ~ x, data=test.data, index=c("id", "time"), 
       model="pooling", na.action=na.exclude)
yhat <- predict(model, test.data, na.action=na.pass)
test.data$yhat <- yhat
Run Code Online (Sandbox Code Playgroud)

当我运行最后一行时,我收到一条错误,指出替换有4行而数据有5行.

我不知道如何获得预测返回长度为5的向量...

如果不是运行plm我运行lm(如下面的行),我得到预期的结果.

model <- lm(y ~ x, data=test.data, na.action=na.exclude)
Run Code Online (Sandbox Code Playgroud)

r predict na panel-data plm

8
推荐指数
1
解决办法
3189
查看次数

R:plm - 年固定效应 - 年和季度数据

我在设置面板数据模型时遇到问题.

以下是一些示例数据:

library(plm)

id <- c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2)
year <- c(1999,1999,1999,1999,2000,2000,2000,2000,1999,1999,1999,1999,2000,2000,2000,2000)
qtr <- c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)
y <- rnorm(16, mean=0, sd=1)
x <- rnorm(16, mean=0, sd=1)

data <- data.frame(id=id,year=year,qtr=qtr,y_q=paste(year,qtr,sep="_"),y=y,x=x)
Run Code Online (Sandbox Code Playgroud)

我运行以下回归,使用'id'作为单个索引,'year'作为时间索引:

reg1 <- plm(y ~ x, data=data,index=c("id", "year"), model="within",effect="time")
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误:

重复的couple(time-id)pdim.default中的错误(index [[1]],index [[2]]):

所以为了解决这个问题,我使用了'y_q'的组合变量:

reg1 <- plm(y ~ x, data=data,index=c("id", "y_q"), model="within",effect="time")
Run Code Online (Sandbox Code Playgroud)

但这是我的问题 - 我只想要一年的固定效果,而不是一年四季.

还有另一种方法可以解决早期问题,而不是制作关系指数'y_q'吗?

提前感谢您的帮助!

regression r linear-regression plm

8
推荐指数
1
解决办法
1万
查看次数

采用plm包装的重量

我的数据框如下所示:

unique.groups<- letters[1:5]
unique_timez<- 1:20
groups<- rep(unique.groups, each=20)
my.times<-rep(unique_timez, 5)

play.data<- data.frame(groups, my.times, y= rnorm(100), x=rnorm(100), POP= 1:100)
Run Code Online (Sandbox Code Playgroud)

我想运行以下加权回归:

plm(y~x + factor(my.times) , 
data=play.data, 
index=c('groups','my.times'), model='within', weights= POP)
Run Code Online (Sandbox Code Playgroud)

但我不相信plm包允许重量.答案我正在寻找下面模型中的系数:

fit.regular<- lm(y~x + factor(my.times) + factor(my.groups),
weights= POP, data= play.data)
desired.answer<- coefficients(fit.regular)
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找plm包的答案,因为使用更大的数据集和许多组获得带有plm的估计器的系数要快得多.

r linear-regression panel-data plm

8
推荐指数
1
解决办法
1427
查看次数

plm与lfe不同的聚类标准错误

当我运行集群标准错误面板规范时plm,lfe我得到的结果在第二个有效数字上有所不同.有谁知道为什么他们的SE计算不同?

set.seed(572015)
library(lfe)
library(plm)
library(lmtest)
# clustering example
x <- c(sapply(sample(1:20), rep, times = 1000)) + rnorm(20*1000, sd = 1)
y <- 5 + 10*x + rnorm(20*1000, sd = 10) + c(sapply(rnorm(20, sd = 10), rep, times = 1000))
facX <- factor(sapply(1:20, rep, times = 1000))
mydata <- data.frame(y=y,x=x,facX=facX, state=rep(1:1000, 20))
model <- plm(y ~ x, data = mydata, index = c("facX", "state"), effect = "individual", model = "within")
plmTest <- coeftest(model,vcov=vcovHC(model,type = "HC1", cluster="group"))
lfeTest …
Run Code Online (Sandbox Code Playgroud)

r lfe plm

8
推荐指数
1
解决办法
4698
查看次数

标签 统计

plm ×10

r ×10

panel-data ×3

standard-error ×3

linear-regression ×2

regression ×2

stata ×2

lag ×1

lfe ×1

na ×1

predict ×1

robustness ×1