从不会到不怕——用R语言搞懂Logistic回归

文摘   2024-11-03 03:53   德国  

逻辑回归概述

逻辑回归(Logistic Regression)是一种常用的二分类统计模型,用于预测结果属于某个类别的概率。与线性回归不同,逻辑回归的目标变量是离散的(通常为0和1,分别表示两个类别),通过logistic函数将线性关系映射到概率上。

逻辑回归的工作原理

逻辑回归使用如下的公式将线性组合映射到概率值:

逻辑回归实现步骤

以下是实现逻辑回归的主要步骤,包括数据加载、预处理、模型构建、评估和结果可视化。

1. 数据加载和初步检查

首先需要加载数据并查看数据结构,以了解各变量的类型和分布情况。
# 加载数据data <- mtcarshead(data)
# 将目标变量 am 转换为因子data$am <- factor(data$am, levels = c(0, 1), labels = c("Manual", "Automatic"))
# 查看数据结构str(data)

2. 数据预处理

在逻辑回归中,确保数据清洁且变量类型正确非常重要。数据预处理通常包括以下几个方面:
  • 缺失值处理:可以选择删除缺失值或进行填补。
  • 因子转换:将分类变量(如性别)转换为因子类型。
  • 变量筛选:根据业务需求或特征重要性选择变量。
# 检查并处理缺失值data <- na.omit(data)# 将分类变量转换为因子data$am <- factor(data$am, levels = c(0, 1), labels = c("Manual", "Automatic"))

3. 数据探索性分析(EDA)

使用可视化和统计方法检查变量间的关系以及目标变量的分布情况,有助于我们更好地理解数据,做出合理的模型假设。例如:
# 加载 ggplot2 库library(ggplot2)
# 绘制油耗 (mpg) 与传动系统类型 (am) 的箱线图ggplot(data, aes(x = am, y = mpg, fill = am)) + geom_boxplot() +   labs(title = "Transmission Type vs. MPG", x = "Transmission Type", y = "Miles per Gallon")

4. 构建逻辑回归模型

在R中,可以使用glm()函数来构建逻辑回归模型,指定family = binomial即可表示逻辑回归。
  • 简单模型:使用单一变量进行预测。
# 使用重量 (wt) 预测传动系统类型 (am)simple_model <- glm(am ~ wt, data = data, family = binomial)summary(simple_model)
多变量模型:使用所有变量预测目标变量,构建更复杂的模型。
# 使用所有变量预测传动系统类型full_model <- glm(am ~ ., data = data, family = binomial)summary(full_model)

5. 模型输出解读

模型的输出包含多个关键部分:
  • 系数(Coefficients):显示各个变量的系数。系数表示log-odds的变化,例如,当重量增加时,自动传动的概率如何变化。
  • 残差偏差和AIC:残差偏差和AIC值用于衡量模型的拟合效果,AIC越低表示模型更好。
  • p值:p值用于评估系数的显著性,p值小于0.05表示该变量对预测具有显著贡献。

6. 模型评估

伪R平方(McFadden’s Pseudo R-squared):衡量模型的整体拟合效果,伪R平方越高越好。
# 计算伪R平方null_deviance <- full_model$null.devianceresidual_deviance <- full_model$deviancepseudo_r2 <- 1 - (residual_deviance / null_deviance)print(paste("McFadden伪R平方:", round(pseudo_r2, 4)))
混淆矩阵:通过混淆矩阵来评估模型的分类效果,检查预测的准确性。
# 预测值predictions <- ifelse(predict(full_model, type = "response") > 0.5, "Automatic", "Manual")
# 混淆矩阵table(Predicted = predictions, Actual = data$am)

7. 可视化模型结果

绘制预测概率图,以直观展示预测结果和实际情况的吻合程度。
# 创建预测概率数据框data$predicted_prob <- predict(full_model, type = "response")
# 排序并分配样本排名data <- data[order(data$predicted_prob),]data$rank <- 1:nrow(data)
# 绘制预测概率图ggplot(data, aes(x = rank, y = predicted_prob, color = am)) + geom_point() +  labs(title = "Predicted Probability of Transmission Type", x = "Sample Rank", y = "Predicted Probability")

总结

  • 逻辑回归的核心思想:逻辑回归利用logistic函数将线性关系映射到概率空间,以解决二分类问题。
  • 实现步骤
  1. 数据加载和预处理。
  2. 数据探索性分析,理解数据分布和变量关系。
  3. 使用glm()函数构建逻辑回归模型。
  4. 解读模型输出,包括系数、残差偏差、AIC和p值。
  5. 使用伪R平方和混淆矩阵评估模型效果。
  6. 通过可视化方式展示模型预测结果。
  • R代码总结:R语言中的glm()函数可以轻松实现逻辑回归,配合ggplot2库的可视化功能,可以更好地展示模型效果和数据分布。

  • Dr Leo
    ENT医生的科研分享
     最新文章