标签: plm

R中的固定效应回归(具有非常多的虚拟变量)

当虚拟变量的数量导致模型矩阵超过R最大向量长度时,是否有一种简单的方法可以在R中进行固定效应回归?例如,

> m <- lm(log(bid) ~ after + I(after*score) + id, data = data)
Error in model.matrix.default(mt, mf, contrasts) : 
cannot allocate vector of length 905986769
Run Code Online (Sandbox Code Playgroud)

其中id是一个因子(并且是导致上述问题的变量).

我知道我可以通过并取消所有数据,但这会抛出标准错误(是的,你可以用手动计算SE的"df"调整,但我想最小化我的概率引入新的错误.我看过plm软件包,但它似乎只针对具有时间组件的经典面板数据而设计,这不是我的数据结构.

r plm

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

测试面板数据中的多重共线性R

我正在使用plm包中运行面板数据回归,R并希望控制解释变量之间的多重共线性.
我知道-package中有vif()函数car,但据我所知,它不能处理面板数据输出.
plm可以做其他的诊断,如单位根测试,但我发现没有方法来计算多重.

有没有办法计算类似的测试vif,或者我可以只将每个变量视为时间序列,省略面板信息并使用car包运行测试?

我无法透露数据,但问题应与所有面板数据模型相关.
该维度大约为1,000个观测值,超过50个时间段.
我使用的代码如下所示:

pdata <- plm.data(RegData, index=c("id","time"))
fixed <- plm(Y~X, data=pdata, model="within")
Run Code Online (Sandbox Code Playgroud)

然后

vif(fixed) 
Run Code Online (Sandbox Code Playgroud)

返回错误.


先感谢您.

regression r panel-data plm

5
推荐指数
1
解决办法
7937
查看次数

如何使用lfe包计算动态面板模型

我试图估计一个具有滞后和多组效应的大型动态固定效果面板数据模型.

我知道包中的pseries对象plm可以处理具有滞后的面板回归.

library(plm)
data("EmplUK", package = "plm")
Em <- pdata.frame(EmplUK)
plm(emp~output+capital + lag(wage, 1),data=Em,model="within")
Run Code Online (Sandbox Code Playgroud)

lfe面板对象的包装中是否有类似的解决方案,以便我可以利用提供的快速性lfe

r lfe xts plm

5
推荐指数
1
解决办法
1057
查看次数

系统与 pgmm 完全单一(包 plm)

我正在尝试pgmm使用 EmplUK 数据集按照在线示例运行回归(Arellano Bond estimator)。

我的数据集不平衡,有一些缺失值(我也删除了,没有任何区别)。这是来自 R' 数据框的粘贴。

 row.names ID   Year    p       I
    1   23  1   1992    NA      NA
    2   22  1   1993    17.01   NA
    3   21  1   1994    15.86   NA
    4   20  1   1995    17.02   7.512347
    5   19  1   1996    20.64   7.685104
    6   18  1   1997    19.11   12.730282
    7   17  1   1998    12.76   12.633871
    8   16  1   1999    17.90   7.416381
    9   15  1   2000    28.66   6.396114
    10  14  1   2001    24.46   9.213729
    11  13  1   2002    24.99 …
Run Code Online (Sandbox Code Playgroud)

r plm

5
推荐指数
0
解决办法
1203
查看次数

使用plm(具有固定效果)的R中的聚类标准错误

我试图在R的plm包中运行具有固定效果的回归model = 'within',同时具有聚类标准错误.使用Cigar来自的数据集plm,我正在运行:

require(plm)
require(lmtest)
data(Cigar)
model <- plm(price ~ sales + factor(state), model = 'within', data = Cigar)
coeftest(model, vcovHC(model, type = 'HC0', cluster = 'group'))

  Estimate Std. Error t value Pr(>|t|)    
sales  -1.21956    0.21136 -5.7701 9.84e-09
Run Code Online (Sandbox Code Playgroud)

这与我使用Stata(将Cigar文件编写为.dta)得到的结果略有不同:

use cigar

xtset state year

xtreg price sales, fe vce(cluster state)


price   Coef.   Std. Err.   t   P>t [95% Conf.  Interval]

sales   -1.219563   .2137726    -5.70   0.000   -1.650124   -.7890033
Run Code Online (Sandbox Code Playgroud)

即,标准误差和T统计量是不同的.我尝试用不同的"类型"重新运行R代码,但没有一个给出与Stata相同的结果.我错过了什么吗?

r standard-error stata plm

5
推荐指数
2
解决办法
4969
查看次数

plm 的观星者错误

stargazerplm结合使用时出现错误。对于普通的线性模型,一切正常。下面是一个例子:

library(plm)
library(stargazer)

# create test data
dat <- data.frame(y=runif(1000),
                  x1=runif(1000),
                  id=rep(1:50, each=20),
                  time=rep(1:20, times=50))
pdat <- pdata.frame(dat, index=c("id", "time"))

# estimate linear model
lm_1 <- lm(y~x1, data = pdat) 
summary(lm_1)
stargazer(lm_1, type="text", keep.stat = c("n"))

# estimate fixed effects model
plm_1 <- plm(y ~ x1, data=pdat, model = "within", effect = "individual")
summary(plm_1)
stargazer(plm_1, type="text", keep.stat = c("n"))
Run Code Online (Sandbox Code Playgroud)

最后一次调用返回

stargazer(plm_1, type="text", keep.stat = c("n"))
Error in UseMethod("logLik") : 
  no applicable method for 'logLik' applied to …
Run Code Online (Sandbox Code Playgroud)

r stargazer plm

5
推荐指数
0
解决办法
1311
查看次数

在 R 中计算内部、之间或整体 R 平方

我正在从 Stata 迁移到 R ( plm package) 以进行面板模型计量经济学。在 Stata 中,随机效应等面板模型通常报告内部、之间和整体 R 平方。

我发现plm随机效应模型中报告的 R 平方对应于内部 R 平方。那么,有没有办法使用plm packagein R获得整体和 R 平方之间的关系?

请参阅 R 和 Stata 的相同示例:

library(plm)
library(foreign) # read Stata files
download.file('http://fmwww.bc.edu/ec-p/data/wooldridge/wagepan.dta','wagepan.dta',mode="wb")
wagepan <- read.dta('wagepan.dta')

# Random effects
plm.re <- plm(lwage ~ educ + black + hisp + exper + expersq + married + union + d81 + d82 + d83 + d84 + d85 + d86 + d87,
              data=wagepan,
              model='random',
              index=c('nr','year'))
summary(plm.re)
Run Code Online (Sandbox Code Playgroud)

在斯塔塔: …

r stata panel-data plm

5
推荐指数
1
解决办法
3392
查看次数

如何在分组变量的条件下回归单个系列的多个系列?

我觉得我的基本问题是如何在一个系列中回归多个系列.虽然我的系列时间不相等,但即使我使用相同的时间长度系列进行库存和基准测试(我可以根据需要提供我手动相等的数据),我收到错误.我想估计一个市场模型(即,对于所有股票,每天对基准回报的股票回报进行回归),并以长格式从回归中得出β值的数据框.因此,对于提供的样本,β值数据框中将有4个beta值(ABC为2,XYZ为2).这是两个股票价格的样本

idf <- structure(list(Firm = c("ABC", "ABC", "ABC", "ABC", "ABC", "ABC", "ABC",
  "ABC", "ABC", "ABC", "ABC", "ABC", "ABC", "ABC", "ABC", "XYZ", "XYZ", "XYZ",
  "XYZ", "XYZ", "XYZ", "XYZ", "XYZ", "XYZ", "XYZ", "XYZ", "XYZ", "XYZ", "XYZ",
  "XYZ"), Date = structure(c(NA, 1451642400, 1451646000, 1451649600, 1451653200,
  1451656800, 1451660400, 1451664000, 1451898000, 1451901600, 1451905200,
  1451908800, 1451912400, 1451916000, 1451919600, NA, 1451642400, 1451646000,
  1451649600, 1451653200, 1451656800, 1451660400, 1451664000, 1451898000,
  1451901600, 1451905200, 1451908800, 1451912400, 1451916000, 1451919600),
  tzone = "UTC", class = c("POSIXct", "POSIXt")), Price = c(1270.9, 1277,
  1273.25, 1273.85, …
Run Code Online (Sandbox Code Playgroud)

regression r xts dplyr plm

5
推荐指数
1
解决办法
414
查看次数

使用 R 中的 plm 包进行具有集群稳健标准误差的 IV 估计

我正在使用面板数据的 plm 包来进行工具变量估计。但是,似乎不支持使用 vcovHC() 函数计算集群鲁棒标准误差。更具体地说,当我使用 vcovHC() 函数时,显示以下错误消息:

vcovG.plm 中的错误(x,type = type,cluster = cluster,l = 0,inner = >inner,:方法不适用于 IV

例子:

data("Wages", package = "plm")
IV <- plm(lwage ~ south + exp | wks + south,
      data = Wages, model = "pooling", index = 595)

vcvIV <- vcovHC(IV)
Run Code Online (Sandbox Code Playgroud)

根据这个帖子,有人在两年前进行了修复。问题有进展吗?我知道包“lfe”和“ivpack”允许计算用于 IV 估计的集群鲁棒标准误差,但它们都不允许随机效应/拦截。

r plm

5
推荐指数
1
解决办法
2438
查看次数

R 中的 plm 包 - 空模型,当只包含每个人不随时间变化的变量时

我有一个这样的数据框('数学')(有三种不同的方法,虽然只显示了一种) - 数据框

我正在尝试为 MathScore 创建一个多级增长模型,其中 VerbalScore 是一个独立的、时间不变的随机效应。

我相信 R 代码应该与此类似 -

random <- plm(MathScore ~ VerbalScore + Method, data=math, index=c("id","Semester"), 
              model="random")
Run Code Online (Sandbox Code Playgroud)

但是,运行此代码会导致以下错误:

plm.fit(object, data, model = "within", effect = effect) 中的错误:
空模型

我相信这是索引的问题,因为如果我使用以下代码将运行:

random <- plm(MathScore ~ VerbalScore + Method + Semester, data=math, index="id", 
              model="random")
Run Code Online (Sandbox Code Playgroud)

对于如何创建所描述的多级随机效应模型的任何建议,我将不胜感激。

r plm

5
推荐指数
1
解决办法
7072
查看次数

标签 统计

plm ×10

r ×10

panel-data ×2

regression ×2

stata ×2

xts ×2

dplyr ×1

lfe ×1

standard-error ×1

stargazer ×1