【问题标题】:R: Using a variable with less observations in a regression (plm)R:在回归中使用具有较少观察值的变量 (plm)
【发布时间】:2018-05-22 06:45:41
【问题描述】:

我已经尝试处理这个问题一段时间了,但没有运气。本质上,我正在做的是一些面板数据的两阶段最小二乘法。为此,我正在使用 plm 包。我想做的是

  1. 做一个 2SLS
  2. 从 1 中的 2SLS 中获取残差。
  3. 将这些残差用作不同 2SLS 中的工具

我遇到的问题是,在前 2SLS 中,使用的观察次数少于数据集中的总观察次数,因此我的残差向量很短,并且出现以下错误

model.frame.default(terms(公式, lhs = lhs, rhs = rhs, data = data, : 可变长度不同(为 'ivreg.2.a$residuals' 找到)

这是我试图运行以供参考的代码,如果您需要更多详细信息,请告诉我。我真的只需要我的残差向量与第一个 2SLS 中使用的数据长度相同。作为参考,我的数据有 1713 个观察值,但只有 1550 个用于回归,因此我的残差向量长度为​​ 1550。我的两个 2SLS 回归代码如下。

ivreg.2.a = plm(formula = diff(loda) ~ factor(year)+diff(lgdp) | index_g_l + diff(lcru_l) + diff(lcru_l_sq) + factor(year), index = c("country", "year"), model = "within", data = panel[complete.cases(panel[, c(1,2,3,4,5,7)]),])

 ivreg.2.a = plm(formula = diff(lgdp) ~ factor(year)+index_g_l + diff(lcru_l) + diff(lcru_l_sq) + diff(loda)| index_g_l + diff(lcru_l) + diff(lcru_l_sq) + factor(year) + ivreg.2.a$residuals, index = c("country", "year"), model = "within", data = panel[complete.cases(panel[, c(1,2,3,4,5,7)]),])

如果您还需要什么,请告诉我。

【问题讨论】:

    标签: r plm


    【解决方案1】:

    我假设 163 个观察值被删除,因为它们在相关变量之一中有 NA。 R 中的大多数 *lm 函数都有一个 na.action 参数,可用于填充残差以正确长度。例如,当缺少观察 3 时,

    residuals(lm(formula, data, na.action=na.omit)) # 1 2 4
    residuals(lm(formula, data, na.action=na.exclude)) # 1 2 NA 4
    

    但是,plm 的文档说这个参数“目前不完全支持”,所以如果你先将这 1550 行过滤到一个新的数据帧,然后再做所有后续工作,会更简单。

    顺便说一句,如果plm 的行为类似于lm,则您无需指定complete.cases 即可使其工作,因为它应该跳过带有NAs 的任何内容。

    【讨论】:

    • 嗨,NA 是它们被丢弃的原因。我会尝试这些建议谢谢!问题是我之前尝试从数据中删除 NA 到干净的 1550 回归,但这会改变回归结果,因为它仍然会丢失一些观察结果。
    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 2021-09-25
    • 2020-07-24
    • 2014-05-29
    • 2013-12-03
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多