statsmodels学习——使用多元回归拟合数据
文章目录
- 1. 多元回归拟合代码
- 2. 分析结果
- 3. 完整案例
- 参考资料
1. 多元回归拟合代码
首先构造一个任意的dataframe
:
import pandas as pd
import numpy as np
import statsmodels.api as smdf = pd.DataFrame(data=np.random.randint(0, 20, size=(100, 4)),columns=['x1', 'x2', 'x3', 'y'])
# 开始切分x与y
X = df.loc[:, 'x1':'x3']
Y = df['y']
构造的dataframe如下:
x1 | x2 | x3 | y | |
---|---|---|---|---|
0 | 12 | 13 | 1 | 10 |
1 | 11 | 10 | 9 | 8 |
2 | 12 | 18 | 18 | 2 |
3 | 18 | 11 | 18 | 12 |
… | … | … | … | … |
然后切分出自变量与因变量:
X = df.loc[:, 'x1':'x3']
Y = df['y']
然后使用statsmodels
拟合数据:
X = sm.add_constant(X) # adding a constant
model = sm.OLS(Y, X).fit()
这样就拟合成功了,预测:
predictions = model.predict(X)
predictions即为模型对原来训练集数据的预测结果,这里可以换成新的测试集数据
2. 分析结果
- 打印全部的结果:
print(model.summary())
得到如下的表格:
==============================================================================
Dep. Variable: y R-squared: 0.032
Model: OLS Adj. R-squared: 0.001
Method: Least Squares F-statistic: 1.046
Date: Fri, 11 Jun 2021 Prob (F-statistic): 0.376
Time: 10:29:28 Log-Likelihood: -316.20
No. Observations: 100 AIC: 640.4
Df Residuals: 96 BIC: 650.8
Df Model: 3
Covariance Type: nonrobust
==============================================================================coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 5.8099 1.793 3.241 0.002 2.252 9.368
x1 0.1445 0.094 1.533 0.128 -0.043 0.332
x2 0.0976 0.104 0.936 0.352 -0.109 0.305
x3 0.0169 0.102 0.165 0.869 -0.186 0.220
==============================================================================
Omnibus: 27.225 Durbin-Watson: 1.684
Prob(Omnibus): 0.000 Jarque-Bera (JB): 5.946
Skew: 0.162 Prob(JB): 0.0512
Kurtosis: 1.850 Cond. No. 55.4
==============================================================================
- 得到拟合的结果
coef
为拟合出的系数,使用如下代码可以打印出来:
print(model.params)
其他变量:
- Dep.Variable: 就是因变量,dependent variable,也就是咱们输入的y1,不过这里statsmodels用y来表示模型的结果。
- Model:就是最小二乘模型,这里就是OLS。
- Date/Time:模型生成的日期/时间
- No. Observations:样本量
- Df Residuals:残差自由度(degree of freedom of residuals),其值= No.Observations - Df Model - 1
- Df Model:模型自由度(degree of freedom of model),值等于输入的维度,这里x1,x2,x3是三个维度
- Covariance Type:协方差阵的稳健性
- R-squared:决定系数,计算方法为SSR/SST,SSR是Sum of Squares for Regression,SST是Sum of Squares for Total
- Adj. R-squared:利用奥卡姆剃刀修正后的R-squared值(奥卡姆剃刀是一种理论,认为通用的模型倾向于更简单的参数,正所谓大道至简)
- F-statistic:F检验,这个值越大越能推翻原假设,值越大说明模型是线性模型,原假设是“我们的模型不是线性模型”。
- Prob (F-statistic):为F-statistic的概率,值越小越能拒绝原假设,本例中为1.25e-08,该值非常小了,足以证明我们的模型是线性显著的
- Log likelihood:对数似然
- AIC:赤池信息量,其用来衡量拟合的好坏程度,一般选择AIC较小的模型
- BIC:贝叶斯信息准则
- std err:系数估计的标准误差。
- t:就是我们常用的t统计量,这个值越大越能拒绝原假设。
- P>|t|:统计检验中的P值,这个值越小越能拒绝原假设。
- [0.025, 0.975]:置信度为95%的置信区间的下限和上限。
- Omnibus:基于峰度和偏度进行数据正态性的检验,通常与Jarque-Bera检验共同使用
- Prob(Omnibus):Omnibus检验的概率。
- Durbin-Watson:检验残差中是否存在自相关,其主要通过确定两个相邻误差项的相关性是否为零来检验回归残差是否存在自相关。
- Skewness:偏度
- Kurtosis:峰度
- Jarque-Bera(JB):同样是基于峰度和偏度进行数据正态性的检验,通常与Omnibus检验共同使用
- Prob(JB):JB检验的概率。
- Cond. No.:多重共线性的检验,即检验变量之间是否存在精确相关关系或高度相关关系
3. 完整案例
import pandas as pd
import numpy as np
import statsmodels.api as smdf = pd.DataFrame(data=np.random.randint(0, 20, size=(100, 4)),columns=['x1', 'x2', 'x3', 'y'])
# 开始切分x与y
X = df.loc[:, 'x1':'x3']
Y = df['y']X = sm.add_constant(X) # adding a constant
model = sm.OLS(Y, X).fit()
predictions = model.predict(X)print_model = model.summary()
print(print_model)
参考资料
- youtube相关教程:https://www.youtube.com/watch?v=L_h7XFUGWAk
- statsmodels.regression.linear_model.OLS 官方文档:https://www.statsmodels.org/stable/generated/statsmodels.regression.linear_model.OLS.html#generated-statsmodels-regression-linear-model-ols–page-root
- Ordinary Least Squares官方文档:https://www.statsmodels.org/dev/examples/notebooks/generated/ols.html#examples-notebooks-generated-ols–page-root
statsmodels学习——使用多元回归拟合数据相关推荐
- 如何判断你的数据集是否适合使用深度学习模型?如果数据量太小有什么解决办法?
如何判断你的数据集是否适合使用深度学习模型?如果数据量太小有什么解决办法? deep learning is a data hungry problem 数据集太小,数据样本不足时,深度学习相对其它机 ...
- 结合深度学习的工业大数据应用研究
结合深度学习的工业大数据应用研究 李广 杨欣 电子科技大学大数据研究中心,四川 成都 611731 成都数之联科技有限公司,四川 成都 610041 摘要:如何将大数据等核心技术与智能制造结合, ...
- 小样本学习记录————利用所有数据的元学习Few-shot Text Classification with Distributional Signatures
小样本学习记录----利用所有数据的元学习Few-shot Text Classification with Distributional Signatures 在计算机视觉中,低水平的模式是可以跨学 ...
- 【深度学习】【物联网】深度解读:深度学习在IoT大数据和流分析中的应用
作者|Natalie 编辑|Emily AI 前线导读:在物联网时代,大量的感知器每天都在收集并产生着涉及各个领域的数据.由于商业和生活质量提升方面的诉求,应用物联网(IoT)技术对大数据流进行分析是 ...
- Python数据科学学习笔记之——Matplotlib数据可视化
Matplotlib 数据可视化 1.Matplotlib 常用技巧 1.1.导入 Matplotlib import matplotlib as mpl import matplotlib.pypl ...
- 深度学习之“制作自定义数据”--torch.utils.data.DataLoader重写构造方法。
深度学习之"制作自定义数据"–torch.utils.data.DataLoader重写构造方法. 前言: 本文讲述重写torch.utils.data.DataLoader类 ...
- 【深度学习】深度解读:深度学习在IoT大数据和流分析中的应用
来源:网络大数据(ID:raincent_com) 摘要:这篇论文对于使用深度学习来改进IoT领域的数据分析和学习方法进行了详细的综述. 在物联网时代,大量的感知器每天都在收集并产生着涉及各个领域的数 ...
- MATLAB与最小二乘法拟合数据
1.前言:学习并记录的原因 最小二乘法是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配. 最小平方差法在误差估计.不确定度.系统辨识及预测.预报等数据处理诸多学科领域得到广泛应用的数 ...
- 多元回归训练数据和测试数据_回归基础-数据结构提醒,如果和切换之后的寿命...
多元回归训练数据和测试数据 I just had a great one on one coding learning session with a good friend of mine over ...
最新文章
- 登录之图形跟短信验证码
- 计算机专业的大学生自我介绍,计算机专业大学生自我介绍
- ISE简介及其下载 安装 和谐 与 卸载
- openlayers加载svg,如何在OpenLayers-3中将SVG图像用作地图标记?
- Guava源码分析——Immutable Collections(4)
- Oracle中 drop user 和 drop user cascade 的区别
- 李海自学java_JAVA程序设计 实验一
- python爬虫代码-Python爬虫入门(01) -- 10行代码实现一个爬虫
- MapReduce-实践1
- 最简单解决jpa自动生成表后字段乱序问题
- When Does Self-Supervision Help Graph Convolutional Networks?
- GCC 优化选项 -O -O0 -O1 -O2 -O3 -Os 简单介绍
- 9.3. debug ip igrp
- F - Ilya Muromets Gym - 100513F
- 台式计算机怎么强制关机,电脑怎么强制关机(关机方法都在这)
- ROS可以不扫描地图,自己制作地图
- 新版火狐 拖 功能_Firefox 33的新功能
- html文字居中加下划线,HTML文字对齐,斜体,下划线和删除线
- CAN\CANFD\FlexRay\LIN 一文深度解析常见通信协议
- 仿射密码破解——再别康桥
热门文章
- 更美好的未来展望:UE4 路线图更新
- Docker GitLab镜像部署
- 《PostgreSQL服务器编程》一一1.7 定制排序方法
- jquery报变量没定义错误的原因
- 漫谈忠诚:猪八戒为什么总想离队
- 怎么让打印出来表格的纸下面显示页数_4个使用频率较高的Excel打印技巧,办公室打印文件时常常会用到!...
- python对编写神经网络作用_神经网络(BP)算法Python实现及应用
- 半学期学计算机有感论文,【计算机学习心得论文】_计算机学习心得论文参考资料-毕业论文范文网...
- PostgreSQL 12系统表(3)pg_tablespace
- 19linux关机重启20登录注销