我正在构建一个模型,使用来自plm()
包的函数plm
。
我的一个x变量包含NA
s,因为我使用了t-1滞后计算。
我的R代码如下所示
panel_df <- pdata.frame(df, index = c("AUTHOR_ID", "Year"), drop.index = TRUE, row.names = TRUE)
plmFit1 <- plm(y~ x1 + x2 + x3_t_1, data = panel_df, effect = 'twoways')
我在联机文件里发现的最好的事情就是
数据不一定是连续的(距离为1的规则时间序列),因为平衡并不意味着连续。若要使数据连续,请使用make.pconsecutive() (可选的是,set参数balanced = TRUE以使数据连续和平衡,还请参阅两个函数的比较示例。注意:在单个索引或时间索引中包含NA值的(p)data.frames (pseries元素)行没有被检查,而是在数据平衡之前被静默删除。在这种情况下,不能推断哪一个或哪个时间段是指缺失的值(另见示例)。特别是,这意味着:一个人在最初时间段的第一个/最后一个位置上的NA值被删除,这通常是为了描述该个人的时间序列的开始和结束。因此,在应用make.pbalanced之前,可能需要检查索引变量中是否存在NA值,特别是检查原始数据中每个个体在第一个和最后一个位置上的NA值,如果是的话,可能将这些值设置为时间序列的有意义的开始/结束值。
我也没有为panelOLS找到任何东西。
默认情况下,它们如何处理丢失的值,因为我接收的输出具有系数?
发布于 2022-03-03 22:10:13
我不能对Python的panelOLS
发表评论,但我会假设它是类似的。
plm
遵循标准的lm
行为:在估计之前用NA
值下降观测值(行)。你引用的文件与这种行为无关。
比较您的数据预估计(df
、panel_df
)和数据后估计(如在$model
中的模型对象中找到的)。
您还可以查看?na.omit
并阅读所描述的na.omit
行为(plm
不支持描述的其他方法)。
下面是一个示例:
library(plm)
data(Grunfeld)
pdf <- pdata.frame(Grunfeld)
head(pdf)
#> firm year inv value capital
#> 1-1935 1 1935 317.6 3078.5 2.8
#> 1-1936 1 1936 391.8 4661.7 52.6
#> 1-1937 1 1937 410.6 5387.1 156.9
#> 1-1938 1 1938 257.7 2792.2 209.2
#> 1-1939 1 1939 330.8 4313.2 203.4
#> 1-1940 1 1940 461.2 4643.9 207.2
pdf[3, "inv"] <- NA # set one value to NA in 3rd row (1-1937)
head(pdf)
#> firm year inv value capital
#> 1-1935 1 1935 317.6 3078.5 2.8
#> 1-1936 1 1936 391.8 4661.7 52.6
#> 1-1937 1 1937 NA 5387.1 156.9
#> 1-1938 1 1938 257.7 2792.2 209.2
#> 1-1939 1 1939 330.8 4313.2 203.4
#> 1-1940 1 1940 461.2 4643.9 207.2
nrow(pdf) # 200
#> [1] 200
# estimate model
mod <- plm(inv ~ value + capital, data = pdf, model = "within")
head(mod$model) # no entry for 1-1937
#> inv value capital
#> 1-1935 317.6 3078.5 2.8
#> 1-1936 391.8 4661.7 52.6
#> 1-1938 257.7 2792.2 209.2
#> 1-1939 330.8 4313.2 203.4
#> 1-1940 461.2 4643.9 207.2
#> 1-1941 512.0 4551.2 255.2
nrow(mod$model) # 199 rows
#> [1] 199
https://stackoverflow.com/questions/71343445
复制相似问题