gpt4 book ai didi

R:避免summary.plm

转载 作者:行者123 更新时间:2023-12-03 15:46:15 26 4
gpt4 key购买 nike

我正在使用 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

我打电话 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"]

我有一种唠叨的感觉,这是对 cpu 时间的巨大浪费,但我对 R 是如何避免调用摘要的事情知之甚少。我很感激有关此处幕后发生的事情的任何信息,或者以某种方式减少执行此操作所需的时间。

最佳答案

你只需要看看里面plm:::summary.plm看看它在做什么。当你这样做时,你会看到你的两行调用 summary()在您的模型 fit 上可以替换为:

coefficients_estimated <- coef(regression)
ses_estimated <- sqrt(diag(vcov(regression)))

例如:
require(plm)
data("Produc", package = "plm")
zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,
data = Produc, index = c("state","year"))
summary(zz)给出:
> summary(zz)
Oneway (individual) effect Within Model

....

Coefficients :
Estimate Std. Error t-value Pr(>|t|)
log(pcap) -0.02614965 0.02900158 -0.9017 0.3675
log(pc) 0.29200693 0.02511967 11.6246 < 2.2e-16 ***
log(emp) 0.76815947 0.03009174 25.5273 < 2.2e-16 ***
unemp -0.00529774 0.00098873 -5.3582 1.114e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
....

和我显示的两行返回 zz :
> coef(zz)
log(pcap) log(pc) log(emp) unemp
-0.026149654 0.292006925 0.768159473 -0.005297741
> sqrt(diag(vcov(zz)))
log(pcap) log(pc) log(emp) unemp
0.0290015755 0.0251196728 0.0300917394 0.0009887257

您并没有真正提供足够的信息(例如,您的模拟代码或 Rprof() 的完整输出)来说明这是否会有所帮助 - 当然看起来并没有在 summary() 上花费大量时间。 ; FUN比您展示的任何其他东西以及您展示的元素都要昂贵得多, r.squared()是唯一一个出现在 plm:::summary.plm() 中的而且似乎根本不需要时间。

因此,上述是否会显着加快速度还有待观察。

关于R:避免summary.plm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com