pglm 中的 lag() 似乎对 stats 中的 lag() 存在 bug

Giu*_*one 2 r panel-data plm

正如标题所说。我加载后pglmlag停止正常工作。

library(pglm)

c(1,2,3,4) %>% lag()
Run Code Online (Sandbox Code Playgroud)

该对象被转换为时间序列,并且不再与 tibbles 兼容。

即使卸载pglm, 的依赖lag仍然有效。

一个解决方案可能是实际上从不加载pglm,但是如果我lag(x)在公式中有一个

pglm:pglm(
family= poisson,
y ~ lag(x),
model = "within", index="id",
data = db
)
Run Code Online (Sandbox Code Playgroud)

该算法无法收敛到估计值。由于某些原因,甚至强迫发生这种情况stats::lag(x)。有趣的是,相反,如果pglm已加载,则y ~ lag(x)可以正常工作y ~ stats:lag(x)

这是唯一有效的情况,呵呵!我唯一想到的另一件事是外部公式dplyr::lag是冲突的罪魁祸首。

我不知道如何优化工作流程,您有建议吗?

G. *_*eck 5

dplyr 是这里的罪魁祸首。plm(由 pglm 使用)定义了一个由 stats 中的泛型调度的lag方法。其他软件包,例如 plm 等,提供通用方法;然而,dplyr 用它自己的非泛型破坏了泛型,因此所有使用的包都会失败。如果您需要与 pglm 一起加载 dplyr,则加载 dplyr 除外,如果您需要使用 dplyr 的use 。同上。lag.pserieslaglaglaglaglaglagdplyr::lagfilter

library(dplyr, exclude = c("filter", "lag"))
Run Code Online (Sandbox Code Playgroud)