Hola. Si tienes una columna con los pesos. con tidyverse es sencillo hacer la muestra usando
tam_muestra <- 1000 muestra <- df %>% sample_n(size = tam_muestra, replace = TRUE, weight = pesos) El 22/1/21 a las 17:58, Manuel Mendoza escribió: > Gracias Jesús, sí, haré remuestreos. Yo suelo usar una función que me pasó > un colega: > > # A function to generate the equal number of samples (n) for different > classes > > bsample <- function(data,cname,n) { > d <- data[-c(1:nrow(data)),] > u <- unique(data[,cname]) > for (uu in u) { > w <- which(data[,cname] == uu) > if (length(w) >= n) { > s <- sample(w,n) > } else { > s <- sample(w,n,replace=TRUE) > } > d <- rbind(d,data[s,]) > } > d > } > > # for your data: > table(data$Clst) > mean<-mean(table(data$Clst)) > data <- bsample(data,'Clst',mean) # this takes 100 records for each class > in your dataset > table(data$Clst) > > Por si le sirve a alguien, Clst sería la variable objetivo. > En vez de bsample(data,'Clst',mean) se puede, p.e., (data,'Clst', *2**mean) > > > Manuel > > El vie, 22 ene 2021 a las 16:10, Jesús Para Fernández (< > j.para.fernan...@hotmail.com>) escribió: > >> Has probado en usar en vez de algoritmos sensibles al coste, usar técnicas >> de remuestreo? Hay un paquete de la UGR llamado imbalance que funciona muy >> bien. >> >> >> ------------------------------ >> *De:* R-help-es <r-help-es-boun...@r-project.org> en nombre de Manuel >> Mendoza <mmend...@fulbrightmail.org> >> *Enviado:* viernes, 22 de enero de 2021 11:43 >> *Para:* Lista R <r-help-es@r-project.org> >> *Asunto:* [R-es] weighted random forest >> >> Buenos días, tengo una base de datos desequilibrados (unbalanced) en la que >> las ausencias son 9 veces más abundantes que las presencias (*ratio *= 9). >> Para árboles de clasificación utilizo una matriz de pérdidas >> parms=list(loss=matrix(c(0, >> FP, *ratio *,0)))o un vector de ponderación que le da 9 veces más peso a >> las presencias. Como cabría esperar, la sensibilidad y sensitividad se >> hacen parecidas. Pasan de ser >> 89/39 a 79/76 y kappa sube de 0.24 a 0.30. >> >> El problema surge cuando intento hacer lo mismo con random forest, y >> supongo que no lo estoy haciendo bien. Uso RFfit <- randomForest(Dep ~. , >> classwt = c(1, *ratio * ), data=data). La sensibilidad y sensitividad se >> quedan casi igual 90/40 y kappa también 0.25. >> >> Sé que se puede hacer con ranger, pero, por razones que no vienen al caso, >> no me viene bien cambiar. >> >> Gracias, como siempre, >> Manuel >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es