Search code examples
rrandom-forestimputation

Error message with missForest package (imputation using Random Forest)


My dataframe is below. All variables are numeric, one of them (Total) has about 20 NAs. I would like the missForest package to create imputed values for the NAs in Total. I am running R version 4.2.1 (2022-06-23 ucrt) on Windows.

imp <- structure(list(Years = c(21, 5, 5, 25, 4, 4, 4, 1, 12, 17, 5.5, 
4, 13, 1, 1, 5, 1, 12, 8, 1, 14, 0.8, 6, 5, 4, 7, 4, 21, 3, 2, 
20, 1, 2, 2, 20, 2, 1, 9, 12, 22, 1, 27, 5, 3, 1, 8, 5, 25, 1, 
0.4, 4, 1, 1.5, 1, 1, 21, 5, 0.5, 3, 12, 3, 28, 7, 5, 22, 3.25, 
4, 4, 12, 1, 3, 25, 17, 12, 40, 12, 6, 3, 8, 7, 17, 1, 3, 3, 
6, 4, 7, 1, 7, 6, 4, 11, 1, 5, 2, 15, 1, 3, 7.5, 21, 4, 1.5, 
7, 13, 5, 6, 9, 12.5, 2.5, 1, 17, 8, 5, 22, 25, 13, 5.5, 19, 
9, 3.3, 14, 3, 22, 5, 6, 2.8, 9, 1, 8, 11, 8, 4, 2, 10, 1, 19, 
13, 5, 1, 1.5, 7, 12, 2, 2.5, 1.5, 1, 2, 8, 5, 4, 3, 2, 2.5, 
7, 11, 3, 8, 22, 5, 5, 8, 3.5, 1, 8, 11, 1, 5, 7, 9, 7, 4, 1, 
14, 4, 20, 4, 5, 15.5, 9, 2, 7.5, 1, 13.5, 14, 1, 7, 4, 20, 9.5, 
0, 10, 3, 8, 1, 3, 1, 19, 1, 20, 8, 25, 16, 14, 10, 24, 1, 2, 
4, 0, 11, 2, 1.5, 2, 1, 21, 1, 20, 1.75, 5, 22, 5, 3), Staff = c(7, 
8, 6, 10, 15, 6, 7, 17, 9, 5, 7, 12, 15, 8, 7, 5, 8, 8, 2, 8, 
7, 8, 7, 7, 12, 8, 8, 7, 12, 10, 5, 7, 3, 6, 11, 4, 8, 8, 9, 
6, 9, 9, 18, 10, 9, 5, 7, 20, 9, 4, 9, 6, 5, 4, 3, 5, 11, 8, 
4, 7, 6, 16, 5, 5, 8, 8, 7, 4, 9, 9, 9, 14, 8, 5, 6, 6, 4, 3, 
6, 7, 10, 7, 7, 3, 7, 13, 12, 4, 10, 8, 9, 5, 15, 7, 9, 9, 6, 
5, 15, 7, 6, 5, 7, 8, 7, 7, 5, 9, 15, 12, 15, 5, 8, 7, 7, 5, 
8, 12, 6, 6, 12, 9, 5, 4, 6, 7, 15, 5, 20, 6, 6, 11, 6, 8, 6, 
2, 7, 4, 4, 2, 6, 15, 5, 15, 6, 3, 8, 15, 12, 7, 6, 9, 7, 1, 
10, 5, 7, 4, 5, 1, 6, 5, 20, 8, 10, 1, 11, 9, 9, 5, 3, 8, 6, 
5, 5, 5, 6, 8, 4, 7, 5, 4, 10, 8, 13, 5, 13, 3, 0, 15, 20, 5, 
15, 14, 19, 20, 5, 7, 5, 9, 6, 6, 7, 20, 10, 25, 7, 5, 6, 10, 
45, 10, 6, 5, 6, 8, 13, 12, 15, 7, 4, 1), JDs = c(64, 64, 120, 
200, 30, 70, 370, 75, 300, 20, 68, 170, 77, 275, 132, 81, 875, 
135, 75, 84, 74, 110, 120, 60, 1800, 94, 54, 125, 140, 150, 52, 
190, 53, 170, 325, 18, 300, 86, 130, 375, 140, 200, 104, 50, 
100, 95, 360, 40, 45, 52, 165, 20, 150, 58, 230, 95, 150, 95, 
85, 120, 100, 265, 18, 90, 130, 77, 80, 75, 133, 73, 302, 500, 
70, 50, 55, 72, 35, 60, 100, 90, 130, 41, 200, 29, 90, 35, 68, 
30, 115, 51, 40, 125, 460, 400, 125, 400, 250, 51, 190, 200, 
235, 150, 250, 137, 760, 90, 70, 100, 325, 200, 350, 150, 325, 
23, 17, 50, 415, 650, 120, 96, 200, 4, 71, 700, 60, 224, 203, 
16, 40, 62, 105, 41, 340, 22, 60, 11, 60, 30, 95, 27, 300, 120, 
70, 96, 100, 6, 750, 14, 80, 60, 51, 90, 350, 250, 31, 78, 95, 
32, 185, 65, 65, 30, 24, 65, 550, 100, 200, 80, 47, 45, 37, 250, 
55, 25, 27, 90, 190, 65, 27, 80, 68, 110, 220, 325, 25, 43, 14, 
5, 7, 17, 15, 135, 20, 26, 26, 29, 75, 93, 50, 127, 14, 75, 90, 
50, 105, 190, 8, 45, 150, 300, 15, 25, 150, 60, 32, 85, 15, 144, 
190, 155, 10, 20), Total = c(325000, 250000, 275000, 340000, 
165000, 3e+05, 420000, 8e+05, 5e+05, 100776, 440000, 440000, 
191500, NA, 4e+05, 145000, 6e+05, 4e+05, 125000, 155000, 230000, 
250000, 240000, 2e+05, NA, 250000, 188000, 375000, 190000, 450000, 
290558, 725000, 355000, 350000, 8e+05, 125000, 450000, 255000, 
212500, 6e+05, 342000, 450000, 250000, 228000, 325000, 325000, 
425000, 175000, NA, 240000, NA, 250000, 237000, 330000, 345000, 
195000, 295000, 208000, 225000, NA, 445000, 253000, 75000, 285000, 
4e+05, 2e+05, 308000, 236000, 470000, 190000, 1250000, 480000, 
2e+05, 285000, 232000, 240000, 2e+05, 209000, 250000, 309000, 
NA, 170000, 1e+06, 115200, 565000, 182500, 175000, 250000, 250000, 
265000, 120000, 345000, 425000, 630000, 165000, 650000, 3e+05, 
265000, 345000, 425000, 4e+05, 230000, 425000, 161500, 6e+05, 
251000, 265000, 190000, 420000, 6e+05, 510000, 340000, 650000, 
275000, 120000, 185000, 480000, 550000, 185000, 240000, 560000, 
114000, 150000, 1050000, 230000, NA, 335000, 225000, 260000, 
410000, 315000, 206000, 650000, 160000, 210000, 180000, 275000, 
2e+05, 2e+05, 201094, 395000, 297000, 265000, 3e+05, 275000, 
80000, 134000, 180000, 195000, 850000, 4e+05, 385000, 420000, 
NA, 187000, 180000, 182700, 96597.28, 380000, 2e+05, 260000, 
257500, 185000, 220000, 550000, 315000, 360000, 380000, 185000, 
280000, 225000, 375000, 310000, 170000, 165000, 260000, 350000, 
208000, 110000, 192500, 187500, 216000, 495000, 550000, 114500, 
215000, 185000, NA, 114500, 110000, 250000, 350000, 180000, 118000, 
191500, 1e+05, 230000, 350000, 240000, NA, 180000, 215000, 203000, 
99800, 389900, NA, NA, NA, 4e+05, 6e+05, NA, NA, NA, 220000, 
217500, NA, NA, 210000, 337000, 275000, NA, NA)), row.names = c(NA, 
-222L), class = c("tbl_df", "tbl", "data.frame"))

