pglm 的 lag() 似乎错误了 stats 的 lag()

lag() from pglm seems to bug lag() from stats

正如标题所说。在我加载 pglm 后,lag 停止正常工作。

library(pglm)

c(1,2,3,4) %>% lag()

object 已转换为时间序列,不再与 tibbles 兼容。

即使卸载pglmlag的依赖仍然有效。

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

中有一个 lag(x)
pglm:pglm(
family= poisson,
y ~ lag(x),
model = "within", index="id",
data = db
)

算法无法收敛为估计值。由于某些原因,这种情况甚至会发生 stats::lag(x)。有趣的是,相反,如果加载了 pglmy ~ lag(x) 会像 y ~ stats:lag(x).

一样正常工作

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

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

dplyr 是这里的罪魁祸首。 plm(由 pglm 使用)定义了一个 lag 方法 lag.pseries,它由 stats 中的通用 lag 调度。其他包,例如 plm 和其他包,为通用 lag; 提供方法。然而,dplyr 用它自己的非泛型 lag 破坏了泛型,所以所有使用 lag 的包都会失败。如果您需要在 pglm 加载 dplyr 的同时加载 lag 并且如果您需要使用 dplyr 的 lag 使用 dplyr::lagfilter.

同上
library(dplyr, exclude = c("filter", "lag"))