python Statsmodel 回归模型笔记

文章介绍了Python的Statsmodels库在统计分析中的应用,特别是线性回归、逻辑回归、多元线性回归和广义线性模型的用途。线性回归适用于连续变量,逻辑回归用于二分类问题,多元线性回归处理多个自变量,而广义线性模型则能适应不同分布的因变量。此外,文章还讨论了误差项的独立性和同方差性检验方法,如Durbin-Watson和Breusch-Pagan检验。
摘要由CSDN通过智能技术生成

Statsmodels是Python中一种常用的统计分析库,支持多种回归模型的建立和分析。以下是Statsmodels中常见的几种回归模型及其用途:

线性回归模型(Linear Regression Model):用于建立自变量和因变量之间线性关系的模型。线性回归模型假定因变量Y是自变量X的线性组合,并且误差项服从正态分布。例如,可以使用线性回归模型分析房价和房屋面积之间的关系。

逻辑回归模型(Logistic Regression Model):用于建立自变量和二分类因变量之间关系的模型。逻辑回归模型可以预测一个二分类事件的概率,而不是具体的数值。例如,可以使用逻辑回归模型分析某个人是否会购买某个产品,或者某个病人是否患有某种疾病。

多元线性回归模型(Multiple Linear Regression Model):用于建立多个自变量和一个因变量之间的线性关系的模型。多元线性回归模型可以用于解释因变量与多个自变量之间的关系,而不仅仅是一个自变量。例如,可以使用多元线性回归模型分析某个人的收入和年龄、教育水平、工作经验等多个因素之间的关系。

广义线性模型(Generalized Linear Model):用于建立因变量和自变量之间的关系,但是因变量不一定需要服从正态分布。广义线性模型可以建立多种类型的回归模型,如泊松回归、logistic回归、伽马回归等。例如,可以使用泊松回归分析网站流量与访客数量之间的关系。

通常情况下,线性回归模型(LRM)和广义线性模型(GLM)的应用场景是不同的,您可以通过以下几个方面来区分它们:

  • 因变量类型:线性回归模型适用于因变量为连续变量的情况,而广义线性模型适用于因变量为连续变量、二元变量、计数变量、偏度分布连续变量等不同类型的情况。
  • 分布假设:线性回归模型假设因变量服从正态分布,而广义线性模型则不仅仅局限于正态分布的假设,可以根据实际情况选择其他分布假设,如二项分布、泊松分布、伽马分布等。
  • 误差项的独立性和同方差性:线性回归模型通常假设误差项独立同分布且方差不随自变量的变化而变化,而广义线性模型对误差项的独立性和同方差性的假设相对宽松,可以应对更多的实际问题。

因此,如果您的因变量是连续变量,且误差项的独立性和同方差性得到满足,您可以使用线性回归模型;如果您的因变量类型比较复杂,或者您不能满足误差项的独立性和同方差性假设,您可以使用广义线性模型。

误差项的独立性和同方差性可以通过多种方法进行检验

  1. 独立性检验:

我们可以使用Durbin-Watson检验来检验误差项是否具有独立性。Durbin-Watson统计量的值在0和4之间,值越接近2表明误差项的自相关程度越小,误差项越具有独立性。

下面是一个使用statsmodels库中OLS类的例子

import statsmodels.api as sm
import numpy as np

# 构造数据
np.random.seed(1234)
X = np.random.rand(50, 3)
y = X.sum(axis=1) + np.random.randn(50) * 0.1

# 拟合OLS模型
model = sm.OLS(y, sm.add_constant(X))
result = model.fit()

# 进行Durbin-Watson检验
dw = sm.stats.stattools.durbin_watson(result.resid)
print("Durbin-Watson statistic:", dw)

Durbin-Watson statistic: 1.9533114474340876
由于Durbin-Watson统计量的值接近2,说明误差项具有较好的独立性。

  1. 同方差性检验:

我们可以使用Breusch-Pagan检验来检验误差项是否具有同方差性。Breusch-Pagan检验的原假设为误差项方差不随自变量的变化而变化,备择假设为误差项方差随自变量的变化而变化。

下面是一个使用statsmodels库中的OLS类和diagnostic子模块的例子:

import statsmodels.api as sm
import statsmodels.stats.diagnostic as smd
import numpy as np

# 构造数据
np.random.seed(1234)
X = np.random.rand(50, 3)
y = X.sum(axis=1) + np.random.randn(50) * 0.1

# 拟合OLS模型
model = sm.OLS(y, sm.add_constant(X))
result = model.fit()

# 进行Breusch-Pagan检验
bp = smd.het_breuschpagan(result.resid, result.model.exog)
print("Breusch-Pagan statistic:", bp[0])
print("p-value:", bp[1])

Breusch-Pagan statistic: 3.849480021120155
p-value: 0.27818299528796425
由于p-value大于显著性水平0.05,因此我们不能拒绝原假设,即误差项方差不随自变量的变化而变化,说明误差项具有同方差性。

logistic 回归
进行特征选择时,通常需要进行以下步骤:

  • 选择可能相关的特征: 从所有可能的特征中,选择那些可能与目标变量相关的特征。可以使用领域知识、数据可视化或统计分析等方法来确定这些特征。
  • 训练模型并进行特征选择: 将这些可能相关的特征作为输入,训练 logistic回归模型,并使用特征选择方法来选择最终的特征子集。通常使用正则化方法(例如 L1 正则化)来降低不相关特征的影响。
  • 评估模型性能: 评估选择出来的特征子集的性能,以确定是否需要进一步调整或添加特征。常用的评估指标包括准确率、召回率、精确度、F1 分数等。

当你得出一个 logistic 回归模型后,可以使用各种评估指标来评价模型的性能。以下是一些常用的评价指标:

  • 准确率(accuracy): 分类正确的样本数与总样本数的比例。
  • 召回率(recall): 正确预测为正类别的样本数占所有正类别样本数的比例。
  • 精确度(precision): 正确预测为正类别的样本数占所有预测为正类别的样本数的比例。
  • F1 分数(F1 score): 综合考虑精确度和召回率,是精确度和召回率的调和平均数。

可以使用混淆矩阵、ROC 曲线和 AUC(Area Under the Curve)等来计算这些评价指标。在实际应用中,可以使用交叉验证等方法来评估模型的性能,并选择最佳的模型。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值