通过NMAR生成缺失值的过程
NMAR生成缺失值的过程:通过NMAR生成缺失值的过程,r,simulation,missing-data,R,Simulation,Missing Data,NMAR生成缺失值的过程: Aj <- c(48,75,83,58,83,32,45,50,86) AjNMAR的意思是“不随机丢失”,因此它意味着丢失的数据有一种模式。NMAR没有指定该模式是什么,只是有一个 这对数据分析来说是一个挑战,因为这意味着缺失数据的分布与完整数据的分布不同,因此根据观察值(例如,通过插补中间值)插补缺失值是危险的 即使是一个复杂的缺失数据插补包,如mice(在上面的评论中提到)也被设计用于插补MAR(随机缺失)或MCAR(完全随机缺失)的数据 要模拟NMAR
Aj <- c(48,75,83,58,83,32,45,50,86)
AjNMAR的意思是“不随机丢失”,因此它意味着丢失的数据有一种模式。NMAR没有指定该模式是什么,只是有一个
这对数据分析来说是一个挑战,因为这意味着缺失数据的分布与完整数据的分布不同,因此根据观察值(例如,通过插补中间值)插补缺失值是危险的
即使是一个复杂的缺失数据插补包,如mice(在上面的评论中提到)也被设计用于插补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()使用一个样本选择第一个选项(可能性为5%的T)或第二个选项(可能性为95%的F)。如果为T,则该值替换为NA。如果F,则保留原始值。NMAR表示“不随机丢失”,因此它表示丢失的数据有一种模式。NMAR没有指定该模式是什么,只是有一个
这对数据分析来说是一个挑战,因为这意味着缺失数据的分布与完整数据的分布不同,因此根据观察值(例如,通过插补中间值)插补缺失值是危险的
即使是一个复杂的缺失数据插补包,如mice(在上面的评论中提到)也被设计用于插补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()使用一个样本选择第一个选项(可能性为5%的T)或第二个选项(可能性为95%的F)。如果为T,则该值替换为NA。如果为F,则保留原始值。查看以下文章:查看以下文章: