【问题标题】:How to predict data in r for missing values如何预测 r 中缺失值的数据
【发布时间】:2018-02-28 20:41:34
【问题描述】:

我有一个大小为 60 的数据集,所有观察的变量都相同。其中 30 个具有获胜 (y) 值,其中 30 个我已删除以进行预测。

在 sas 中,当您希望模型预测未知 y 的值(结果)时,您可以在 Y 值的数据线上放置一个点并运行回归。该模型将基于 30 个具有 Y 值的观测值,然后针对不具有 Y 值的 30 个进行预测。

在 r 中,对于我想预测的那些观察,我将 Y 值设为 NA。但是,该模型会忽略这些缺失值,而不是为这些观察提供预测结果。

如何让我的模型预测缺失 Y 变量的值?

【问题讨论】:

  • 这在一定程度上取决于您使用的包,因此一些代码可能会有所帮助,否则请查看PREDICT 函数。
  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。显示您尝试过的代码,该代码表现出您描述的行为。

标签: r prediction missing-data


【解决方案1】:

如果您想对样本数据外的数据进行预测,请执行以下操作:

# Here I just generate some data, since no provided
X <- matrix(data = rnorm(400), ncol = 4)
B <- c(0.5, -0.5, 2, 0)
y <- X %*% B
dt <- data.frame(cbind(y, X))
names(dt) <- c("y", paste0("x", 1:4))

# Start with estimation on in-sample 
train_dt <- dt[1:50, ]
mod <- lm(formula = y ~ ., data = train_dt)

# Predict on out of sample
that <– predict(object = mod, newdata = dt[51:100, ])

# Calculate error, should be almost the same
eps <- yhat - y[51:100]

# In this example should be close to zero
all(eps) < 1e-10)

【讨论】:

  • 我在我的案例中采用了完全相同的方法,但是 predict.lm() 仅返回缺失值 ('NA') 以预测 type = "reponse"(即可能是默认值)。你有预感这可能是什么原因吗?我的数据中有一些缺失的案例,但我认为这不会是一个问题......
  • 在估计和预测我的响应变量之前,我仔细检查并运行了 na.omit(),但这并没有改变任何事情。
  • 请提供一个示例数据集。基本思想是在测试中将数据拆分为训练,并使用适当的 API 进行预测。还要检查您用于训练的数据是否有些平衡。前任如果响应特征为真、假且训练数据集仅包含真而测试数据集包含假,您可能会得到 NaN。
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多