1
我一直在玩R在R中执行CV,但遇到了LOOCV中折叠返回值的奇怪问题。随机数据生成导致随机标签上的良好预测
首先,我会随机生成数据以及标签,然后我将适合randomForest应该只是噪音。从返回的循环中,我不仅获得了良好的AUC,而且获得了来自t检验的显着p值。我不明白这是如何在理论上发生的,所以我很好奇,如果我试图生成数据/标签的方式是最好的?
这是显示我的问题的代码片段。
library(randomForest)
library(pROC)
n=30
p=900
set.seed(3)
XX=matrix(rnorm(n*p, 0, 1) , nrow=n)
YY=as.factor(sample(c('P', 'C'), n, replace=T))
resp = vector()
for(i in 1:n){
fit = randomForest(XX[-i,], YY[-i])
pred = predict(fit, XX[i,], type = "prob")[2]
resp[i] <- pred
}
t.test(resp~YY)$p.value
roc(YY, resp)$auc
我试图产生所有这些数据有多种方法导致同样的事情
XX=matrix(runif(n*p), nrow=n)
XX=matrix(rnorm(n*p, 0, 1) , nrow=n)
和
random_data=matrix(0, n, p)
for(i in 1:n){
random_data[i,]=jitter(runif(p), factor = 1, amount = 10)
}
XX=as.matrix(random_data)
由于随机森林在这种情况下,导致我发现相关预测相信数据可能不是真正的随机数据。有没有更好的方法可以生成数据或生成随机标签?这可能是R的问题吗?
@ChiPak用'set.seed(1)'我得到的〜0.68的p值,但与'set.seed(3)'我得到一个P-值为〜0.00095。 'roc'来自'pROC',我将编辑我的帖子,将其包含在代码中 – TCulos
我真的不知道R,所以也许我完全不在,但尺寸对创建好的随机数很重要。一行上的随机数与球体上的不一样。随机样本的位置也不只是随机数。也许您至少需要分层抽样? – starmole
您的小样本量可能是一个问题。尝试一个更大的“n”,比如500. – useR