我对从R中用于RandomForest包以评估变量重要性的函数获得的不同结果感到困惑。
我的模型定义为:
model <- randomForest(nee_m ~ ., data = nee, ntree = 200, mtry = 7, importance=TRUE)
nee_m是主要变量,而8个解释变量分别是sw_in,ta,vpd,rew,rh,pluie,vent,co2。
这是我的结果: (1)使用varImp(model),%IncMSE的结果为:
Overall
ta 118.08770
rh 71.48408
vpd 62.24601
pluie 23.28636
vent 151.23066
sw_in 886.14511
二氧化碳208.20772
rew 305.57892
(2)使用model $ importance [order(model $ importance [,1],reduction = TRUE),]:结果为:
%IncMSE IncNodePurity
sw_in 43.12005718 1451599.722
vpd 4.70746641 201849.024
rew 4.16280001 189716.854
ta 4.02571339 121612.437
rh 2.73049849 102672.109
二氧化碳2.37747947 81391.062
vent 0.57235041 61368.274
pluie 0.02396995 2851.669
如果我按照(2)的降序排列(1)并计算相对值:我得到(3):
Overall
sw_in 48.522222%
赢得16.732438%
二氧化碳CO2 11.400730%
排放量8.2808645%
ta 6.4660714%
rh 3.914219%
vpd 3.408375%
pluie 1.275080%
(2)和(3)之间的值和重要性顺序不同,我应该相信哪些结果,为什么它们不同?我可能对了解结果一无所知。
预先感谢您的帮助
编辑: 非常奇怪的结果: 如果我设置为:varImp(model, scale = FALSE ),就值和顺序而言,我得到的结果与(2)完全相同!因此,该值介于0到100之间,与文档中所说明的相反:即,如果将scale = FALSE设置为该值,则该值不应介于0到100之间,而仅当您设置默认的varImp(model)时(或varImp(model,scale = TRUE),则应该在0到100之间... 这不是我在(3)中所拥有的... 那么,哪个结果有意义呢? 我真的很困惑...