For simple data processing , We are basically dealing with complete data sets , But in practical problems, we often encounter data with missing values , It is very important to deal with this kind of data .
General steps for handling missing values
First, we list the general steps to deal with missing values , Have a general understanding of the whole process .
* Identify missing data ;
* Check the cause of missing data ;
* Delete instances containing missing values or interpolate missing values with reasonable values .
Types of missing data
* Complete random deletion (MCAR)
* Random deletion (MAR)
* Nonrandom deletion (NMAR)
Complete random deletion : If the missing data of a variable is not related to any other observed and unobserved variables , The data is completely random missing .
Random deletion : If the missing data on a variable is related to other observed variables , Not related to his own unobserved values , The data is missing randomly .
Nonrandom deletion : If the missing data does not belong to the above two types, it is non random missing .
Identify missing values
To handle missing values , First, we need to identify which data are missing values ,R In language ,NA Represents missing value ,NaN Represents an impossible value ,Inf and -Inf It represents positive infinity and negative infinity . There are corresponding functions is.na(),is.nan(),is.infinite() It can be used to identify missing values , Impossible value and infinite value , The result is TRUE/FALSE.
To count the number of missing values , We can go through it directly sum() Function TRUE/FALSE Make statistics , among TRUE The logical value of is 1,FALSE The logical value of is 0, Similarly, impossible values and infinite values can also be judged by this method .
Explore missing values
For missing values , It is not advisable for us to count him only , This section gives several ways to explore missing values .
one , The chart shows missing values
We can use an icon to show the missing values , stay R In language mice In the bag md.pttern() Function provides a table that can generate a matrix to show missing values , Examples are as follows :
library(lattice) library(mice) data(sleep,package="VIM") md.pattern(sleep)
The results of the chart and graph are as follows :
two , Graphic display missing values
md.pattren() Function has given us a clear list of each missing value , But the graph is a more clear way to express the missing value ,VIM A large number of visualization functions are provided in the package , Let's take a look at some of these functions .
aggr() function
library(VIM) aggr(sleep,prop=FALSE,numbers=TRUE)
matrixplot() function
matrixplot()
marginplot() function
marginplot(sleep[c("Gest","Dream")],pch=c(20),col=c("darkgray","red","blue"))
Treatment of missing values
one , delete
For the missing value processing, we first use the first simplest method —— Delete the row with the missing value ,R There are two functions to delete missing values , namely complete.cases() Function sum na.omit() function .
For the processing of deletion, you can use the data directly , There is no demonstration here .
two , multiple imputation
multiple imputation (MI) It is a method to deal with missing values based on repeated simulation , In the face of complex missing value problem ,MI It's a common method , It will generate a complete set of data sets from a data set containing missing values . In this section we will use R In mice The package interpolates the data set .
mice The workflow of the multiple interpolation method in the package is as follows :
be based on mice Package analysis usually follows the following procedure :
library(mice) imp <- mice(mydata,m) fit <- with(imp, analysis) pooled <-
pool(fit) summary(pooled)
Process description :
* mydata Is a matrix or data frame containing missing values
* imp It's an inclusion m A list object of an interpolation dataset , At the same time, it also contains the information to complete the interpolation process . default m The value of is 5.
* analysis Is an expression object , Used to set the m A statistical analysis method of interpolation data sets .
* fit It's an inclusion m A list object of individual statistical analysis results .
* pooled It's one that includes this m A list object of statistical average analysis results .
three , Simple interpolation method
Simple interpolation method , Use a value ( Such as mean value , median , Mode ) To replace missing values in variables . One thing to note is that , These substitutions are random , This means that random errors are not introduced .
four , Other ways to deal with missing values
R The language supports other processing methods for missing values .
Package description
Hmisc Contains multiple functions , Simple interpolation is supported , Multiple interpolation and typical variable interpolation .
mvnmle Maximum likelihood estimation of missing values in multivariate orthonormal distribution data .
cat Multiple imputation of multivariate categorical variables in linear model .
arrayInpute,Seqknn Real time function for processing missing data of microarray .
longitudinalData List of related functions , For example, a series of functions for interpolating missing values of time series .
kmi Methods of dealing with missing values in survival analysis Kaplan-Meier multiple imputation .
mix Multiple imputation of mixed categorical and continuous data in general location model .
pan Multiple interpolation of multivariate panel data or clustering data .
Technology