R - 逻辑回归

创建回归模型

欢迎来到R语言中的逻辑回归世界!在这个教程中,我们将引导您使用R创建逻辑回归模型的基础知识。我们将从一些基本概念开始,然后深入到代码中。请记住,这个教程是为没有任何编程经验的初学者设计的,所以如果您一开始感到有些迷茫,请不要担心。让我们开始吧!

R - Logistic Regression

什么是逻辑回归?

逻辑回归是一种统计方法,用于分析数据并根据一个或多个预测变量进行预测。它通常用于二分类问题,其中结果可以是“是”(1)或“否”(0)。逻辑回归与线性回归的关键区别在于,逻辑回归预测结果发生的概率,而线性回归预测一个连续值。

为什么使用逻辑回归?

逻辑回归在医疗、金融、市场营销和社会科学等多个领域广泛应用。当您想要了解二元结果与一个或多个预测变量之间的关系时,它尤其有用。例如,您可以使用逻辑回归根据客户的年龄、收入和过去的购买历史预测他们是否会购买产品。

在R中创建逻辑回归模型

在R中创建逻辑回归模型时,我们将使用glm()函数,它代表广义线性模型。以下是一个逐步指南:

第1步:安装和加载必要的库

首先,您需要安装和加载必要的库。我们将使用tidyverse库进行数据操作和可视化,以及caret库进行建模。

install.packages("tidyverse")
install.packages("caret")

library(tidyverse)
library(caret)

第2步:加载数据

接下来,让我们加载数据集。在这个例子中,我们将使用内置的mtcars数据集,它包含关于各种汽车模型的信息。我们将专注于根据汽车的重量和马力预测它是否是跑车。

data(mtcars)
head(mtcars)

第3步:预处理数据

在构建逻辑回归模型之前,我们需要预处理数据。这包括编码分类变量、处理缺失值和缩放特征。在我们的案例中,我们只有数值变量,所以我们不需要进行编码或缩放。但是,我们将创建一个新的二元变量is_sports_car,以指示一辆车是否为跑车。

mtcars <- mtcars %>%
mutate(is_sports_car = ifelse(hp > 150, 1, 0))

第4步:将数据分为训练集和测试集

将数据分为训练集和测试集以评估模型性能是非常重要的。我们将使用caret包中的createDataPartition()函数创建一个分区。

set.seed(123)
trainIndex <- createDataPartition(mtcars$is_sports_car, p = 0.8, list = FALSE)
trainSet <- mtcars[trainIndex, ]
testSet <- mtcars[-trainIndex, ]

第5步:构建逻辑回归模型

现在我们准备构建我们的逻辑回归模型。我们将使用glm()函数,并将family参数设置为binomial,以指定我们想要执行逻辑回归。

model <- glm(is_sports_car ~ wt + hp, data = trainSet, family = binomial)
summary(model)

summary()函数提供了模型的概述,包括系数、标准误差、z值和p值。这些统计数据帮助我们了解每个预测变量的重要性以及它们是否具有统计学意义。

第6步:进行预测并评估模型

一旦我们有了模型,我们就可以用它对测试集进行预测并评估其性能。我们将使用predict()函数生成预测概率,然后使用0.5的阈值将它们转换为二元结果。

predictions <- predict(model, newdata = testSet, type = "response")
predicted_classes <- ifelse(predictions > 0.5, 1, 0)

现在,让我们通过将预测类别与测试集中的实际类别进行比较来计算模型的准确率。

accuracy <- mean(predicted_classes == testSet$is_sports_car) * 100
cat("Accuracy:", accuracy, "%")

就是这样!您已经成功地使用glm()函数在R中创建了一个逻辑回归模型。请记住,这只是一个基本示例,当构建和评估逻辑回归模型时,还有许多其他因素需要考虑,例如特征选择、正则化和模型调整。但这个示例应该为您进入R语言的逻辑回归世界提供了一个良好的起点。

Credits: Image by storyset