模型|使用R语言的blorr包做逻辑回归
编者按:逻辑回归算法和模型是基本的重要的模型,它在信用评分,营销响应,广告点击等领域都发挥着重要作用和价值。我会时常问面试者您怎么理解逻辑回归算法?逻辑回归算法的优势和劣势分别是什么?希望您也好好思考下,有什么见解,请留言。我创建了R语言微信群,定位是R语言学习和实践。您若是想入群,请添加我的微信:luqin360,备注:R语言入群。
我们很高兴向您介绍blorr包,这是一组用于在R中构建和验证二进制逻辑回归模型的工具,它是为初学/中级R用户设计的。
-
全面回归输出
-
变量选择过程
-
双变量分析,模型拟合统计和模型验证工具
-
各种图形和底层数据
如果您知道如何使用glm()构建模型,您会发现blorr非常有用。大多数函数使用类glm的对象作为输入。因此,您只需要使用glm()构建一个模型,然后将其传递给blorr中的函数。一旦你掌握了足够的R知识,你就可以转向tidymodels等提供的更直观的方法,因为它们提供了更多的灵活性,而blorr没有。
安装
# Install release version from CRAN
install.packages("blorr")
# Install development version from GitHub
# install.packages("devtools")
devtools::install_github("rsquaredacademy/blorr")
Shiny 程序
blorr包括一个Shiny的应用程序,可以使用
blr_launch_app()
继续阅读,了解更多关于blorr的特点,或者查看blorr网站上有关使用该包的详细文档。
数据
为了展示blorr的特点,我们将使用银行营销数据集。这些数据与葡萄牙一家银行机构的直接营销活动有关。营销活动是以电话为基础的。通常,同一客户需要多个联系人,以便访问产品(银行定期存款)是否已(“是”)认购(“否”)。它包含原始数据集的随机样本(~4k),可以在
https://archive.ics.uci.edu/ml/datasets/bank+marketing.
双变量分析
让我们从对每个可能的变量和结果变量进行仔细的双变量分析开始。我们将使用信息值和似然比卡方检验为我们的模型选择初始预测变量集。双变量分析目前仅适用于分类预测器。
blr_bivariate_analysis(bank_marketing, y, job, marital, education, default,
housing, loan, contact, poutcome)

WOE和信息值
证据权重(WoE)用于评估特征的不同属性的相对风险,以及将特征转换为变量的手段。 它也是一个非常有用的分箱工具。 任何具有平均odds的组的WoE为零。 负WoE表示该属性的违约值比例高于总体比例,表示风险较高。
信息值用于根据预测能力对变量的顺序进行排名。 高信息值表示高辨别能力。 在评估高度预测特征时,信息值的值将始终为正值,并且可能高于3。 信息值小于0.1的特征通常被视为弱,而追求超过0.30的值。
blr_woe_iv(bank_marketing, job, y)

可视化
k <- blr_woe_iv(bank_marketing, job, y)
plot(k)

多个变量
我们可以使用blr_woe_iv_stats()
为多个变量生成WOE和信息值。
blr_woe_iv_stats(bank_marketing, y, job, marital, education)
逐步回归
对于初始模型,所有的自变量都被放入模型中。我们的目标是包含有限数量的自变量(5-15个),这些自变量都是重要的,而不牺牲太多的模型性能。不包含太多变量的原因是模型会过度拟合,在验证样本上测试时将变得不稳定。变量约简使用正向或向后或逐步变量选择过程。我们将使用blr_step_aic_both()来筛选模型的预测器。
模型
model <- glm(y ~ ., data = bank_marketing, family = binomial(link = 'logit'))
逐步选择摘要
blr_step_aic_both(model)
可视化
model %>%
blr_step_aic_both() %>%
plot()

