标签: plm

R:避免summary.plm

我正在使用R来运行蒙特卡罗模拟,研究面板数据估计器的性能.因为我将进行大量的试验,所以我需要从我的代码中获得至少不错的性能.

Rprof在我的模拟的10次试验中使用表明,很大一部分时间花在了呼叫上summary.plm.前几行Rprofsummary提供如下:

$by.total
                            total.time total.pct self.time self.pct
"trial"                          54.48     100.0      0.00      0.0
"coefs"                          53.90      98.9      0.06      0.1
"model.matrix"                   36.72      67.4      0.10      0.2
"model.matrix.pFormula"          35.98      66.0      0.06      0.1
"summary"                        33.82      62.1      0.00      0.0
"summary.plm"                    33.80      62.0      0.08      0.1
"r.squared"                      29.00      53.2      0.02      0.0
"FUN"                            24.84      45.6      7.52     13.8
Run Code Online (Sandbox Code Playgroud)

我正在调用summary我的代码,因为我需要得到系数估计的标准误差以及系数本身(我可以从plm对象得到).我的电话看起来像

regression <- plm(g ~ y0 + Xit, data=panel_data, model=model, index=c("country","period"))

coefficients_estimated <- summary(regression)$coefficients[,"Estimate"]
ses_estimated <- summary(regression)$coefficients[,"Std. Error"]
Run Code Online (Sandbox Code Playgroud)

我有一种唠叨的感觉,这是一个巨大的浪费cpu时间,但我不知道R如何做的事情,以避免调用摘要.我很欣赏有关幕后发生的事情的任何信息,或者某些方法可以减少这种情况.

optimization profiling r summary plm

7
推荐指数
1
解决办法
922
查看次数

面板数据出错(plm)crossprod中的错误(t(X),beta)

我有一个df(一个pdata.frame对象):

head(df) :
        Company Year Kapitalinkomster Bank.o.kassa Obligationer      Lån       Aktier Placeringar.andra.ftg   Fodringar Reala.tillgångar
5-1948        5 1948         4.009780    0.8677505     40.12268 54.80897 1.4630271422           0.049855191 0.633959879     1.581139e+00
6-1948        6 1948         3.221688    0.9311173     71.16401 26.39038 0.4678139417           0.000000000 0.437931676     4.931845e-01
12-1948      12 1948         3.136025    0.7628832     46.10452 44.85120 4.1966304368           0.003740003 1.020092197     2.683785e+00
19-1948      19 1948         1.862666    0.1865510     16.82441 31.67412 0.7308074302          46.245334945 3.459693951     6.213455e-01
20-1948      20 1948         3.724516    1.7719721     70.98456 27.18631 0.0004305687           0.056565968 0.000165769     4.305687e-07
21-1948      21 1948        11.288744    1.1572048     64.21109 33.42962 0.2890377378           0.000000000 0.912175552 …
Run Code Online (Sandbox Code Playgroud)

r plm

7
推荐指数
0
解决办法
4974
查看次数

如何对R(新更新)中的纵向温度序列进行分段/样条回归?

这里我有温度时间序列面板数据,我打算为它运行分段回归或三次样条回归.首先,我快速研究了分段回归概念及其在R in中的基本实现,SO初步了解了如何继续我的工作流程.在我的第一次尝试中,我试图通过使用splines::nsin splinespackage 来运行样条回归,但是我没有得到正确的条形图.对我来说,使用基线回归或分段回归或样条回归可以起作用.

以下是我的面板数据规范的一般情况:在下面显示的第一行是我的因变量,以自然对数项和自变量表示:平均温度,总降水量和11个温度箱以及每个箱宽(AKA,箱窗) )是3摄氏度.(< - 6,-6~-3,-3~0,...> 21).

可重复的例子:

以下是使用实际温度时间序列面板数据模拟的可重现数据:

