获取 R 中回归使用的数据观察值 (plm)

Get data observations used by regression in R (plm)

我正在用包 plm 估算面板模型。 面板中的一些人没有所有解释变量的数据,因此他们被排除在回归之外。 我如何才能看到哪些特定的观察结果被用于估计?

在 Stata 中,通常的命令是 e(sample)。 R 中的等价物是什么?

用于模型的数据存储在 return 由 plm 函数编辑的列表中。该列表包含多个元素,其中一个名为 model。这是存储用于模型的数据的地方。这是一个基于 plm:

帮助的示例
library(plm)

data("Produc")

让我们将 Produc$pcap 的前 20 个值设置为 NA(缺失数据):

Produc$pcap[1:20] = NA

现在我们将使用 Produc 创建一个 plm 模型:

zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,
          data = Produc, index = c("state","year"))

zz 是一个包含 return 由 plm 函数编辑的信息的列表。您可以 运行 str(zz) 查看 zz 包含的内容。用于模型的数据存储在 zz$model 中。您可以通过从 21 开始的行名看到前 20 行丢失了,因为这些是我们将 Produc$pcap 设置为 NA.

的行
head(zz$model)  # You can also do: head(zz[["model"]])
   log(gsp) log(pcap)  log(pc) log(emp) unemp
21 10.13634  9.358610 10.21481 6.571583   4.1
22 10.15417  9.403360 10.26915 6.614726   5.6
23 10.12323  9.467233 10.31703 6.591811  12.0
24 10.16743  9.518111 10.28821 6.631606   9.8
25 10.24388  9.559265 10.31137 6.696170   8.2
26 10.34374  9.603196 10.34623 6.797271   6.1

如果您想 select 模型中使用的数据框行,您可以使用 zz$model 的行名作为子集索引:

Produc[rownames(zz$model), ]

Produc[complete.cases(Produc), ] 将 return 仅那些没有任何缺失数据的数据框行。但是请注意,如果数据框中的某些列缺少数据,但未在模型公式中使用,那么这种方法通常会排除一些在模型中仍然使用的数据行(例外情况是模型中未使用的列中的缺失数据总是伴随着模型中使用的列中的缺失数据出现在同一行中。