Existem muitas opções disponíveis no R. Um bom lugar para procurar é o caretpacote que fornece uma boa interface para muitos outros pacotes e opções. Você pode dar uma olhada no site aqui . Existem muitas opções por aí, mas vou ilustrar uma.
Aqui está um exemplo de uso de um filtro simples usando os Rconjuntos de dados "mtcars" integrados (mostrados abaixo).
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Agora, algumas configurações de código (carregamento de pacotes etc.):
# setup a parallel environment
library(doParallel)
cl <- makeCluster(2) # number of cores to use
registerDoParallel(cl)
library(caret)
E podemos ajustar um modelo simples para selecionar variáveis:
fit1 <- sbf(mtcars[, -1], mtcars[, 1],
sbfControl =
sbfControl(functions = rfSBF, method = "repeatedcv", repeats = 10)
)
Visualizando os resultados, obtemos:
fit1
Selection By Filter
Outer resampling method: Cross-Validated (10 fold, repeated 10 times)
Resampling performance:
RMSE Rsquared RMSESD RsquaredSD
2.266 0.9224 0.8666 0.1523
Using the training set, 7 variables were selected:
cyl, disp, hp, wt, vs...
During resampling, the top 5 selected variables (out of a possible 9):
am (100%), cyl (100%), disp (100%), gear (100%), vs (100%)
On average, 7 variables were selected (min = 5, max = 9)
Finalmente, podemos plotar as variáveis selecionadas (in fit1$optVariables) em relação ao resultado mpg:
library(ggplot2)
library(gridExtra)
do.call(grid.arrange,
lapply(fit1$optVariables, function(v) {
ggplot(mtcars, aes_string(x = v, y = "mpg")) +
geom_jitter()
}))
Resultando neste gráfico: 