如何理解statsmodels.ols的输出结果?ols计算的线性回归结果以及手动计算的结果的对比
手动计算
def linegress(l_1,l_2): #求两列数据的线性回归参数import numpy as npfrom numpy.linalg import solvesumx = np.sum(l_1) #x列的和sumy = np.sum(l_2) #y列的和n = len(l_1) #数据的个数sumxy = np.sum(np.array(l_1)*np.array(l_2)) #xy两列的乘积的和sumx2 = np.sum(np.array(l_1)**2) #x的平方的和a = np.mat([[sumx,n],[sumx2,sumx]]) #用np.mat传入第一个矩阵b = np.mat([sumy,sumxy]).T #用np.mat.T传入第二个矩阵x = solve(a,b) #求出abreturn x #输出
这里得到以下输出结果
matrix([[ 0.88632061], [-89.12267277]])
上面的就是我们手动笔算线性回归参数的时候会得到的结果,a=0.886,b=-89.123
我们把我们得到的ab代入Y=ax+b来计算新的y列,并求出r2
"""計算"""
import numpy as np
x = np.array([171,180,169,173,173,163,168,176,173,174,164,171,172,172,175,163,163,162,167,170,173,170,170,175,170]) #x列
y = np.array([62,71,53,78,59,54,62,60,62,60,50,66,69,63,62,65,53,52,60,67,70,67,56,68,56]) #y列
a = 0.886
b = -89.123
y_pred = 0.886*x-89.123
s2=((y-y.mean())**2).sum(axis=0)/len(x)
delta=((y-y_pred)**2).sum(axis=0)/len(x)
r2 = (s2-delta)/s2
print('r2=',r2)
我们会得到以下输出结果。
r2= 0.35430340124555104
所以,我们再手动去计算x,y的线性回归的时候,会得到以下的结果:
a=0.886,b=-89.123,r2= 0.354
statsmodels.ols的计算结果
import statsmodels.api as sm
X = sm.add_constant(x)
results = sm.OLS(y,X).fit()
print(results.params)
我们会得到以下结果:
[-89.12267277 0.88632061]
和我们手动计算得到的结果是完全一样的。
打印拟合的详细结果
print(results.summary())
右上角有一个r2,0.354,和我们计算的结果依然是一样的。
然后打印结果中间有一个coef,这个就是我们得到的a和b。不一样的地方是,const的coef就是我们所说的截距,而x1的coef就是我们所说的系数。如果你做的是重回归,那么除了x1之外还会有x234,他们的coef同样是系数,而const依然是截距。
如何理解statsmodels.ols的输出结果?ols计算的线性回归结果以及手动计算的结果的对比相关推荐
- 性能调优:理解Set Statistics Time输出
性能调优:理解Set Statistics Time输出 原文:性能调优:理解Set Statistics Time输出 在性能调优:理解Set Statistics IO输出我们讨论了Set Sta ...
- ols最小二乘法是什么|OLS最小二乘法是如何推导的
本站原创文章,转载请说明来自<老饼讲解-机器学习>ml.bbbdata.com <老饼讲解-机器学习>--一个免费.专业.全面的机器学习网站http://ml.bbbdata. ...
- 理解--漏极开路输出--推挽输出
这个问题一直不是很清楚,所以查了下,知乎这个给出了图文并茂的解释,很清楚. 如何正确的理解漏极开路输出跟推挽输出? 这个里面很详细 集电极开路漏极开路推挽输出
- python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD)
python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD.Median Absolute Devi ...
- R语言置信区间计算(confidence interval)、计算比例值对应的置信区间、为比例值构建95%执行区间、使用glue包把最终结果以标准格式输出
R语言置信区间计算(confidence interval).计算比例值对应的置信区间.为比例值构建95%执行区间.使用glue包把最终结果以标准格式输出 目录
- 7-226 sdut-C语言实验-矩阵输出(数组移位)7-227 sdut- C语言实验-计算1到n的和(循环结构)7-228 加法口诀表
目录 7-226 sdut-C语言实验-矩阵输出(数组移位) 7-227 sdut- C语言实验-计算1到n的和(循环结构) 7-228 加法口诀表 7-226 sdut-C语言实验-矩阵输出(数组移 ...
- 格式化输出,浮点数e,f,g保留位数的计算方式不同,e,f :%.3e/f:取小数点后三位,g:%.3g总共有效位数为3,不包括小数点
格式化输出:format() format():把传统的%替换为{}来实现格式化输出 使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串,位置 ...
- R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然、自定义函数计算模型的分类效能(accuray、F1、偏差Deviance)、使用pander包美化界面输出内容
R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然.自定义函数计算模型的分类效能(accuray.F1.偏差Deviance).使用pander包美化界面输出内容 ...
- 理解statsmodels中OLS对应基金alpha、beta、R-squared
概解statsmodels <理解patsy & Design Matrices> To fit most of the models covered by statsmodels ...
最新文章
- angular(3)服务 --注入---自定义模块--单页面应用
- python手机版编程-手机编python
- 如何做到免驱打印_道滘镇彩色打印机租赁公司,长安镇办公室绿植安装
- Redis持久化方式的选择
- [Swift实际操作]八、实用进阶-(7)使用通知的方法进行对象间的消息传递
- 别让for循环毁了你的程序(二)
- HTML转图片利器:wkhtmltox
- Spring boot +java.awt.HeadlessException: null异常处理
- swagger 使用
- 【限时免费】云计算时代的安全和智能运维(11月18日周六|广州)
- nifi执行linux命令log,shell - 无法使用Nifi curl命令启动处理器 - SO中文参考 - www.soinside.com...
- 资源工具分享(第1期):后端架构师技术图谱
- 规格模式(Specification)
- 如何利用COOC软件绘制动态交互图?
- 通信协议之序列化——TLV详解
- 《蔡康永的说话之道》思维导图学习笔记
- 2022年双十二拼多多百亿补贴有活动吗?如何领红包?
- 利用MATLAB实现WAV音频的LSB信息隐藏
- python 魔法方法诠释
- php redis 删除key 通配符,php redis 批量删除keys的方法