Estoy buscando un método de agrupamiento óptimo (discretización) de una variable continua con respecto a una variable binaria de respuesta (objetivo) dada y con un número máximo de intervalos como parámetro.
ejemplo: tengo un conjunto de observaciones de personas con variables de "altura" (numeral continuo) y "has_back_pains" (binario). Quiero discretizar la altura en 3 intervalos (grupos) como máximo con diferentes proporciones de personas con dolores de espalda, de modo que el algoritmo maximice la diferencia entre los grupos (con restricciones dadas, por ejemplo, que cada intervalo tenga al menos x observaciones).
La solución obvia a este problema sería usar árboles de decisión (un modelo simple de una variable), pero no puedo encontrar ninguna función en R que tenga "número máximo de ramas" como parámetro; todos ellos dividen la variable en 2 gropus (<= x y> x). SAS miner tiene un parámetro de "rama máxima" pero estoy buscando una solución no comercial.
Algunas de mis variables tienen solo unos pocos valores únicos (y podrían tratarse como variables discretas), pero también quiero discretizarlas en un número menor de intervalos.
La solución más cercana a mi problema se implementa en el paquete smbinning en R (que se basa en la función ctree del paquete party) pero tiene dos inconvenientes: es imposible establecer el número de intervalos (sin embargo, puede encontrar una solución al cambiarlo el parámetro p) y no funciona cuando el vector de datos tiene menos de 10 valores únicos. De todos modos, puede ver el resultado de ejemplo aquí (las columnas Cutpoint y Odds son cruciales):
Cutpoint CntRec CntGood CntBad CntCumRec CntCumGood CntCumBad PctRec BadRate Odds LnOdds WoE IV
1 <= 272 9081 169 8912 9081 169 8912 0.1874 0.9814 0.0190 -3.9653 -0.6527 0.0596
2 <= 311 8541 246 8295 17622 415 17207 0.1762 0.9712 0.0297 -3.5181 -0.2055 0.0068
3 <= 335 2986 163 2823 20608 578 20030 0.0616 0.9454 0.0577 -2.8518 0.4608 0.0163
4 Missing 27852 1125 26727 48460 1703 46757 0.5747 0.9596 0.0421 -3.1679 0.1447 0.0129
5 Total 48460 1703 46757 NA NA NA 1.0000 0.9649 0.0364 -3.3126 0.0000 0.0956
Oh, soy plenamente consciente de que el binning resulta en la pérdida de información y que hay mejores métodos, pero lo usaré para la visualización de datos y trataré esas variables como un factor.
SPSS Algorithms Optimal Binning
.