Почему сообщение об ошибке ($ operator недопустим для атомарных векторов) отображается при запуске пакета R mice с высокой долей пропущенных значений? - PullRequest
0 голосов
/ 04 июня 2019

Мой набор данных представляет собой полные данные с 14 категориальными переменными:

> str(Comp.HD.discr)
'data.frame':   303 obs. of  14 variables:
 $ age     : Factor w/ 2 levels "0","1": 2 2 2 1 1 2 1 1 1 1 ...
 $ sex     : Factor w/ 2 levels "0","1": 1 2 2 2 2 2 2 1 1 2 ...
 $ cp      : Factor w/ 4 levels "1","2","3","4": 3 2 2 3 2 2 3 4 4 2 ...
 $ trestbps: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ chol    : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 2 ...
 $ fbs     : Factor w/ 2 levels "0","1": 2 2 1 1 1 1 1 1 1 1 ...
 $ restecg : Factor w/ 3 levels "0","1","2": 1 3 3 1 1 1 3 3 3 1 ...
 $ thalach : Factor w/ 2 levels "0","1": 1 1 1 2 2 2 2 2 2 2 ...
 $ exang   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ oldpeak : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ slope   : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
 $ ca      : Factor w/ 4 levels "0","1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
 $ thal    : Factor w/ 3 levels "3","6","7": 1 1 1 1 1 1 1 1 1 1 ...
 $ num     : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...

Я случайным образом назначаю некоторые пропущенные значения и затем создаю вмененные данные мышами. Но иногда, когда я использую мышь, я получаю сообщение об ошибке:

 iter imp variable
  1   1  age error: $ operator is invalid for atomic vectors

, особенно если доля пропущенных значений высока (<0,2 - это хорошо). </p>

Мой код такой:


miss = 0.4
set.seed(123456)

Miss.data = Comp.HD.discr
pos = matrix(1:3939,nrow = 303)
mi = sample(c(1:3939), floor(miss*3939))
miss.ind = matrix(0,nrow=nrow(pos), ncol=ncol(pos))
miss.ind[pos%in%mi==T] = 1
to.miss = which(miss.ind == 1, arr.ind = T)
Miss.data[to.miss] = NA
perc.imp = mice(Miss.data, m = 5)

и мои недостающие данные с проблемой выглядят так:

> Miss.data
    age  sex   cp trestbps chol  fbs restecg thalach exang oldpeak slope   ca thal num
1    63 <NA>  1.0      145   NA  1.0     2.0      NA   0.0     2.3   3.0  0.0 <NA>   0
2    NA <NA>  4.0       NA   NA  0.0    <NA>     108  <NA>     1.5  <NA>  3.0  3.0   1
3    67 <NA>  4.0       NA  229 <NA>    <NA>     129   1.0     2.6  <NA>  2.0 <NA>   1
4    37 <NA>  3.0      130   NA <NA>     0.0      NA  <NA>      NA  <NA> <NA> <NA>   0
5    NA  0.0  2.0       NA  204  0.0     2.0      NA   0.0     1.4   1.0  0.0  3.0   0
6    56  1.0  2.0       NA   NA  0.0    <NA>     178  <NA>     0.8   1.0  0.0 <NA>   0
7    62  0.0 <NA>      140  268  0.0     2.0      NA   0.0      NA   3.0 <NA>  3.0   1
8    NA  0.0  4.0      120  354 <NA>    <NA>      NA  <NA>     0.6  <NA>  0.0 <NA>   0
9    63 <NA>  4.0       NA  254  0.0     2.0     147  <NA>      NA   2.0  1.0  7.0   1
10   53  1.0  4.0      140   NA  1.0    <NA>     155  <NA>      NA   3.0  0.0 <NA>   1
11   57  1.0  4.0      140   NA <NA>     0.0     148  <NA>     0.4  <NA>  0.0  6.0   0
12   56  0.0  2.0      140   NA  0.0     2.0     153  <NA>     1.3   2.0  0.0 <NA>   0
13   56  1.0  3.0      130   NA <NA>     2.0     142   1.0     0.6   2.0  1.0 <NA>   1
14   44 <NA>  2.0       NA   NA  0.0     0.0     173  <NA>     0.0   1.0  0.0 <NA>   0
15   NA <NA> <NA>      172  199 <NA>     0.0      NA  <NA>     0.5   1.0 <NA> <NA>   0
16   NA  1.0  3.0       NA  168  0.0     0.0      NA   0.0      NA   1.0 <NA>  3.0   0
17   48 <NA> <NA>      110   NA <NA>    <NA>      NA  <NA>     1.0  <NA> <NA> <NA>   1
18   54  1.0  4.0      140   NA <NA>     0.0      NA  <NA>     1.2   1.0  0.0 <NA>   0
19   48  0.0  3.0      130   NA  0.0     0.0     139   0.0     0.2  <NA>  0.0 <NA>   0
20   49  1.0  2.0      130   NA  0.0     0.0     171  <NA>     0.6  <NA> <NA> <NA>   0
21   NA  1.0  1.0      110   NA <NA>     2.0      NA  <NA>      NA  <NA>  0.0 <NA>   0
22   58  0.0  1.0       NA   NA <NA>     2.0     162   0.0      NA   1.0  0.0  3.0   0
23   58 <NA> <NA>      120   NA  0.0    <NA>     160   0.0      NA  <NA>  0.0  3.0   1
24   NA  1.0 <NA>       NA  224 <NA>     2.0      NA   0.0      NA   1.0  2.0 <NA>   1
25   NA  1.0  4.0      130  206 <NA>     2.0     132   1.0      NA  <NA>  2.0  7.0   1
26   NA  0.0  3.0       NA  219 <NA>     0.0     158   0.0     1.6  <NA> <NA>  3.0   0
27   58  0.0 <NA>       NA  340  0.0    <NA>     172  <NA>      NA   1.0 <NA> <NA>   0
28   66  0.0 <NA>      150   NA <NA>     0.0      NA   0.0     2.6  <NA>  0.0 <NA>   0
29   43 <NA> <NA>      150   NA  0.0    <NA>      NA   0.0     1.5   1.0  0.0  3.0   0
30   40  1.0  4.0      110  167  0.0    <NA>     114   1.0     2.0   2.0 <NA> <NA>   1
31   69  0.0  1.0       NA  239  0.0    <NA>     151   0.0      NA   1.0 <NA>  3.0   0
32   NA  1.0  4.0       NA   NA  1.0    <NA>     160   1.0     1.4   1.0 <NA> <NA>   1
33   64  1.0  3.0      140   NA  0.0     0.0     158   0.0      NA   1.0 <NA>  3.0   1
34   NA  1.0  4.0      135  234 <NA>     0.0      NA  <NA>      NA  <NA> <NA> <NA>   0
35   NA  1.0  3.0      130   NA  0.0     0.0      NA  <NA>      NA   1.0 <NA>  3.0   0
36   NA <NA>  4.0      140  226  0.0     0.0     178   0.0      NA   1.0  0.0 <NA>   0
37   NA  1.0  4.0      120  177 <NA>     2.0      NA   1.0     2.5  <NA>  0.0  7.0   1
38   NA  1.0 <NA>      150  276  0.0     2.0      NA  <NA>     0.6  <NA>  1.0  6.0   1
39   NA  1.0  4.0      132   NA  0.0    <NA>      NA   1.0     1.2   2.0 <NA> <NA>   1
40   NA <NA>  3.0      150   NA  1.0    <NA>     137  <NA>     1.0  <NA>  0.0  3.0   0
41   65  0.0  4.0       NA   NA  0.0     2.0     114  <NA>      NA  <NA>  3.0 <NA>   1
42   NA <NA> <NA>      140  199  0.0    <NA>     178   1.0     1.4   1.0 <NA>  7.0   0
43   NA <NA>  2.0      160   NA  0.0     0.0      NA   0.0     0.4   1.0  2.0  3.0   0
44   59 <NA>  3.0      150  212  1.0     0.0     157   0.0      NA  <NA>  0.0 <NA>   0
45   NA <NA>  4.0      130  330  0.0     2.0      NA   0.0     0.0   1.0  0.0 <NA>   1
46   58  1.0  3.0       NA  230 <NA>    <NA>     165   0.0      NA   2.0 <NA>  7.0   1
47   NA  1.0 <NA>       NA  175  0.0     0.0     123   0.0     0.6   1.0  0.0  3.0   0
48   NA  1.0  4.0      150  243  0.0     2.0      NA   0.0      NA   2.0  0.0 <NA>   1
49   65  0.0 <NA>       NA  417  1.0     2.0     157   0.0     0.8   1.0 <NA> <NA>   0
50   NA  1.0  3.0      130  197  1.0    <NA>     152   0.0     1.2   3.0  0.0  3.0   0
...

