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