回归结构
模型
我们可以使用双变量分析和逐步选择过程来筛选预测因子,并使用glm()建立模型。下面模型中使用的预测因子是为了说明,不一定是从二元分析和变量选择过程中筛选出来的。
model <- glm(y ~ age + duration + previous + housing + default +
loan + poutcome + job + marital, data = bank_marketing,
family = binomial(link = 'logit'))
使用blr_regress()生成全面回归输出。它接受下列任何一种
-
使用glm()建立的模型
-
使用公式和数据建立的模型
使用模型
让我们看看由blr_regress()生成的输出:
blr_regress(model)
如果要检查odds比估计值,请将odd_conf_limit设置为TRUE。当我们观察到处理大型数据集时,计算时间显著增加,所以odds比估计值并没有被显式地计算出来。
使用公式
让我们使用模型公式和数据集来生成上述结果。
blr_regress(y ~ age + duration + previous + housing + default +
loan + poutcome + job + marital, data = bank_marketing)
模型拟合统计特性
模型拟合统计数据可用来评估模型与数据的匹配程度,并比较两个不同的模型。输出包括似然比检验、AIC、BIC和一系列伪r平方测度。你可以阅读更多关于伪r平方的信息 https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-what-are-pseudo-r-squareds/.
单一模型
blr_model_fit_stats(model)

模型验证
Hosmer Lemeshow测试
Hosmer和Lemeshow针对具有二元响应的逻辑回归模型开发了拟合优度检验。 该测试涉及基于估计概率的百分位将数据划分为大约十组大致相等的大小。 观察结果按其估计的均匀结果概率的递增顺序排序。 通过Pearson卡方统计量来概括这些组中观察到的和预期观察数之间的差异,然后将其与具有t自由度的卡方分布进行比较,其中t是组的数量减去2.较低的拟合优度值是首选。
blr_test_hosmer_lemeshow(model)

增益表和提升图
提升曲线是在特定截止点捕获的累积事件百分比的图形表示。截止值可以是一个特定的十分位数或百分位数。与排序过程类似,数据按分数的降序排列,然后分组为十分位数/百分位数。然后计算每个十分位/百分位的累积观察数和事件数。lift曲线是使用累积样本百分比作为x轴,事件累积百分比作为y轴创建的。
blr_gains_table(model)

提升图
model %>%
blr_gains_table() %>%
plot()

ROC曲线
ROC曲线是逻辑回归模型截断有效性的图形表示。ROC曲线是利用所有可能的截止点的敏感性和特异性绘制的,即所有概率得分。图是用y轴上的敏感性和x轴上的1-特异性绘制的。ROC曲线上的任意一点代表一个对应于截止点的灵敏度X(1-特异度)测度。ROC曲线下的面积作为模型的验证尺度——面积越大,模型越好。
model %>%
blr_gains_table() %>%
blr_roc_curve()

KS图
KS统计量同样是模型有效性的度量,它是使用升力曲线创建的。创建提升曲线是绘制了发生事件的%。如果我们也在相同的尺度上绘制没有发生时间的% ,在x轴上绘制样本的%,我们将得到另一条曲线。发生事件和没有发生事件的提升曲线之间的最大距离称为KS。对于一个好的模型,KS应该很大(>=0.3),并且应该尽可能地接近事件发生率。

10等分提升图
十等分提升图显示每个十分位数的全局平均事件率的提升。 对于具有良好辨别力的模型,最高十分位数应具有大于全局平均值的事件率。
model %>%
blr_gains_table() %>%
blr_decile_lift_chart()

十分位捕获率
如果模型具有良好的区分能力,那么与底层十分位数相比,顶层十分位数应该具有更高的事件率。
model %>%
blr_gains_table() %>%
blr_decile_capture_rate()

洛伦茨曲线
洛伦茨曲线是一种简单的图形装置,它说明了有关变量在分布上的不平等程度。它是一种不平等的可视化表示,用于衡量预测模型的区分能力。
blr_lorenz_curve(model)

残留与影响诊断
blorr可以生成22个图,用于residual, influence 和 leverage诊断。
influence诊断
blr_plot_diag_influence(model)


Leverage诊断
blr_plot_diag_leverage(model)

Fitted Values 诊断
blr_plot_diag_fit(model)

更多学习
blorr网站包含了关于使用该包的全面文档,包括下面的文章,其中涵盖了使用blorr的各个方面。
原文链接:
https://blog.rsquaredacademy.com/introducing-blorr/
你若是觉得有用,清点赞并分享给其它朋友。更多数据知识,请点击阅读原文。您有任何问题,请留言。
公众号推荐
数据人才(ID:datarencai)
(一个帮助数据人才找工作的公众号,
也分享数据人才学习和生活的有趣事情。)
欢迎关注和随喜分享。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!