我在尝试使用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
我有一个小的N大T面板,我通过plm(面板线性回归模型)估算,具有固定的效果.
有没有办法获得新数据集的预测值?(我想估计我的样本子集的参数,然后使用它们来计算整个样本的模型隐含值).
谢谢!
请注意:我试图获取代码一起工作既时间与个人固定效应和不平衡的数据集.下面的示例代码适用于平衡数据集.
请参阅下面的编辑
我试图使用包手动计算固定效果模型的拟合值(具有个人和时间效应)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) 我想让一位同事复制一个第一差异线性面板数据模型,我用Stata和plm
R(或其他一些包)中的包来估计.
在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(时间和横截面)中有一个面板数据集,并且想要计算由两个维度聚类的标准误差,因为我的残差是双向相关的.谷歌搜索我发现http://thetarzan.wordpress.com/2011/06/11/clustered-standard-errors-in-r/提供了执行此操作的功能.它似乎有点特别,所以我想知道是否有一个已经过测试的包并且这样做了吗?
我知道sandwich
HAC标准错误,但它没有做双聚类(即沿着两个维度).
这是一个非常简单的问题,但我无法找到明确的答案,所以我想我会问它.我使用该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 …
我试图预测包含NA
s的数据的拟合值,并基于生成的模型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) 我在设置面板数据模型时遇到问题.
以下是一些示例数据:
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'吗?
提前感谢您的帮助!
我的数据框如下所示:
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的估计器的系数要快得多.
当我运行集群标准错误面板规范时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) plm ×10
r ×10
panel-data ×3
regression ×2
stata ×2
lag ×1
lfe ×1
na ×1
predict ×1
robustness ×1