и отсутствующий паттерн такой (частичный)

> md.pattern(Miss.data)
  num fbs exang trestbps age slope  ca restecg  cp chol sex thal thalach oldpeak     
1   1   1     1        1   1     1   1       1   1    1   1    1       1       1    0
1   1   1     1        1   1     1   1       1   1    1   1    1       1       0    1
2   1   1     1        1   1     1   1       1   1    1   1    0       0       0    3
1   1   1     1        1   1     1   1       1   1    1   0    1       0       1    2
1   1   1     1        1   1     1   1       1   1    1   0    0       1       0    3
1   1   1     1        1   1     1   1       1   1    1   0    0       0       1    3
1   1   1     1        1   1     1   1       1   1    0   0    1       0       0    4
1   1   1     1        1   1     1   1       1   1    0   0    0       0       1    4
1   1   1     1        1   1     1   1       1   0    1   1    1       0       1    2
1   1   1     1        1   1     1   1       1   0    1   0    1       1       0    3
1   1   1     1        1   1     1   1       1   0    1   0    1       0       0    4
1   1   1     1        1   1     1   1       1   0    0   1    1       1       1    2
1   1   1     1        1   1     1   1       1   0    0   0    1       1       1    3
1   1   1     1        1   1     1   1       1   0    0   0    1       0       1    4
1   1   1     1        1   1     1   1       0   1    1   1    1       1       1    1
1   1   1     1        1   1     1   1       0   1    1   1    0       1       0    3
1   1   1     1        1   1     1   1       0   1    1   0    0       1       1    3
1   1   1     1        1   1     1   1       0   1    0   1    0       0       1    4
1   1   1     1        1   1     1   1       0   1    0   0    0       1       1    4
2   1   1     1        1   1     1   1       0   0    1   1    1       1       1    2

...

1   1   0     0        0   0     1   1       1   1    0   1    1       1       1    5
1   1   0     0        0   0     1   1       1   1    0   1    0       1       0    7
1   1   0     0        0   0     1   0       0   1    1   0    1       0       0    9
1   1   0     0        0   0     0   1       1   1    0   1    1       1       1    6
1   1   0     0        0   0     0   1       0   0    1   0    0       1       0   10
1   1   0     0        0   0     0   0       1   0    0   1    1       0       0   10
    0 104   111      115 117   119 120     121 122  122 124  129     133     141 1578


Может кто-нибудь сказать мне, почему это происходит? Возможно ли, что это происходит из-за того, что число завершенных дел слишком мало?

Спасибо за любые предложения!

...