Quantile Regression,python
这里写目录标题
- 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相关推荐
- 【regression】分位数回归 quantile regression
quantile regression --python实现 前言 分位数回归可调用的库 1. scikit-learn 2. statsmodels quantile loss function - ...
- 分位数回归(Quantile Regression)代码解析
实验代码 本文采用python sklearn库中,作为quantile regression的示例代码.以下为详细解析: import numpy as np import matplotlib.p ...
- R语言分位数回归Quantile Regression分析租房价格
全文链接:http://tecdat.cn/?p=18422 本文想在R软件中更好地了解分位数回归优化.在查看分位数回归之前,让我们从样本中计算中位数或分位数(点击文末"阅读原文" ...
- 下列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 ...
- 多变量逻辑回归python_Python实现逻辑回归(Logistic Regression in Python)
本文基于yhat上Logistic Regression in Python,作了中文翻译,并相应补充了一些内容.本文并不研究逻辑回归具体算法实现,而是使用了一些算法库,旨在帮助需要用Python来做 ...
- python数据分析课程哪个好-数据分析课程里面,python是重点!
原标题:数据分析课程里面,python是重点! 数据分析要学习什么内容呢?科多大数据带你一起来看看. IPython IPython 是一个在多种编程语言之间进行交互计算的命令行 shell,最开始是 ...
- 概率校准calibration_curve,用Isotonic regression,得出calibration_curve的好坏,用交叉熵检验,和方差,及使用朴素贝叶斯方法
calibration_curve 运行完得出的分类结果是不是满足独立同分布,分类概率prob,可以用最大似然假设?那么概率校准calibration_curve,用Isotonic regressi ...
- 分位数回归(Quantile regression)笔记
分位数回归(Quantile regression)是在给定 X \mathbf{X} X的条件下估计 y \mathbf{y} y的中位数或其他分位数, 这是与最小二乘法估计条件均值最大的不同. 分 ...
- 面试前赶紧看了5道Python Web面试题,Python面试题No17
目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...
最新文章
- 五大关键物联网应用助力优化数据中心基础设施管理
- 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记
- MCS-51单片机的指令时序
- 谁说.NET不适合搞大数据、机器学习和人工智能
- python中import sys_python import sys出错怎么办
- 全国专业技术人员计算机应用能力考试题,2017年全国专业技术人员计算机应用能力考试题库...
- oracle SQL查询
- vue项目下,webpack.js/package.json配置
- word 如何快速比较两个文档的区别
- 企业千人千面管理模式_叶平:企业要做大,员工要从“千人千面”到“千人一面”...
- 如何防御DOS和DDOS攻击
- 封装、private、this、 setter/gette、构造方法和标准类的定义
- [GXYCTF2019]Ping Ping Ping 1解题思路
- Qt::QLocale
- Java 获取本机局域网内IP
- yuv 10bit 8bit
- 微信中域名网站域名被封锁、被屏蔽、被和谐后的解决方法
- 基于淘宝开源Tair分布式KV存储引擎的整合部署
- Python:设置不显示Using TensorFlow backend及FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of typ
- JDK8新特性详解Lambda、StreamAPI、Optional等
热门文章
- C/C++操作符的优先级和结合性问题浅析
- 【FPGA】Spartan-6的时钟管理器(CMT)
- vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)
- Git的使用和提交规范
- UVa 164 - String Computer
- 编译gtk+程序报错gcc: pkg-config --cflags --libs gtk+-2.0: 没有那个文件或目录
- C Primer Plus 第6章 C控制语句:循环 6.9 选择哪种循环
- 安卓系统底层C语言算法之测试参数是几个long型的算法
- C#创建、安装一个Windows服务
- hdu 3732(01背包转多重背包)