【问题标题】:lag() from pglm seems to bug lag() from stats来自 pglm 的 lag() 似乎是来自 stats 的 bug lag()
【发布时间】:2021-12-27 02:24:48
【问题描述】:

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

library(pglm)

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: r panel-data plm


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      相关资源
      最近更新 更多