我是新来的R,所以很抱歉,如果这个问题是微不足道的。我尝试通过对类标签进行混洗来计算我的随机森林分类的p值。这里使用的虹膜数据,到目前为止我的代码设置一个例子:P值为随机森林
rows <- sample(rownames(iris), replace = TRUE, size = length(rownames(iris))*0.8)
train <- iris[rows,]
validation <- iris[-as.numeric(names(table(rows))),]
fit <- randomForest:::randomForest(Species ~ .,
data=train,
importance=TRUE,
ntree=1000)
Prediction <- predict(fit, validation)
confmatrix <- table(validation[,"Species"], Prediction)
confusionMatrix(confmatrix)
我读到了一个名为rfPerform包。阅读帮助页面后,我想出了下面的代码:
rfPermute(Species ~ ., data = iris, ntree = 100, na.action = na.omit, nrep = 50)$pval
这里我的问题:我不明白输出(缩放和无标度)(对不起,我不是一个统计学家和阅读我仍然后没有区别)。是否有可能通过诸如此类获得单一的p值?计算所有p值的中位数?我想要解决的问题是我的随机森林的结果偶然发生还是显着。我对一个特定的功能或一个特定的类不感兴趣。
感谢您的帮助!
谢谢你的回答!但是如果你洗牌的话(用样本(iris [,“Species”])),并且你再次执行你的随机森林,并且重复这个几次,你会收到一个基于随机分类的RF对象。那么计算每个混淆矩阵的平衡精度然后比较RF的平衡精度分布与真实类别和随机类别的分布是否可行呢?那么你有两个BACC分布并通过t.test比较它们?如果差异显着,可以得出结论:分类不是随机的?那么你只有1 pV – ELHL
新的p值基本上是说,如果不同的样本在统计上显着不同。关于这方面的信息并不多。 –