Some time ago I raised a support ticket Case CS0718039 proc optimalbin not returning woe value for one bin. It was reported as fixed "following 'Maintenance' revisions have also been tested with your example 5.23.11.0.1026, 5.24.4.0.1671 and 5.25.1.0.1455 and will continue into future versions of SLC".
I currently use SLC Version: 5.25.1.0.1401-GA-release-2025.0. (personal version). I have since had the same issue occur. It is caused by variables whose values exceed 32 decimal places. I have many variables that are created as ratios of two variables.
an example is X=Z/3 which creates values that exhibit the issue.
Through a binary search over various rounding levels applied to the offending variables I have identified that the proc behaves differently (ie produces different results) for the following rounding levels
rounding to 14 decimal places generates woe values for as many bins as proc optimalbin creates which is 2.
rounding to 15 decimal places proc optimalbin creates 4 bins but only 2 woe values
rounding to 16 decimal places proc optimalbin creates 8 bins but only 2 woe values
I am using woe encoding to deal with missing values. I have thousands of features I am using in logistic regression. Over 1000 have missing values. This issue occurs for 11 out of the 1009 features I am attempting to woe encode.
I have macro code that generates woe encoding code for each variable that uses the bin boundaries and woe values generated for each bin. The code generated for the 11 cases that cause proc optiomalbin to have problems, does not do the woe encoding properly.
I have now resorted to rounding all values to 14 decimal places to work around the issue.
As I can no longer update or raise support tickets I am bringing attention to it here so that Geoffrey Mole and Nico Chart are made aware that this is still an issue.