title: Difference between varImp (caret) and importance (randomForest) for Random Forest
body: <p>I do not understand which is the difference between <code>varImp</code> function (<code>caret</code> package) and <code>importance</code> function (<code>randomForest</code> package) for a Random Forest model:</p>
  
  <p>I computed a simple RF classification model and when computing variable importance, I found that the "ranking" of predictors was not the same for both functions:</p>
  
  <p>Here is my code:</p>
  
  <pre><code>rfImp &lt;- randomForest(Origin ~ ., data = TAll_CS,
                         ntree = 2000,
                         importance = TRUE)
  
  importance(rfImp)
  
                                   BREAST       LUNG MeanDecreaseAccuracy MeanDecreaseGini
  Energy_GLCM_R1SC4NG3        -1.44116806  2.8918537            1.0929302        0.3712622
  Contrast_GLCM_R1SC4NG3      -2.61146974  1.5848150           -0.4455327        0.2446930
  Entropy_GLCM_R1SC4NG3       -3.42017102  3.8839464            0.9779201        0.4170445
  ...
  
  varImp(rfImp)
                                   BREAST        LUNG
  Energy_GLCM_R1SC4NG3         0.72534283  0.72534283
  Contrast_GLCM_R1SC4NG3      -0.51332737 -0.51332737
  Entropy_GLCM_R1SC4NG3        0.23188771  0.23188771
  ...
  </code></pre>
  
  <p>I thought they used the same "algorithm" but I am not sure now.</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>In order to reproduce the problem, the <code>ionosphere</code> dataset (kknn package) can be used:</p>
  
  <pre><code>library(kknn)
  data(ionosphere)
  rfImp &lt;- randomForest(class ~ ., data = ionosphere[,3:35],
                         ntree = 2000,
                         importance = TRUE)
  importance(rfImp)
               b        g MeanDecreaseAccuracy MeanDecreaseGini
  V3  21.3106205 42.23040             42.16524        15.770711
  V4  10.9819574 28.55418             29.28955         6.431929
  V5  30.8473944 44.99180             46.64411        22.868543
  V6  11.1880372 33.01009             33.18346         6.999027
  V7  13.3511887 32.22212             32.66688        14.100210
  V8  11.8883317 32.41844             33.03005         7.243705
  V9  -0.5020035 19.69505             19.54399         2.501567
  V10 -2.9051578 22.24136             20.91442         2.953552
  V11 -3.9585608 14.68528             14.11102         1.217768
  V12  0.8254453 21.17199             20.75337         3.298964
  ...
  
  varImp(rfImp)
              b         g
  V3  31.770511 31.770511
  V4  19.768070 19.768070
  V5  37.919596 37.919596
  V6  22.099063 22.099063
  V7  22.786656 22.786656
  V8  22.153388 22.153388
  V9   9.596522  9.596522
  V10  9.668101  9.668101
  V11  5.363359  5.363359
  V12 10.998718 10.998718
  ...
  </code></pre>
  
  <p>I think I am missing something...</p>
  
  <p><strong>EDIT 2</strong></p>
  
  <p>I figured out that if you do the mean of each row of the first two columns of <code>importance(rfImp)</code>, you get the results of <code>varImp(rfImp)</code>:</p>
  
  <pre><code>impRF &lt;- importance(rfImp)[,1:2]
  apply(impRF, 1, function(x) mean(x))
         V3        V4        V5        V6        V7        V8        V9 
  31.770511 19.768070 37.919596 22.099063 22.786656 22.153388  9.596522 
        V10       V11       V12 
   9.668101  5.363359 10.998718     ...
  
  # Same result as in both columns of varImp(rfImp)
  </code></pre>
  
  <p>I do not know why this is happening, but there has to be an explanation for that.</p>