2

简单的问题:我可以在使用包进行feols估计后提取最终的自由度吗?fixest

res = feols(Sepal.Length ~ Sepal.Width + Petal.Length | Species, iris)
summary(res)

我知道有很多奇特的方法可以在 fixst 中指定 df,但我只想要结果(取决于我选择的选项)。

例如在使用的lfe包中felm,我可以像这样轻松地做到这一点:

res = felm(Sepal.Length ~ Sepal.Width + Petal.Length | Species | 0 | 0, iris)
res$df

谢谢!

4

3 回答 3

3

有一个degrees_freedom

> degrees_freedom(res, type = "k")
[1] 3
> degrees_freedom(res, type = "resid")
[1] 147
> degrees_freedom(res, type = "t")
[1] 2

通过改变type,可以得到不同的自由度,即?degrees_freedom展示

type - 字符标量,等于“k”、“resid”、“t”。如果为“k”,则返回回归器的数量。如果是“resid”,那么它就是“残差自由度”,即观察数减去回归数。如果“t”,它是 t 检验中使用的自由度。请注意,这些值受 x 的 VCOV 计算方式的影响,尤其是在 VCOV 被聚类时。


或者可以使用

fitstat(res, "g", simplify = TRUE)

或者可能是

unname(res$fixef_sizes)
于 2021-12-19T20:29:46.010 回答
3

您正在寻找的是: degrees_freedom(res, "resid", vcov = "iid")


VCOV 对 产生的值有影响degrees_freedom。这是一个解释。

默认:

  • VCOV 与第一个固定效应聚类(如果存在 FE)
  • 当 VCOV 被集群时,与集群嵌套的 FE 在 DoF 计算中被丢弃(以避免过度惩罚)

得到的数字 3degrees_freedom(res, "k") 不是固定效应的数量。它是回归量的数量,不包括嵌套的 FE(并添加截距)。

通过更改 VCOV 的计算方式,您可以更改degrees_freedom. 这里的嵌套是问题,所以你可以删除它:

degrees_freedom(res, "resid", vcov = cluster ~ ssc(fixef.K = "full"))
#> [1] 145

但最简单的方法是使用“iid”VCOV。


同意帮助页面仅通过说值取决于 VCOV 的类型来隐含地提及这一点。这可能更清楚,我会尝试改进它!

于 2021-12-21T14:45:26.350 回答
2

我们可能会在缩放协方差矩阵summaryattributes 中找到它们,检查str(summary(res))

attr(summary(res)$cov.scaled, 'dof.K')
# [1] 3
于 2021-12-19T20:43:11.000 回答