【问题标题】:The process of generating missing values by NMARNMAR产生缺失值的过程
【发布时间】:2016-05-04 07:35:32
【问题描述】:

NMAR产生缺失值的过程:

Aj <- c(48,75,83,58,83,32,45,50,86)

NMAR 直接在每个变量上产生缺失。对于给定的变量 Aj 和指定的缺失率 α,如果 Aj 是数值,我们首先计算 Aj 的中位数,然后随机让低于(或高于)的值以 2α 的概率缺失。

α 是缺失率,例如%5 ,%10 , ....

我的问题如何在 r 中通过上述方式生成 NMAR。我非常需要它

【问题讨论】:

标签: r simulation missing-data


【解决方案1】:

NMAR 的意思是“不随机丢失”,因此这意味着您的丢失数据存在某种模式。 NMAR 没有指定该模式将是什么,只是有一个。

这对数据分析来说是一个挑战,因为这意味着缺失数据与完整数据的分布不同,因此根据观察值(例如通过估算中位数)来估算缺失值是很危险的。

即使是像老鼠这样复杂的缺失数据插补包(在上面的评论中提到)也是为插补 MAR(随机缺失)或 MCAR(完全随机缺失)的数据而设计的。

要模拟 NMAR 数据,您只需为缺失数据指定一个分布,该分布不同于示例中用于生成数据的分布。有无数种方法可以做到这一点。

如果我正确理解您的描述,您希望使低于或高于中值的 5-10% 的值丢失。这行代码在任何高于中位数的值上都有 5% 的可能性:

Aj[Aj > median(Aj)] = ifelse(sample(c(T, F), length(Aj[Aj > median(Aj)]), replace=T, prob=c(0.05, 0.95)), NA, Aj[Aj > median(Aj)])

这行代码获取高于中位数的 Aj 值,然后 ifelse() 使用样本来选择第一个选项(T 的可能性为 5%)或第二个选项(F 的可能性为 95% )。如果为 T,则将该值替换为 NA。如果为 F,则保留原始值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    相关资源
    最近更新 更多