04 二项回归模型
4.1 简介
二项回归模型用于处理二元响应变量,即因变量是0或1的分类变量。最常见的二项回归模型是逻辑回归,它可以用来预测事件发生的概率。
逻辑回归模型假设:
其中,p 是事件发生的概率,x1,x2,…,xp是自变量。
4.2 拟合逻辑回归模型
在Python中,我们可以使用statsmodels
或scikit-learn
库来拟合逻辑回归模型。下面是使用statsmodels
的示例:
import statsmodels.api as sm
import numpy as np
import pandas as pd
# 生成模拟数据
np.random.seed(0)
X = np.random.rand(100, 2)
y = (X[:, 0] + X[:, 1] + np.random.randn(100) > 1.5).astype(int) # 因变量
# 添加截距项
X = sm.add_constant(X)
# 拟合逻辑回归模型
logit_model = sm.Logit(y, X).fit()
# 输出回归结果
print(logit_model.summary())
4.3 解释逻辑回归系数
逻辑回归模型的系数表示对数几率的变化。具体来说,每个系数 βj\beta_jβj 表示自变量 xjx_jxj 每增加一个单位时,对数几率的变化量。
在实际应用中,我们通常关心自变量对事件发生概率 ppp 的影响,这可以通过对数几率的逆函数来计算:
4.4 模型诊断与检验
与线性回归类似,逻辑回归模型也需要进行诊断和检验。常用的方法包括似然比检验、AIC、BIC等。我们可以通过以下代码来获取这些信息:
# 获取AIC和BIC
aic = logit_model.aic
bic = logit_model.bic
print(f"AIC: {aic}")
print(f"BIC: {bic}")
4.5 分类阈值与预测
逻辑回归模型通常输出的是事件发生的概率,但在实际应用中,我们需要将这些概率转换为分类标签(0或1)。这通常通过设定一个分类阈值来实现,例如0.5:
# 预测概率
y_pred_prob = logit_model.predict(X)
# 根据阈值进行分类
threshold = 0.5
y_pred = (y_pred_prob > threshold).astype(int)
print(y_pred)
4.6 示例:学生录取数据
接下来,我们通过一个具体的例子来应用逻辑回归模型。假设我们有一个数据集,记录了100名学生的GRE分数、GPA以及是否被某个大学录取的信息。我们可以使用逻辑回归模型来预测学生是否会被录取。
# 生成模拟数据
data = pd.DataFrame({
'GRE': np.random.normal(300, 15, 100),
'GPA': np.random.normal(3.5, 0.3, 100),
'admitted': np.random.choice([0, 1], size=100)
})
# 定义自变量和因变量
X = data[['GRE', 'GPA']]
y = data['admitted']
# 添加截距项
X = sm.add_constant(X)
# 拟合逻辑回归模型
logit_model = sm.Logit(y, X).fit()
# 输出回归结果
print(logit_model.summary())
# 预测录取概率
y_pred_prob = logit_model.predict(X)
# 根据0.5的阈值进行分类
y_pred = (y_pred_prob > 0.5).astype(int)
print(y_pred)
通过这个例子,我们可以看到逻辑回归模型如何用于二分类问题,并且如何解释和应用模型的输出结果。