使用TestMCARNormality

时间:2017-02-08 22:30:35

标签: r missing-data imputation

我有一个DF(dfNA),每列中包含少量缺失数据。此数据帧是较大数据帧(wideRawDF)的子集,我想要将其丢失。

为了估算数据,我需要确定数据是否缺少MCAR / NMAR / MAR,以便我可以应用正确的插补方法。

colsNA是包含NA值的列的字符串,它的推导如下:

colsNA <- colnames(wideRawDF)[colSums(is.na(wideRawDF)) > 0]

 > str(colsNA)
 chr [1:9] "DO0182U09A3" "DO0182U09B3" "DO0182U09C3" "DO0182U21A1" "DO0182U21A2" "DO0182U21A3" "DO0182U21B1" ...

为了简化并更好地理解为什么我在使用TestMCARNormality时出错,我决定只传递NA值的列,而不是包含完整值的列。

我将wideRawDF子集化如下:

dfNA <- wideRawDF[colsNA]

TestMCARNormality是一个测试缺失数据是否为MCAR的函数。

使用此功能,当我将dfNA传递给它时,我收到以下错误:

R> library("MissMech")
R> TestMCARNormality(dfNA)
Warning: More than one missing data pattern should be present.
Error in TestMCARNormality(dfNA) :

由于我的数据框中缺少值,我无法弄清楚错误的含义:

> apply(dfNA, 2, function(x) any(is.na(x)))
DO0182U09A3 DO0182U09B3 DO0182U09C3 DO0182U21A1 DO0182U21A2 DO0182U21A3 DO0182U21B1 DO0182U21B2 DO0182U21B3 
       TRUE        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE

我的数据框中还包含数字数据:

> str(dfNA)
'data.frame':   1343 obs. of  9 variables:
 $ DO0182U09A3: num  -102 -101 -101 -101 -101 ...
 $ DO0182U09B3: num  -103.4 -102.8 -103.3 -95.9 -103 ...
 $ DO0182U09C3: num  -103.9 -104.2 -103.9 -99.2 -104.1 ...
 $ DO0182U21A1: num  -105 -105 -105 -104 -102 ...
 $ DO0182U21A2: num  -105 -104 -105 -105 -105 ...
 $ DO0182U21A3: num  -105 -105 -105 -105 -105 ...
 $ DO0182U21B1: num  -102 -103 -104 -104 -104 ...
 $ DO0182U21B2: num  -99.4 -102 -104 -101.4 -104.1 ...
 $ DO0182U21B3: num  -104 -104 -104 -104 -104 ...

我已经搜索了错误,并在此page找到了源代码,但我不是一个强大的程序员并且很难理解它。任何帮助我们都会非常感激。

下面是我正在使用的文件的dput()输出。

wideRawDF 这是包含缺失值和完整值的列的原始DF

colsNA 这是包含NA值的列的字符串

dfNA 是包含NA值的列的子集DF

0 个答案:

没有答案