J'ai joué avec l'implémentation de CV dans R mais j'ai rencontré un problème étrange avec la valeur renvoyée parmi les replis dans LOOCV. Je vais d'abord générer aléatoirement des données ainsi que des étiquettes, puis j'ajouterai un randomForest sur ce qui devrait être du bruit. A partir de la boucle retournée, j'obtiens non seulement une bonne AUC mais une valeur p significative d'un test t. Je ne comprends pas comment cela pourrait se produire théoriquement, j'étais curieux de savoir si les méthodes que j'utilisais pour générer des données/étiquettes étaient les meilleures?Génération de données aléatoires menant à une bonne prédiction sur les étiquettes aléatoires
Voici un extrait de code qui montre mon problème.
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
J'ai essayé plusieurs façons de générer des données qui résultent toutes de la même chose
XX=matrix(runif(n*p), nrow=n)
XX=matrix(rnorm(n*p, 0, 1) , nrow=n)
et
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)
Depuis la forêt d'arbres décisionnels est de trouver des prédicteurs pertinents dans ce scénario qui me conduit croire que les données peuvent ne pas être vraiment aléatoires. Y a-t-il une meilleure façon possible de générer des données ou de générer les étiquettes aléatoires? Est-il possible que ce soit un problème avec R?
@ChiPak avec 'set.seed (1)' Je reçois une valeur de p ~ 0,68 mais avec 'set.seed (3)' Je reçois un P- valeur de ~ 0,00095. 'roc' vient du' pROC', je vais éditer mon post pour l'inclure dans le code – TCulos
Je n'ai vraiment aucune idée de R, alors peut-être que je suis complètement éteint, mais les dimensions importent beaucoup pour créer de bons nombres aléatoires. Les nombres aléatoires sur une ligne ne sont pas les mêmes que sur une sphère. Les emplacements d'échantillons aléatoires ne sont pas seulement des nombres aléatoires. Peut-être faut-il au moins un échantillonnage stratifié? – starmole
Votre petite taille d'échantillon pourrait être un problème. Essayez un plus gros 'n' comme 500. – useR