美文网首页简书付费文章
R语言高级方法进行缺失数据多重插补案例演示

R语言高级方法进行缺失数据多重插补案例演示

作者: 医科研 | 来源:发表于2020-03-19 07:28 被阅读0次

当我们在数据集中缺少值时,重要的是考虑为什么它们会丢失以及它们对分析的影响。有时忽略丢失的数据会降低功耗,但更重要的是,有时它会使答案有偏差,并有可能误导错误的结论。因此,重要的是要考虑丢失的数据机制是什么,以便对其进行处理。 Rubin(1976)区分了三种类型的误报机制:

  • 完全随机缺失(MCAR)Missing completely at random:当可以将缺少值的案件视为所有案件的随机样本时;在实践中很少发生MCAR
  • 随机丢失(MAR)Missing at random :以我们拥有的所有数据为条件时,任何剩余的丢失都是完全随机的;也就是说,它不依赖于某些缺少的变量。因此,可以使用观察到的数据对缺失进行建模。然后,我们可以对可用数据使用专门的缺失数据分析方法,以纠正缺失的影响。
  • 非随机丢失(MNAR)Missing not at random:当数据既不是MCAR也不是MAR时。这种情况通常很难处理,因为它将需要对缺失模式进行强有力的假设。

缺失数据的常见处理方法

  • 人们尝试处理丢失数据的一种常见方法是删除所有缺少值的情况。这种方法称为完整案例分析(CC:Complete cases)。但是,CC仅在数据为MCAR时有效。
  • 另一种方法是多重插补(MI:multiple imputation),这是一种 (monte carlo) 蒙特卡洛方法,它模拟多个值以插补(填充)每个缺失值,然后分别分析每个插补数据集,最后将结果汇总在一起。我们多次估算缺失的数据,以解决我们对缺失数据的真实(未知)值的不确定性。
  • 在处理示例数据集时,我们对多重插补更加满意。从理论上讲,多重插补可以处理所有三种类型的缺失。但是,执行多重插补通常不适合MNAR情况。MNAR类型的数据的数据分析更加复杂,这里我们假设数据是属于 MAR 数据。

实际数据操作

# required libraries
library(mice)
## Warning: package 'mice' was built under R version 3.6.3
## 
## Attaching package: 'mice'
## The following objects are masked from 'package:base':
## 
##     cbind, rbind
library(VIM)
## Warning: package 'VIM' was built under R version 3.6.3
## Loading required package: colorspace
## Loading required package: grid
## Loading required package: data.table
## VIM is ready to use. 
##  Since version 4.0.0 the GUI is in its own package VIMGUI.
## 
##           Please use the package to use the new (and old) GUI.
## Suggestions and bug-reports can be submitted at: https://github.com/alexkowa/VIM/issues
## 
## Attaching package: 'VIM'
## The following object is masked from 'package:datasets':
## 
##     sleep
library(lattice)

载入数据

  • 这是一个25行四列的数据
  • A data frame with 25 observations on the following 4 variables.
  • age:Age group (1=20-39, 2=40-59, 3=60+)
  • bmi:Body mass index (kg/m**2)
  • hyp:Hypertensive (1=no,2=yes)
  • chl:Total serum cholesterol (mg/dL)
# load data
data(nhanes2)
dim(nhanes2)
## [1] 25  4
head(nhanes2)
##     age  bmi  hyp chl
## 1 20-39   NA <NA>  NA
## 2 40-59 22.7   no 187
## 3 20-39   NA   no 187
## 4 60-99   NA <NA>  NA
## 5 20-39 20.4   no 113
## 6 60-99   NA <NA> 184

md.pattern可视化缺失模式

md.pattern(nhanes2) 
image.png
##    age hyp bmi chl   
## 13   1   1   1   1  0
## 3    1   1   1   0  1
## 1    1   1   0   1  1
## 1    1   0   0   1  2
## 7    1   0   0   0  3
##      0   8   9  10 27

VIM包对缺失数据可视化

  • aggr函数可视化
library(VIM)
nhanes2_aggr = aggr(nhanes2,
                    col=mdc(1:2), # 颜色设置
                    numbers=TRUE, 
                    sortVars=TRUE, 
                    labels=names(nhanes2), 
                    cex.axis=.7, gap=3, 
                    ylab=c("Proportion of missingness","Missingness Pattern"))
image.png

相关文章

网友评论

    本文标题:R语言高级方法进行缺失数据多重插补案例演示

    本文链接:https://www.haomeiwen.com/subject/sezbehtx.html