【问题标题】:Can the subset() function within the lm() R function can be used to remove observations only of certain variables?lm() R 函数中的子集() 函数可以用于仅删除某些变量的观察吗?
【发布时间】:2015-12-09 07:03:57
【问题描述】:

我不确定我的问题是否有意义。但是,我正在考虑使用时间序列数据修改计量经济学模型。这是一个多元回归。自变量之一是 5 年期国债利率。该变量分为两个时间段。一个变量是从 1950 年到 1986 年的 5 年期国债利率。1986 年之后,这个变量取值为 0。第二个变量是从 1986 年至今的 5 年期国债利率。在 1986 年之前,第二个变量的值为 0。有人建议我将 0 值替换为空白(相当于缺失数据)。因为正如建议的那样,这些变量的含义应该会更好地指定。你能用子集()函数做到这一点。换句话说,您是否可以在不实际删除或忽略整行数据的情况下从这些变量中删除或忽略 0 值,并从其他自变量中删除所有值。我知道这个编码问题取决于这个过程是否有意义。我不确定它确实如此。我已经通过了交叉验证的理论问题。但是,我不确定我会得到任何答案。我想我会继续在这里问编码问题。

【问题讨论】:

  • 您的数据在data.frame 中吗?
  • ssdecontrol,是的,是的。
  • 您想将 1950-1986 年和 1986 年至今视为不同的时期吗?如果是这种情况,您可以创建一个具有两个值的虚拟分类变量,例如“pre”(适用于 1986 年之前的所有行)和“post”(适用于 1986 年之后的所有行),然后将其包含在回归中.

标签: r linear-regression missing-data dummy-variable


【解决方案1】:

假设您的数据位于数据框中,答案是否定的。您不能仅在 data.frame 的一部分上使用 subset。这是因为一个数据帧上的subset 返回另一个数据帧,并且在一个数据帧中所有变量的长度必须相同。

有很多方法可以解决此限制,但它们不适用于lm。想想回归是如何工作的:必须充分观察每一个观察结果。如果您缺少数据,您有以下三种选择:

  1. 删除缺少数据的观察。这称为列表删除,它是lm 中的默认值(通过na.omit 函数,隐藏在model.matrix 函数中,它位于lm 中)
  2. 估算缺失的数据。这是一个庞大的领域和活跃的研究领域
  3. 使用某种其他方法,例如可以整合缺失数据的贝叶斯模型

您应该能够从 Cross Validated 获得这方面的帮助。但事实仍然存在,根本没有办法对不等长度的变量使用lm,也没有办法让subset返回包含不等长度变量的数据帧,因为数据帧中的所有变量都必须是长度相同。

【讨论】:

  • 谢谢,这很有帮助。
  • ssdecontrol,我假设在 SAS 中使用 PROCREG 过程或其他任何调用过程也是如此。换句话说,您不能对具有不同观察次数的变量进行多元回归。鉴于此,没有软件可以处理不可行的事情。我认为是这样,因为使用矩阵代数来解决多重回归需要这个基本属性[每个变量具有相同的观察次数]。
  • @GaetanLion 正确。甚至不是因为矩阵代数。即使在通过取导数显式优化y = a + b1x1 + b2x2 的最简单的本科计量经济学案例中也存在问题。回归问题只是没有为不相等的可变长度定义。
  • 这是一个非常有用的评论。谢谢,我为您的贡献投了 1 票和最佳答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多