Мой набор данных представляет собой полные данные с 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
Может кто-нибудь сказать мне, почему это происходит?
Возможно ли, что это происходит из-за того, что число завершенных дел слишком мало?
Спасибо за любые предложения!