一条龙建设网站百度不收录什么网站
2026/3/30 9:23:27 网站建设 项目流程
一条龙建设网站,百度不收录什么网站,沈阳网页排名优化方法,网站后台设置关键字一、什么是 Statsmodels#xff1f; statsmodels#xff08;全称#xff1a;Statistical Models#xff09;是一个基于 NumPy、SciPy 和 pandas 构建的 Python 库#xff0c;主要用于#xff1a; 拟合统计模型#xff08;如线性回归、逻辑回归、广义线性模型#xff…一、什么是 Statsmodelsstatsmodels全称Statistical Models是一个基于 NumPy、SciPy 和 pandas 构建的 Python 库主要用于拟合统计模型如线性回归、逻辑回归、广义线性模型执行统计检验t检验、F检验、卡方检验等进行时间序列分析ARIMA、VAR 等输出详细的统计结果报告包含 p 值、置信区间、R² 等它广泛应用于经济学、社会科学、生物统计等领域。安装方式pip install statsmodels导入常用模块import statsmodels.api as sm import statsmodels.formula.api as smf import numpy as np import pandas as pd from scipy import stats二、核心功能介绍1. 线性回归分析使用statsmodels.api进行 OLS 回归我们以经典的“身高-体重”数据为例演示如何进行普通最小二乘法OLS回归。# 生成示例数据 np.random.seed(42) height np.random.normal(170, 10, 100) weight 0.8 * height - 100 np.random.normal(0, 5, 100) # 添加常数项截距 X sm.add_constant(height) # 添加截距列 y weight # 拟合模型 model sm.OLS(y, X).fit() # 输出结果摘要 print(model.summary())输出内容包括回归系数coef及其标准误t 统计量和对应的 p 值判断显著性R-squared 和调整后的 R²F-statistic 及其 p 值整体模型显著性AIC/BIC 信息准则关键优势相比其他库statsmodels提供了完整的统计推断信息帮助我们判断变量是否真正“显著”。使用公式接口类似 R 语言风格smf.ols()支持使用字符串公式语法更直观# 构造 DataFrame data pd.DataFrame({weight: weight, height: height}) # 使用公式拟合 model smf.ols(weight ~ height, datadata).fit() print(model.summary())支持多项式项、分类变量自动编码等高级功能# 包含平方项 model smf.ols(weight ~ height np.power(height, 2), datadata).fit()2. 假设检验statsmodels提供了多种经典的统计检验方法。(1) t 检验单样本与双样本from scipy.stats import ttest_1samp, ttest_ind # 单样本 t 检验均值是否等于某个值 sample np.random.normal(5.5, 1, 30) t_stat, p_val ttest_1samp(sample, popmean5.0) print(ft{t_stat:.3f}, p{p_val:.3f})(2) 正态性检验Shapiro-Wilkfrom scipy.stats import shapiro stat, p shapiro(residuals) if p 0.05: print(残差服从正态分布无法拒绝原假设) else: print(残差不服从正态分布)(3) 同方差性检验Breusch-Paganfrom statsmodels.stats.diagnostic import het_breuschpagan bp_test het_breuschpagan(model.resid, model.model.exog) labels [LM Statistic, LM-Test p-value, F-Statistic, F-Test p-value] print(dict(zip(labels, bp_test)))用于检测回归模型中是否存在异方差问题。(4) 多重共线性诊断VIFfrom statsmodels.stats.outliers_influence import variance_inflation_factor X_vif X.iloc[:, 1:] # 去掉常数项 vif [variance_inflation_factor(X_vif.values, i) for i in range(X_vif.shape[1])] pd.DataFrame({variable: X_vif.columns, VIF: vif})VIF 10 表示存在严重多重共线性。3. 广义线性模型GLM当因变量不符合正态分布时可以使用 GLM。例如二分类问题 → 逻辑回归Logit / Probit计数数据 → 泊松回归# 生成二分类数据 data[high_weight] (data[weight] data[weight].median()).astype(int) # 逻辑回归 logit_model smf.logit(high_weight ~ height, datadata).fit() print(logit_model.summary())输出包括 Odds Ratio 解释、Wald 检验等。4. 时间序列分析statsmodels在时间序列建模方面非常强大。(1) ARIMA 模型from statsmodels.tsa.arima.model import ARIMA # 示例模拟时间序列 ts np.cumsum(np.random.normal(0, 1, 100)) np.linspace(0, 10, 100) # 拟合 ARIMA(p,d,q) arima_model ARIMA(ts, order(1,1,1)).fit() print(arima_model.summary()) # 预测未来5步 forecast arima_model.forecast(steps5)(2) 单位根检验ADF 检验判断时间序列是否平稳from statsmodels.tsa.stattools import adfuller result adfuller(ts) print(fADF Statistic: {result[0]}) print(fp-value: {result[1]}) if result[1] 0.05: print(序列平稳) else: print(序列非平稳需差分)(3) 格兰杰因果检验检验一个时间序列是否对另一个有预测能力from statsmodels.tsa.stattools import grangercausalitytests # 构造双变量时间序列 data_ts pd.DataFrame(np.column_stack([ts, np.roll(ts, shift1)]), columns[x, y]) grangercausalitytests(data_ts[[y,x]], maxlag2)三、可视化辅助分析结合matplotlib和seaborn我们可以绘制回归诊断图import matplotlib.pyplot as plt fig, ax plt.subplots(2, 2, figsize(10, 8)) sm.graphics.plot_regress_exog(model, height, figfig) plt.tight_layout() plt.show()常见诊断图包括残差 vs 拟合值检查异方差Q-Q 图检查正态性杠杆值与残差图识别异常点四、与其他库的对比特性statsmodelsscikit-learn目标统计推断、因果分析预测建模、机器学习输出参数显著性、置信区间、p值预测值、评分如准确率易用性公式接口友好适合统计背景用户API 统一适合工程部署模型类型OLS、GLM、ARIMA、面板数据等回归、分类、聚类、降维等✅ 推荐组合使用用statsmodels分析变量关系和显著性用scikit-learn构建高性能预测模型。五、总结statsmodels是 Python 中进行严谨统计分析不可或缺的工具。它的主要优势在于提供完整的统计推断结果便于科学决策支持广泛的经典统计模型线性模型、时间序列、离散选择模型等丰富的假设检验和诊断工具保障模型有效性兼容 pandas 数据结构易于集成进数据分析流程。参考资料官方文档https://www.statsmodels.org/GitHub 仓库https://github.com/statsmodels/statsmodels书籍推荐《Python for Data Analysis》by Wes McKinney

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询