在 R 中使用 predict.lm 时,测试数据中的缺失值 NA

机器算法验证 r 回归 预测 最小二乘 缺失数据
2022-03-30 07:35:32

我有两个数据集

  1. 训练数据
  2. 测试数据(没有因变量值,但我有自变量数据,或者你可以说我需要预测)。

使用训练数据(NA单元格中有一些 s),我使用 R 执行普通最小二乘回归(OLS)lm()并拟合模型并得到β回归模型的系数。(到目前为止一切都很好!)

现在,在拟合值的预测过程中,我在测试数据集中的某些单元格中有一些缺失值。我使用的功能predict()如下:

 predict(ols, test_data.df, interval= "prediction", na.action=na.pass)

对于具有值的单元格(或多个单元格),NA在生成输出时会丢弃整行(yhat)。是否有任何函数可以为测试数据生成yhat值(NAs 除外),而不会丢弃单元格中缺少值的任何行。

1个回答

首先,让我先声明缺失数据是其在统计学中的专长,因此对这个问题有很多不同的答案。

正如您所发现的,默认情况下,R 使用大小写删除缺失值。这意味着无论何时在数据中遇到缺失值(在回归公式的任一侧),它都会忽略该行。这不是很好,因为如果您有 100 个观察值,但一半的行至少缺少一个变量值,那么您实际上有 50 个观察值。在某些学科中,缺失数据的普遍性会迅速减少数据的大小。当我还是一名本科生时,我分析了一项 3,000 人的调查,当使用逐案删除时,该调查缩小到只有 316 人!

但这比缩小样本量更糟糕:可能存在隐藏的问题,例如缺失模式与缺失元素的值之间的关联。例如,收入较高的人更有可能不透露他们的薪水。这将使与收入相关的有意义的、统计上合理的判断变得困难。

处理缺失值的一种常用方法是插补。R中有许多可用的插补包。在我的专业领域,政治学中,一个被广泛使用的领域是加里·金(Gary King)的《AMELIA II》。这会将您的变量视为多元正态变量,并根据某些收敛标准迭代地改进其对缺失值必须是什么的“猜测”:当“猜测”似乎与其余数据非常吻合时声明收敛。(很抱歉,这是不具体的。我已经好几年没用过AMELIA II了。文档很透彻,写得很清楚,所以我会从那里开始。)

但这只是一种选择。我相信更多知识渊博的人会说出他们的贡献。