library(missForest) # installed with dependencies = TRUE

impFor <- missForest(imp)

The statement above returns the following warnings and error.

Warning: argument is not numeric or logical: returning NAWarning: argument is not numeric or logical: returning NAWarning: argument is not numeric or logical: returning NAWarning: argument is not numeric or logical: returning NA

Warning: The response has five or fewer unique values.  Are you sure you want to do regression?

Error in randomForest.default(x = obsX, y = obsY, ntree = ntree, mtry = mtry,  : 
  length of response must be the same as predictors

The first four warnings appear to say that my four variables are neither numeric nor logical, but they are all numeric. The warning regarding regression and "five or fewer unique values" puzzles me because the package's manual makes no reference to a minimum number of unique values. Finally, the error confounds me completely.

I have searched StackOverflow, but the two questions that came up are not relevant.

Thank you for setting me right.


Solution

  • Your data should be in a data.frame format instead of tibble. You could use as.data.frame like this:

    library(missForest) 
    class(imp)
    #> [1] "tbl_df"     "tbl"        "data.frame"
    imp <- as.data.frame(imp)
    class(imp)
    #> [1] "data.frame"
    imp <- missForest(imp)
    imp
    #> $ximp
    #>     Years Staff  JDs      Total
    #> 1   21.00     7   64  325000.00
    #> 2    5.00     8   64  250000.00
    #> 3    5.00     6  120  275000.00
    #> 4   25.00    10  200  340000.00
    #> 5    4.00    15   30  165000.00
    #> 6    4.00     6   70  300000.00
    #> 7    4.00     7  370  420000.00
    #> 8    1.00    17   75  800000.00
    #> 9   12.00     9  300  500000.00
    #> 10  17.00     5   20  100776.00
    #> 11   5.50     7   68  440000.00
    #> 12   4.00    12  170  440000.00
    #> 13  13.00    15   77  191500.00
    #> 14   1.00     8  275  422030.00
    #> 15   1.00     7  132  400000.00
    #> 16   5.00     5   81  145000.00
    #> 17   1.00     8  875  600000.00
    #> 18  12.00     8  135  400000.00
    #> 19   8.00     2   75  125000.00
    #> 20   1.00     8   84  155000.00
    #> 21  14.00     7   74  230000.00
    #> 22   0.80     8  110  250000.00
    #> 23   6.00     7  120  240000.00
    #> 24   5.00     7   60  200000.00
    #> 25   4.00    12 1800  564720.00
    #> 26   7.00     8   94  250000.00
    #> 27   4.00     8   54  188000.00
    #> 28  21.00     7  125  375000.00
    #> 29   3.00    12  140  190000.00
    #> 30   2.00    10  150  450000.00
    #> 31  20.00     5   52  290558.00
    #> 32   1.00     7  190  725000.00
    #> 33   2.00     3   53  355000.00
    #> 34   2.00     6  170  350000.00
    #> 35  20.00    11  325  800000.00
    #> 36   2.00     4   18  125000.00
    #> 37   1.00     8  300  450000.00
    #> 38   9.00     8   86  255000.00
    #> 39  12.00     9  130  212500.00
    #> 40  22.00     6  375  600000.00
    #> 41   1.00     9  140  342000.00
    #> 42  27.00     9  200  450000.00
    #> 43   5.00    18  104  250000.00
    #> 44   3.00    10   50  228000.00
    #> 45   1.00     9  100  325000.00
    #> 46   8.00     5   95  325000.00
    #> 47   5.00     7  360  425000.00
    #> 48  25.00    20   40  175000.00
    #> 49   1.00     9   45  185352.00
    #> 50   0.40     4   52  240000.00
    #> 51   4.00     9  165  403167.00
    #> 52   1.00     6   20  250000.00
    #> 53   1.50     5  150  237000.00
    #> 54   1.00     4   58  330000.00
    #> 55   1.00     3  230  345000.00
    #> 56  21.00     5   95  195000.00
    #> 57   5.00    11  150  295000.00
    #> 58   0.50     8   95  208000.00
    #> 59   3.00     4   85  225000.00
    #> 60  12.00     7  120  261252.00
    #> 61   3.00     6  100  445000.00
    #> 62  28.00    16  265  253000.00
    #> 63   7.00     5   18   75000.00
    #> 64   5.00     5   90  285000.00
    #> 65  22.00     8  130  400000.00
    #> 66   3.25     8   77  200000.00
    #> 67   4.00     7   80  308000.00
    #> 68   4.00     4   75  236000.00
    #> 69  12.00     9  133  470000.00
    #> 70   1.00     9   73  190000.00
    #> 71   3.00     9  302 1250000.00
    #> 72  25.00    14  500  480000.00
    #> 73  17.00     8   70  200000.00
    #> 74  12.00     5   50  285000.00
    #> 75  40.00     6   55  232000.00
    #> 76  12.00     6   72  240000.00
    #> 77   6.00     4   35  200000.00
    #> 78   3.00     3   60  209000.00
    #> 79   8.00     6  100  250000.00
    #> 80   7.00     7   90  309000.00
    #> 81  17.00    10  130  279905.83
    #> 82   1.00     7   41  170000.00
    #> 83   3.00     7  200 1000000.00
    #> 84   3.00     3   29  115200.00
    #> 85   6.00     7   90  565000.00
    #> 86   4.00    13   35  182500.00
    #> 87   7.00    12   68  175000.00
    #> 88   1.00     4   30  250000.00
    #> 89   7.00    10  115  250000.00
    #> 90   6.00     8   51  265000.00
    #> 91   4.00     9   40  120000.00
    #> 92  11.00     5  125  345000.00
    #> 93   1.00    15  460  425000.00
    #> 94   5.00     7  400  630000.00
    #> 95   2.00     9  125  165000.00
    #> 96  15.00     9  400  650000.00
    #> 97   1.00     6  250  300000.00
    #> 98   3.00     5   51  265000.00
    #> 99   7.50    15  190  345000.00
    #> 100 21.00     7  200  425000.00
    #> 101  4.00     6  235  400000.00
    #> 102  1.50     5  150  230000.00
    #> 103  7.00     7  250  425000.00
    #> 104 13.00     8  137  161500.00
    #> 105  5.00     7  760  600000.00
    #> 106  6.00     7   90  251000.00
    #> 107  9.00     5   70  265000.00
    #> 108 12.50     9  100  190000.00
    #> 109  2.50    15  325  420000.00
    #> 110  1.00    12  200  600000.00
    #> 111 17.00    15  350  510000.00
    #> 112  8.00     5  150  340000.00
    #> 113  5.00     8  325  650000.00
    #> 114 22.00     7   23  275000.00
    #> 115 25.00     7   17  120000.00
    #> 116 13.00     5   50  185000.00
    #> 117  5.50     8  415  480000.00
    #> 118 19.00    12  650  550000.00
    #> 119  9.00     6  120  185000.00
    #> 120  3.30     6   96  240000.00
    #> 121 14.00    12  200  560000.00
    #> 122  3.00     9    4  114000.00
    #> 123 22.00     5   71  150000.00
    #> 124  5.00     4  700 1050000.00
    #> 125  6.00     6   60  230000.00
    #> 126  2.80     7  224  756680.00
    #> 127  9.00    15  203  335000.00
    #> 128  1.00     5   16  225000.00
    #> 129  8.00    20   40  260000.00
    #> 130 11.00     6   62  410000.00
    #> 131  8.00     6  105  315000.00
    #> 132  4.00    11   41  206000.00
    #> 133  2.00     6  340  650000.00
    #> 134 10.00     8   22  160000.00
    #> 135  1.00     6   60  210000.00
    #> 136 19.00     2   11  180000.00
    #> 137 13.00     7   60  275000.00
    #> 138  5.00     4   30  200000.00
    #> 139  1.00     4   95  200000.00
    #> 140  1.50     2   27  201094.00
    #> 141  7.00     6  300  395000.00
    #> 142 12.00    15  120  297000.00
    #> 143  2.00     5   70  265000.00
    #> 144  2.50    15   96  300000.00
    #> 145  1.50     6  100  275000.00
    #> 146  1.00     3    6   80000.00
    #> 147  2.00     8  750  134000.00
    #> 148  8.00    15   14  180000.00
    #> 149  5.00    12   80  195000.00
    #> 150  4.00     7   60  850000.00
    #> 151  3.00     6   51  400000.00
    #> 152  2.00     9   90  385000.00
    #> 153  2.50     7  350  420000.00
    #> 154  7.00     1  250  434900.00
    #> 155 11.00    10   31  187000.00
    #> 156  3.00     5   78  180000.00
    #> 157  8.00     7   95  182700.00
    #> 158 22.00     4   32   96597.28
    #> 159  5.00     5  185  380000.00
    #> 160  5.00     1   65  200000.00
    #> 161  8.00     6   65  260000.00
    #> 162  3.50     5   30  257500.00
    #> 163  1.00    20   24  185000.00
    #> 164  8.00     8   65  220000.00
    #> 165 11.00    10  550  550000.00
    #> 166  1.00     1  100  315000.00
    #> 167  5.00    11  200  360000.00
    #> 168  7.00     9   80  380000.00
    #> 169  9.00     9   47  185000.00
    #> 170  7.00     5   45  280000.00
    #> 171  4.00     3   37  225000.00
    #> 172  1.00     8  250  375000.00
    #> 173 14.00     6   55  310000.00
    #> 174  4.00     5   25  170000.00
    #> 175 20.00     5   27  165000.00
    #> 176  4.00     5   90  260000.00
    #> 177  5.00     6  190  350000.00
    #> 178 15.50     8   65  208000.00
    #> 179  9.00     4   27  110000.00
    #> 180  2.00     7   80  192500.00
    #> 181  7.50     5   68  187500.00
    #> 182  1.00     4  110  216000.00
    #> 183 13.50    10  220  495000.00
    #> 184 14.00     8  325  550000.00
    #> 185  1.00    13   25  114500.00
    #> 186  7.00     5   43  215000.00
    #> 187  4.00    13   14  185000.00
    #> 188 20.00     3    5  132532.25
    #> 189  9.50     0    7  114500.00
    #> 190  0.00    15   17  110000.00
    #> 191 10.00    20   15  250000.00
    #> 192  3.00     5  135  350000.00
    #> 193  8.00    15   20  180000.00
    #> 194  1.00    14   26  118000.00
    #> 195  3.00    19   26  191500.00
    #> 196  1.00    20   29  100000.00
    #> 197 19.00     5   75  230000.00
    #> 198  1.00     7   93  350000.00
    #> 199 20.00     5   50  240000.00
    #> 200  8.00     9  127  259289.83
    #> 201 25.00     6   14  180000.00
    #> 202 16.00     6   75  215000.00
    #> 203 14.00     7   90  203000.00
    #> 204 10.00    20   50   99800.00
    #> 205 24.00    10  105  389900.00
    #> 206  1.00    25  190  466223.67
    #> 207  2.00     7    8  153912.76
    #> 208  4.00     5   45  249760.00
    #> 209  0.00     6  150  400000.00
    #> 210 11.00    10  300  600000.00
    #> 211  2.00    45   15  190321.17
    #> 212  1.50    10   25  143960.88
    #> 213  2.00     6  150  350892.50
    #> 214  1.00     5   60  220000.00
    #> 215 21.00     6   32  217500.00
    #> 216  1.00     8   85  193365.00
    #> 217 20.00    13   15  193093.52
    #> 218  1.75    12  144  210000.00
    #> 219  5.00    15  190  337000.00
    #> 220 22.00     7  155  275000.00
    #> 221  5.00     4   10  143128.61
    #> 222  3.00     1   20  149726.72
    #> 
    #> $OOBerror
    #>     NRMSE 
    #> 0.4584988 
    #> 
    #> attr(,"class")
    #> [1] "missForest"
    

    Created on 2023-02-11 with reprex v2.0.2