1

我有一个 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 ...

我搜索了错误并在此页面上找到了源代码,但我不是一个强大的程序员并且很难理解它。任何有助于了解这一点的帮助将不胜感激。

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

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

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

dfNA 是列的子集 DF,其中包含 NA 值

4

0 回答 0