我正在建模一个二进制因变量(默认,非默认)。对于变量筛选和选择,我对每个自变量使用了证据权重(WOE)和信息值(IV)。有两个任务 我想执行:
我想从IV低于指定阈值(例如0.2)的初始数据集中删除自变量。
我想用记分卡建模的相应WOE值替换初始数据集自变量值。
问题是信息包返回列表列表中每个变量的WOE箱和相应信息。我最初是在上面手动进行1.和2.操作,也就是说,我将手动创建一个变量大于指定IV的新数据集。请参阅以下我执行第1点的方法:
IV <- Information::create_infotables(data=initial.df, y="default", bins = 10)
print((IV$Summary), row.names=FALSE)
dropped_variables <- names(initial.df) %in% c("V1","V3",...)
screened.df <- initial.df[!dropped_variables]`
其中丢弃的变量是低于IV阈值(例如0.2)的变量。当我们处理大量变量时,这效率很低。对于第2点,我首先尝试使用ifelse语句手动对下限和上限进行硬编码,在其中我自己输入下限和上限(请参见下面的代码作为示例):
final.df <- data.frame(ifelse(3<=Modeling_Data$LTV & Modeling_Data$OCLTV<= 38,-1.5,
ifelse(39<=Modeling_Data$LTV & Modeling_Data$LTV<=49,-1.1...
同样,这是非常低效的。有没有人可以更有效地完成这两个任务1.和2.?任何具有二进制数值因变量的数据集都可以用作工作示例。