我正在寻找相对于给定响应(目标)二进制变量并以最大间隔数为参数的连续变量的最佳合并方法(离散化)。
示例:我对“身高”(数字连续)和“ has_back_pains”(二进制)变量的人有一组观察。我想将高低离散化为最多3个间隔(组),以不同比例的背部疼痛患者来做,这样算法就可以最大程度地使各组之间的差异最大化(例如,在给定限制的情况下,每个间隔至少有x个观察值)。
解决此问题的明显方法是使用决策树(一个简单的单变量模型),但我在R中找不到任何将“最大分支数”作为参数的函数-它们全部将变量除分成2块(<= x和> x)。SAS矿工具有“最大分支”参数,但我正在寻找非商业解决方案。
我的一些变量只有几个唯一值(可以视为离散变量),但我想将它们离散化为较小的间隔。
与我的问题最接近的解决方案是在R中的smbinning包中实现的(依赖于party包中的ctree函数),但是它有两个缺点:无法设置间隔数(但是,您可以通过更改间隔找到解决方法p参数),并且当数据向量的唯一值少于10个时无效。无论如何,您可以在此处看到示例输出(Cutpoint和Odds列至关重要):
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
哦,我完全意识到合并会导致信息丢失,并且有更好的方法,但是我将使用它进行数据可视化并将这些变量视为一个因素。
SPSS Algorithms Optimal Binning
。