这里写目录标题

  • 1. 分位数回归的数学原理
  • 2. 分位数回归的求解原理
  • 3 python 分位数回归

1. 分位数回归的数学原理

一般的回归方法是最小二乘法,即最小化误差的平方和:

其中,yiy_iyi​是真实值,而 y^i\hat{y}_iy^​i​是预测值。而分位数的目标是最小化加权的误差绝对值和:

其中, τ\tauτ 是给定的分位数。决策变量是y^i\hat{y}_iy^​i​,可以证明,使上面表达式最小化的y^i\hat{y}_iy^​i​ 就是给定分位数 τ\tauτ 对应的分位点(将上面式子转化为连续密度函数的积分,然后求一阶导数即可证明)。上式也可以简写成:

2. 分位数回归的求解原理

为了求出分位数的回归方程,假设 y^i=Xiβ\hat{y}_i=\bm{X_i \beta}y^​i​=Xi​β,那么求解的目标函数转化为:

决策变量为 kkk维回归方程的参数向量β\bm{\beta}β。在实际的求解中,将上式转化为一个线性规划问题,引入两个虚拟变量 ui+u_i^+ui+​、ui−u_i^-ui−​ :

然后用单纯形法或内点法求解,就能得出分位数回归方程(python 与 R 软件求出的分位数回归方程可能略微不同,因为求解方法不一样, python 使用了迭代的加权最小二乘法求解)。

3 python 分位数回归

分位数回归要用到 statsmodels,下面的代码得到分位数为 0.6 的回归方程,并画图:

import statsmodels.formula.api as smf
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as pltdata = sm.datasets.engel.load_pandas().data
mod = smf.quantreg('foodexp ~ income', data)
res = mod.fit(q=0.6)
print(res.summary())plt.scatter(data['income'], data['foodexp'])
xx = np.arange(min(data['income']), max(data['income']))
yy = [i*res.params['income'] + res.params['Intercept'] for i in xx]
plt.plot(xx, yy, color='red')
plt.show()

输出结果:

Quantile Regression,python相关推荐

  1. 【regression】分位数回归 quantile regression

    quantile regression --python实现 前言 分位数回归可调用的库 1. scikit-learn 2. statsmodels quantile loss function - ...

  2. 分位数回归(Quantile Regression)代码解析

    实验代码 本文采用python sklearn库中,作为quantile regression的示例代码.以下为详细解析: import numpy as np import matplotlib.p ...

  3. R语言分位数回归Quantile Regression分析租房价格

    全文链接:http://tecdat.cn/?p=18422 本文想在R软件中更好地了解分位数回归优化.在查看分位数回归之前,让我们从样本中计算中位数或分位数(点击文末"阅读原文" ...

  4. 下列python语言、返回结果不是uc_MKAN1-UC 5103作业代写、代做Analytics作业、Java,Python,c/c++程序语言作业代做...

    MKAN1-UC 5103作业代写.代做Analytics作业.Java,Python,c/c++程序语言作业代做 日期:2020-05-21 11:08 Marketing Analytics Sp ...

  5. 多变量逻辑回归python_Python实现逻辑回归(Logistic Regression in Python)

    本文基于yhat上Logistic Regression in Python,作了中文翻译,并相应补充了一些内容.本文并不研究逻辑回归具体算法实现,而是使用了一些算法库,旨在帮助需要用Python来做 ...

  6. python数据分析课程哪个好-数据分析课程里面,python是重点!

    原标题:数据分析课程里面,python是重点! 数据分析要学习什么内容呢?科多大数据带你一起来看看. IPython IPython 是一个在多种编程语言之间进行交互计算的命令行 shell,最开始是 ...

  7. 概率校准calibration_curve,用Isotonic regression,得出calibration_curve的好坏,用交叉熵检验,和方差,及使用朴素贝叶斯方法

    calibration_curve 运行完得出的分类结果是不是满足独立同分布,分类概率prob,可以用最大似然假设?那么概率校准calibration_curve,用Isotonic regressi ...

  8. 分位数回归(Quantile regression)笔记

    分位数回归(Quantile regression)是在给定 X \mathbf{X} X的条件下估计 y \mathbf{y} y的中位数或其他分位数, 这是与最小二乘法估计条件均值最大的不同. 分 ...

  9. 面试前赶紧看了5道Python Web面试题,Python面试题No17

    目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...

最新文章

  1. 五大关键物联网应用助力优化数据中心基础设施管理
  2. 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记
  3. MCS-51单片机的指令时序
  4. 谁说.NET不适合搞大数据、机器学习和人工智能
  5. python中import sys_python import sys出错怎么办
  6. 全国专业技术人员计算机应用能力考试题,2017年全国专业技术人员计算机应用能力考试题库...
  7. oracle SQL查询
  8. vue项目下,webpack.js/package.json配置
  9. word 如何快速比较两个文档的区别
  10. 企业千人千面管理模式_叶平:企业要做大,员工要从“千人千面”到“千人一面”...
  11. 如何防御DOS和DDOS攻击
  12. 封装、private、this、 setter/gette、构造方法和标准类的定义
  13. [GXYCTF2019]Ping Ping Ping 1解题思路
  14. Qt::QLocale
  15. Java 获取本机局域网内IP
  16. yuv 10bit 8bit
  17. 微信中域名网站域名被封锁、被屏蔽、被和谐后的解决方法
  18. 基于淘宝开源Tair分布式KV存储引擎的整合部署
  19. Python:设置不显示Using TensorFlow backend及FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of typ
  20. JDK8新特性详解Lambda、StreamAPI、Optional等

热门文章

  1. C/C++操作符的优先级和结合性问题浅析
  2. 【FPGA】Spartan-6的时钟管理器(CMT)
  3. vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)
  4. Git的使用和提交规范
  5. UVa 164 - String Computer
  6. 编译gtk+程序报错gcc: pkg-config --cflags --libs gtk+-2.0: 没有那个文件或目录
  7. C Primer Plus 第6章 C控制语句:循环 6.9 选择哪种循环
  8. 安卓系统底层C语言算法之测试参数是几个long型的算法
  9. C#创建、安装一个Windows服务
  10. hdu 3732(01背包转多重背包)