数据分析实战:女性身高体重线性与多项式回归建模复盘
一、前言
日常数据分析中,回归分析是探究变量相关关系、构建预测模型的核心手段。本文以女性身高、体重样本数据为例,基于pandas数据读取、matplotlib可视化、statsmodels最小二乘建模,依次完成一元线性回归与三次多项式回归建模,附带模型显著性检验、残差诊断全流程,适合回归基础复盘与代码实操复习。
二、环境与依赖库
本次实战用到核心库
import os import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm三、数据读取与探索
1. 工作路径校验
先确认文件读取路径,避免 csv 文件找不到报错
print(os.getcwd())2. 加载数据集
以身高为自变量、体重为因变量,读取本地women.csv文件
df_woman=pd.read_csv('women.csv',index_col=0,header=0) # 查看末尾样本 df_woman.tail(3)3. 原始数据散点可视化
直观观察身高体重分布趋势,初步判断相关形态
plt.scatter(df_woman['height'],df_woman['weight']) plt.xlabel('height') plt.ylabel('weight') plt.show()从散点图可直观看出,身高与体重存在明显正向相关趋势。
四、一元线性回归建模
1. 划分自变量与因变量
# 自变量二维格式适配模型 X=df_woman[['height']] # 因变量一维展平 y=df_woman['weight'] y=np.ravel(y)2. 添加回归截距项
OLS 模型默认不含常数项,需手动补充
X_add_const=sm.add_constant(X.to_numpy())3. 模型训练与结果输出
# 构建最小二乘模型 myModel=sm.OLS(y,X_add_const) # 拟合训练 results=myModel.fit() # 输出完整回归报表 print(results.summary())4. 核心模型指标解读
- 回归系数:
results.params,对应方程截距与身高斜率,构建拟合直线公式 - 决定系数R2:
results.rsquared,取值 0-1,越趋近 1 代表拟合效果越好 - F 检验 P 值:
results.f_pvalue,判断模型整体显著性,P<0.05 说明模型有效
5. 残差诊断检验
回归模型需满足残差无自相关、近似正态分布两大假设
- DW 自相关检验
sm.stats.stattools.durbin_watson(results.resid)取值 0~4,数值接近 2 表示残差无自相关,符合建模要求。
- JB 正态性检验
sm.stats.stattools.jarque_bera(results.resid)P 值大于 0.05,说明残差服从正态分布,模型假设成立。
6. 线性拟合绘图
y_predict=results.predict() plt.rcParams['font.family'] = 'simHei' plt.scatter(df_woman['height'], df_woman['weight']) plt.plot(df_woman['height'], y_predict) plt.title('女性体重与身高线性回归拟合') plt.xlabel('身高') plt.ylabel('体重') plt.show()五、三次多项式回归建模
线性直线无法贴合非线性数据趋势时,引入高次项提升拟合度
1. 构造三次特征项
X = df_woman[['height']] # 拼接一次、二次、三次项 X_poly = np.column_stack((X, np.power(X, 2), np.power(X, 3))) # 补充截距 X_poly_const = sm.add_constant(X_poly)2. 多项式模型训练
myModel_updated = sm.OLS(y, X_poly_const) results_updated = myModel_updated.fit() print(results_updated.summary())3. 拟合效果可视化
y_predict_updated = results_updated.predict() plt.scatter(df_woman['height'], df_woman['weight']) plt.plot(df_woman['height'], y_predict_updated) plt.title('女性体重与身高多项式回归分析') plt.xlabel('身高') plt.ylabel('体重') plt.show()对比线性模型,多项式曲线能更好贴合样本离散分布。
六、核心知识点复盘
OLS 最小二乘原理以残差平方和最小为目标求解回归系数,是经典线性回归求解算法。
模型评价核心指标
- R2:衡量自变量对因变量的解释程度
- F 检验:判定整体模型是否具备统计学意义
- 系数 P 值:判断单个自变量影响是否显著
- 残差两大检验标准
- DW 检验:排查残差序列自相关性
- JB 检验:验证残差正态分布特性
- 线性与多项式回归适用场景线性回归结构简单、解释性强,适合线性相关数据;多项式回归适配非线性关系,拟合精度更高,需警惕过拟合问题。
七、总结
本次实操完成从数据读取、可视化探索,到线性、多项式双模型搭建,同时覆盖模型检验与结果绘图全流程。回归分析不仅可以量化变量关联关系,还能依托训练模型实现数值预测,日常统计分析、特征建模场景均可复用这套代码逻辑与检验思路。
