手动计算

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计算的线性回归结果以及手动计算的结果的对比相关推荐

  1. 性能调优:理解Set Statistics Time输出

    性能调优:理解Set Statistics Time输出 原文:性能调优:理解Set Statistics Time输出 在性能调优:理解Set Statistics IO输出我们讨论了Set Sta ...

  2. ols最小二乘法是什么|OLS最小二乘法是如何推导的

    本站原创文章,转载请说明来自<老饼讲解-机器学习>ml.bbbdata.com <老饼讲解-机器学习>--一个免费.专业.全面的机器学习网站http://ml.bbbdata. ...

  3. 理解--漏极开路输出--推挽输出

    这个问题一直不是很清楚,所以查了下,知乎这个给出了图文并茂的解释,很清楚. 如何正确的理解漏极开路输出跟推挽输出? 这个里面很详细 集电极开路漏极开路推挽输出

  4. python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD)

    python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD.Median Absolute Devi ...

  5. R语言置信区间计算(confidence interval)、计算比例值对应的置信区间、为比例值构建95%执行区间、使用glue包把最终结果以标准格式输出

    R语言置信区间计算(confidence interval).计算比例值对应的置信区间.为比例值构建95%执行区间.使用glue包把最终结果以标准格式输出 目录

  6. 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语言实验-矩阵输出(数组移 ...

  7. 格式化输出,浮点数e,f,g保留位数的计算方式不同,e,f :%.3e/f:取小数点后三位,g:%.3g总共有效位数为3,不包括小数点

    格式化输出:format() format():把传统的%替换为{}来实现格式化输出 使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串,位置 ...

  8. R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然、自定义函数计算模型的分类效能(accuray、F1、偏差Deviance)、使用pander包美化界面输出内容

    R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然.自定义函数计算模型的分类效能(accuray.F1.偏差Deviance).使用pander包美化界面输出内容 ...

  9. 理解statsmodels中OLS对应基金alpha、beta、R-squared

    概解statsmodels <理解patsy & Design Matrices> To fit most of the models covered by statsmodels ...

最新文章

  1. angular(3)服务 --注入---自定义模块--单页面应用
  2. python手机版编程-手机编python
  3. 如何做到免驱打印_道滘镇彩色打印机租赁公司,长安镇办公室绿植安装
  4. Redis持久化方式的选择
  5. [Swift实际操作]八、实用进阶-(7)使用通知的方法进行对象间的消息传递
  6. 别让for循环毁了你的程序(二)
  7. HTML转图片利器:wkhtmltox
  8. Spring boot +java.awt.HeadlessException: null异常处理
  9. swagger 使用
  10. 【限时免费】云计算时代的安全和智能运维(11月18日周六|广州)
  11. nifi执行linux命令log,shell - 无法使用Nifi curl命令启动处理器 - SO中文参考 - www.soinside.com...
  12. 资源工具分享(第1期):后端架构师技术图谱
  13. 规格模式(Specification)
  14. 如何利用COOC软件绘制动态交互图?
  15. 通信协议之序列化——TLV详解
  16. 《蔡康永的说话之道》思维导图学习笔记
  17. 2022年双十二拼多多百亿补贴有活动吗?如何领红包?
  18. 利用MATLAB实现WAV音频的LSB信息隐藏
  19. python 魔法方法诠释
  20. php redis 删除key 通配符,php redis 批量删除keys的方法

热门文章

  1. 计算机基础_001_栈是什么
  2. MySQL索引机制-图灵教育诸葛老师
  3. 爬虫抓取BestCoder的比赛排名
  4. vue中js转换火星坐标以及真实坐标
  5. 青少年python一级考试试题,青少年python一级考试
  6. library netcdf 路径_c#读取netcdf文件小结
  7. 逻辑电路复杂?我们用Logisim一键解决
  8. VS2019字符编码设置
  9. Java中int的取值范围的原因
  10. esim分布式云卡池技术