set.seed(1) # make following random data same for everyone
dat <- data.frame(index=rep(c("dex111", "dex112", "dex113", "dex114", "dex115"), 
                          each=30),
                year=1980:2009,
                region= rep(c("Berlin", "Stuttgart", "Böblingen", 
                              "Wartburgkreis", "Eisenach"), each=30),
                ln_gdp_percapita=rep(sample.int(40, 30), 5), 
                ln_gva_agr_perworker=rep(sample.int(45, 30), 5),
                temperature=rep(sample.int(50, 30), 5), 
                precipitation=rep(sample.int(60, 30), 5), 
                bin1=rep(sample.int(32, 30), 5), 
                bin2=rep(sample.int(34, 30), 5), 
                bin3=rep(sample.int(36, 30), 5),
                bin4=rep(sample.int(38, 30), 5), 
                bin5=rep(sample.int(40, 30), 5), 
                bin6=rep(sample.int(42, 30), 5),
                bin7=rep(sample.int(44, 30), 5), 
                bin8=rep(sample.int(46, 30), 5), 
                bin9=rep(sample.int(48, 30), …
Run Code Online (Sandbox Code Playgroud)

regression r plm non-linear-regression

7
推荐指数
1
解决办法
371
查看次数

具有交互项的固定效果回归导致错误

我正在尝试估计一个面板数据集,其中包含一个表示路线的地理区域(LoadArea,DischargeArea)的交互项.使用固定效果规范时,它不喜欢交互项(LoadArea*DischargeArea)并在汇总回归时产生以下错误:

mult_fe<-plm(log(DayRate)~LoadArea *DischargeArea + factor(Laycan.Day.Diff) + CapUtil + Age
+ I(Age^2) + WFRDWT + lag_BDTI, data=mult_reg1,model="within");


summary(mult_fe)
Error in crossprod(t(X), beta) : non-conformable arguments
Run Code Online (Sandbox Code Playgroud)

这在使用lm函数替换plm的正常OLS回归中工作正常.问题是为什么它不适用于我的模型?

r plm

6
推荐指数
2
解决办法
6798
查看次数

R/plm:由于错误而无法估计随机效应模型(系统在计算上是奇异的)?

我想使用 PLM 包估计 R 中的一些面板数据模型。由于理论知识有限,我严格遵循“计量经济学学院”(代码此处)的指示。我根据我的数据(自己的因变量/独立变量)定制了该代码,但没有更改所有其他语法/公式。

现在问题来了:

除随机效应模型外,所有模型都可以估计,并且它们的结果也可以总结和解释。这里我收到以下错误消息:

Error in solve.default(crossprod(X.m)) : 
  system is computationally singular: reciprocal condition number = 9.57127e-023
Run Code Online (Sandbox Code Playgroud)

有谁可以给​​我提示这个错误的实际含义吗?根本原因可能是什么?我必须如何更正代码才能获得结果?

编辑: 更准确地说,这是我使用的 R 代码部分:

# read in data
mydata<- read.csv2("Panel.csv")
attach(mydata)

# define dependant variable
    sd1 <- cbind(sd)

# define independant variable
x <- cbind(ratio1, ratio2, ratio3, ratio4, mean)

# Set data as panel data
pdata <- plm.data(mydata, index=c("id","t"))

# Pooled OLS estimator
pooling <- plm(sd1 ~ x, data=pdata, model= "pooling")
summary(pooling)

# Between estimator
between <- …
Run Code Online (Sandbox Code Playgroud)

random regression r panel plm

6
推荐指数
1
解决办法
4235
查看次数

如何使用plm包比较R中的2个模型?

所以我使用plmR中的包运行固定效果模型,我想知道如何比较两种模型中哪一种更合适.

例如,这是我构建的两个模型的代码:

library(plm)

eurofix <- plm(rlogmod ~ db+gdp+logvix+gb+i+logtdo+fx+ld+euro+core, 
               data=euro, 
               model="within")

eurofix2 <- plm(rlogmod ~ db+gdp+logvix+gb+i+logtdo+ld+euro+core, 
                data=euro,
                model="within")
Run Code Online (Sandbox Code Playgroud)

我知道通过常规lm调用,我可以通过运行anova测试来比较两个模型,但在这种情况下似乎不起作用.我总是得到以下错误:

Error in UseMethod("anova") : 
  no applicable method for 'anova' applied to an object of class "c('plm', 'panelmodel')"
Run Code Online (Sandbox Code Playgroud)

有人知道如何处理plm包装吗?Wald测试是否合适?

r anova plm

6
推荐指数
1
解决办法
1283
查看次数

带 plm 包的 R2

当使用 plm 包使用此语法估计池模型时,我得到的 R2 接近 0.8。

library(plm)
data <- employmentsez
data$lfirms2 <- data$lfirms*data$lfirms
data$sezname <- as.factor(data$sezname)
data <- plm.data(data, index=c("code", "year"))
fit1 <- plm(lemployment ~ lfirms + lfirms2 + lfirmsfor + lwages +  nuts51 + lgovgrants + leusubs + agrishare, data=data, model="pooling")
    R-Squared:      0.7972
    Adj. R-Squared: 0.79679
Run Code Online (Sandbox Code Playgroud)

使用完全相同的规范并再次使用 plm,但现在此语法我得到小于 0.1 的 R2,并且调整后的 R2 为负值。

library(plm)
data <- employmentsez
data$lfirms2 <- data$lfirms*data$lfirms
data$sezname <- as.factor(data$sezname)
data <- plm.data(data, index=c("code", "year"))
fit1 <- plm(lemployment ~ lfirms + lfirms2 + lfirmsfor + lwages …
Run Code Online (Sandbox Code Playgroud)

r plm

6
推荐指数
0
解决办法
1634
查看次数

plm或lme4用于面板数据上的随机和固定效果模型

我可以使用在Panel Data上指定Random和Fixed Effects模型吗?

我从伍尔德里奇(2013,第494-5)在实施例重做14.4 .感谢这个网站这个博客文章,我已经在包中做了它,但我很好奇我是否可以在包中做同样的

这是我在包中所做的.非常感谢有关如何使用进行相同操作的任何指示.首先,需要包和加载数据,

# install.packages(c("wooldridge", "plm", "stargazer"), dependencies = TRUE)
library(wooldridge) 
data(wagepan)
Run Code Online (Sandbox Code Playgroud)

其次,我估计使用包在例14.4(Wooldridge 2013)中估算的三个模型,

library(plm) 
Pooled.ols <- plm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married + union +
                  factor(year), data = wagepan, index=c("nr","year") , model="pooling")

random.effects <- plm(lwage ~ educ + black + hisp + exper + I(exper^2) + married + union +
                      factor(year), data …
Run Code Online (Sandbox Code Playgroud)

r lme4 panel-data plm

6
推荐指数
1
解决办法
2516
查看次数

panelmodel (plm) 对象上的 texreg;额外的政府信息

如何在调用中自定义拟合优度 (

我有一些想要显示的模型,但我只得到"Num. obs.", "Adj. R^2",, "R^2"(参见下面的工作示例)。我会像howver所有显示器小nTF-statistic,和p-value所有的东西,我在默认获得summary()的呼叫。

我得到的一个例子。首先是一些数据和需要的包,

# install.packages(c("wooldridge", "plm", "texreg"), dependencies = TRUE)
library(wooldridge) 
data(wagepan)
library(plm) 
Run Code Online (Sandbox Code Playgroud)

二、部分机型,

POLS <- plm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married + union +
            factor(year), data = wagepan, index=c("nr","year") , model="pooling")

RE <- plm(lwage ~ educ + black + hisp + exper + I(exper^2) + married + union +
          factor(year), …
Run Code Online (Sandbox Code Playgroud)

latex r texreg plm

6
推荐指数
1
解决办法
460
查看次数

使用 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
查看次数