是否有可能以某种方式使用拟合对象,特别是我从plm()
模型中得到的回归对象,在用于回归的数据中标记观察值,如果它们实际上用于回归。我意识到这可以通过我在原始数据中寻找完整的观察结果来完成,但我很好奇是否有一种方法可以使用 fit/reg 对象来标记数据。
让我用一个最小的工作示例来说明我的问题,
首先需要一些包,
# install.packages(c("stargazer", "plm", "tidyverse"), dependencies = TRUE)
library(plm); library(stargazer); library(tidyverse)
其次是一些数据,这个例子大量借鉴了 Baltagi (2013),表 3.1,?plm
见
data("Grunfeld", package = "plm")
dta <- Grunfeld
现在我在我的数据对象中创建了一些半随机的缺失值,dta
dta[c(3:13),3] <- NA; dta[c(22:28),4] <- NA; dta[c(30:33),5] <- NA
数据准备的最后一步是使用tidyverse创建一个具有索引属性的数据框,该属性描述其个体和时间维度,
dta.p <- dta %>% group_by(firm, year)
现在回归
plm.reg <- plm(inv ~ value + capital, data = dta.p, model = "pooling")
结果,使用stargazer,
stargazer(plm.reg, type="text") # stargazer(dta, type="text")
#> ============================================
#> Dependent variable:
#> ---------------------------
#> inv
#> ----------------------------------------
#> value 0.114***
#> (0.008)
#>
#> capital 0.237***
#> (0.028)
#>
#> Constant -47.962***
#> (9.252)
#>
#> ----------------------------------------
#> Observations 178
#> R2 0.799
#> Adjusted R2 0.797
#> F Statistic 348.176*** (df = 2; 175)
#> ===========================================
#> Note: *p<0.1; **p<0.05; ***p<0.01
假设我知道我的数据有 200 个观察值,我想找到回归中使用的 178 个。
我推测plm.reg
我可以(轻松)使用我的原始数据中是否有一些向量来创建标志dta
,如果使用/未使用此观察,即我在上面创建的半随机缺失值。也许是一些像扫帚一样的工具。
我想像,
dta <- dta %>% valid_reg_obs(plm.reg)
期望的结果看起来像这样,新元素是最后的向量plm.reg
,即
dta %>% as_tibble()
#> # A tibble: 200 x 6
#> firm year inv value capital plm.reg
#> * <int> <int> <dbl> <dbl> <dbl> <lgl>
#> 1 1 1935 318 3078 2.80 T
#> 2 1 1936 392 4662 52.6 T
#> 3 1 1937 NA 5387 157 F
#> 4 1 1938 NA 2792 209 F
#> 5 1 1939 NA 4313 203 F
#> 6 1 1940 NA 4644 207 F
#> 7 1 1941 NA 4551 255 F
#> 8 1 1942 NA 3244 304 F
#> 9 1 1943 NA 4054 264 F
#> 10 1 1944 NA 4379 202 F
#> # ... with 190 more rows
更新,我尝试使用broom 's augment()
,但不幸的是它给了我我希望会创建一些标志的错误消息,
# install.packages(c("broom"), dependencies = TRUE)
library(broom)
augment(plm.reg, dta)
#> Error in data.frame(..., check.names = FALSE) :
#> arguments imply differing number of rows: 200, 178