在R中创建提升图

3

假设我有下面这个数据框,其中包含人员和与其相关的某些分数:

Score | hasDefaulted
10    | 0
13    | 0
15    | 1
17    | 0
...

我想在R中制作一个提升图,首先按分数对人口进行排序,然后将人口的百分比放在X轴上,将违约率的百分比放在Y轴上。我找不到一个好的包来控制这个过程。我已经尝试了Lift包Gains包,但我无法掌控它们以实现上述目标。例如,当我尝试使用Lift包时:
plotLift(sort(dataFrame$Score, decreasing=FALSE), dataFrame$hasDefaulted)

我得到了一些奇怪的图形:

但是根据我的需求,图形应该最终看起来像一个累积密度函数。

请有经验的用户向我展示如何正确使用这些包,或将我引导至可以满足要求的包?先感谢您了。

3个回答

9
我总是尝试构建自己的代码,而不是尝试使用不太灵活的东西。
以下是我认为您可以解决问题的方法:
# Creating the data frame
df <- data.frame("Score"=runif(100,1,100),
                 "hasDefaulted"=round(runif(100,0,1),0))

# Ordering the dataset
df <- df[order(df$Score),]

# Creating the cumulative density
df$cumden <- cumsum(df$hasDefaulted)/sum(df$hasDefaulted)

# Creating the % of population
df$perpop <- (seq(nrow(df))/nrow(df))*100

# Ploting
plot(df$perpop,df$cumden,type="l",xlab="% of Population",ylab="% of Default's")

在这里输入图片描述

这是你想要的吗?


(注:该内容为HTML格式,已保留标签)

是的,完美的。谢谢。 - Raj Raina
应该是 order(decreasing = TRUE) - Mez13

6

我认为你在寻找的是收益图而不是提升图。我注意到有些人对它们之间存在一些混淆。你可以参考提升图 来了解更多信息。

require(ROCR)
data(ROCR.simple)
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)

gain <- performance(pred, "tpr", "rpp")
plot(gain, main = "Gain Chart")

我遇到了一个错误,提示“找不到函数“prediction”。 - undefined

1

即使这个问题是5年前提出的,我也想分享我最近发现的一个很好的包,它可以帮助构建GAIN和LIFT图表,并显示增益和提升表格:包名叫做CustomerScoringMetrics

函数:cumGainsChart()cumGainsChart()liftChart()liftTable()等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接