我正在使用 smbinning R包来计算我的数据集中包含的变量信息值。
函数smbinning()
非常简单,必须按如下方式使用:
result = smbinning(df= dataframe, y= "target_variable", x="characteristic_variable", p = 0.05)
因此,df
是您要分析的数据集,y
目标变量和x
是您要计算信息值统计信息的变量;我将所有特征变量枚举为z1, z2, ... z417
,以便能够使用for循环来机械化所有分析过程。
我尝试使用以下for循环:
for (i in 1:417) {
result = smbinning(df=DATA, y = "FLAG", x = "DATA[,i]", p=0.05)
}
以便能够计算与数据框的i
列对应的每个变量的信息值。
DATA
类是" data.frame"而result
一个是"character"
。
那么,我的问题是如何计算每个变量的信息值并将其存储在以result
为对象的对象中?
谢谢!任何帮助将不胜感激!
答案 0 :(得分:6)
没有提供样本数据我只能猜测以下内容是否有效:
results_list = list()
for (i in 1:417) {
current_var = paste0('z', i)
current_result = smbinning(df=DATA, y = "FLAG", x = current_var, p=0.05)
results_list[i] = current_result$iv
}
答案 1 :(得分:5)
您可以尝试使用其中一种apply
方法,迭代z计数。 x
到smbinning
的值应该是列名而不是列。
results = sapply(paste0("z",1:147), function(foo) {
smbinning(df=DATA, y = "FLAG", x = foo, p=0.05)
})
class(results) # should be "list"
length(results) # should be 147
names(results) # should be z1,...
results[[1]] # should be the first result, so you can also iterate by indexing
我尝试了以下内容,因为您没有提供任何数据
> XX=c("IncomeLevel","TOB","RevAccts01")
> res = sapply(XX, function(z) smbinning(df=chileancredit.train,y="FlagGB",x=z,p=0.05))
Warning message:
NAs introduced by coercion
> class(res)
[1] "list"
> names(res)
[1] "IncomeLevel" "TOB" "RevAccts01"
> res$TOB
...
HTH