【问题标题】:Assign random missing values分配随机缺失值
【发布时间】:2014-01-27 02:34:16
【问题描述】:

我有一个包含缺失值的数据集,我可以使用不同的方法来估算缺失值。现在我想估计插补方法的准确性。但由于我不知道插补前的真实值是多少,所以我正在考虑将原始数据中的一些值屏蔽为“缺失值的数据”,然后使用我的常规插补方法。完成插补后,我可以将插补值与真实值进行比较,以估计插补精度。 所以,我的问题是:假设我想将数据集中的 100 个元素分配为 NA,如何选择 100 个不丢失的元素来为其分配 NA。那么,如何追踪这些元素以便进一步分析呢?

例子

library(BLR)
library(missForest)
data(wheat)
X2<- prodNA(X, 0.1) ## original “ data with 10 % missing values 
X3<- missForest(X2)$Ximp ## imputed data set

【问题讨论】:

  • 看看?sample

标签: r


【解决方案1】:

此方法将确保准确提取 N 个点,没有重复

## Assuming 'DF' is your data.frame or data.table

# The number of values to set to NA
N <- 10
inds <- as.matrix(expand.grid(1:nrow(DF), 1:ncol(DF)))

# Drop any indecies where DF is NA
inds <- matrix(inds[!is.na(DF[inds])], ncol=2)

# Sample randomly
selected <- inds[sample(nrow(inds), N), ]

# Note that `selected` is a matrix of (row, col) indices
DF[selected] <- NA

【讨论】:

  • 里卡多:谢谢你的回答---但是,我的 DF 里面已经有 NA ----我的问题是如何在 DF 中只选择 10 个不是 NA 的元素 --- 还有我认为您选择 10 行作为 NA,我们只想选择 10 个元素作为 NA。
  • @hema,请参阅编辑以了解未选择 DF 中已经是 NA 的元素。至于选择行的要点:注意selected 是一个矩阵,而不是一个向量。因此,当在 [ ] 中使用时,它选择的是单个元素,而不是整行。
猜你喜欢
  • 2021-08-17
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多