python - Python中的分位数回归与R中的结果不同
问题描述
Python 中 statsmodels 包中的 QuantReg 给出的结果与 R 中的结果截然不同,使用的数据如下面的代码所示。
我分别在 Python 和 R 中尝试了 STACKLOSS 数据,结果是一样的。我想知道数据本身是否在 Python 中引起了一些问题,或者算法的两种实现可能存在一些根本差异,但无法弄清楚。
Python中的代码:
from statsmodels.regression.quantile_regression import QuantReg
y = [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 662.59, 248.08, 331.25, 182.98, 1085.69, -44.32]
X = [
[1, 20322.18, 0.00, 0], [1, 19653.34, 0.00, 0],
[ 1, 0.00, 72712.41, 0], [1, 0.00, 72407.31, 0],
[1, 0.00, 72407.31, 0], [1, 0.00, 72201.89, 9111],
[1, 183.52, 0.00, 0], [1, 183.52, 0.00, 0],
[1, 0.00, 0.00, 2879], [1, 0.00, 0.00, 2698],
[1, 0.00, 0.00, 0], [1, 0.00, 0.00, 0],
[1, 0.00, 0.00, 19358], [1, 0.00, 0.00, 19001]
]
print(QuantReg(y, X).fit(q=.5).summary())
在 R 中:
library(quantreg)
y <- c(0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 662.59, 248.08, 331.25, 182.98, 1085.69, -44.32)
X <- matrix(
c(1, 20322.18, 0.00, 0, 1, 19653.34, 0.00, 0,
1, 0.00, 72712.41, 0, 1, 0.00, 72407.31, 0,
1, 0.00, 72407.31, 0, 1, 0.00, 72201.89, 9111,
1, 183.52, 0.00, 0, 1, 183.52, 0.00, 0,
1, 0.00, 0.00, 2879, 1, 0.00, 0.00, 2698,
1, 0.00, 0.00, 0, 1, 0.00, 0.00, 0,
1, 0.00, 0.00, 19358, 1, 0.00, 0.00, 19001),
nrow=14, ncol=4, byrow=TRUE
)
rq(y~.-1, data=data.frame(X), tau=.5, method='fn')
R 给出 1.829800e+02, -9.003955e-03, -2.527093e-03, -5.697678e-05 的系数
而 Python 给出以下 3.339e-05, -1.671e-09, -4.635e-10, 7.957e-11
任何输入或提示表示赞赏。
解决方案
我猜这是一个参数没有很好识别的数据问题。超过一半的观测值的响应值为零,而所有其他值都大得多。
据我所知,优化算法在 R 和 statsmodels 之间有所不同,特别是在处理残差接近零的观察时。
如果参数没有很好地识别,也就是说,如果数据没有在相关范围内提供足够的信息,那么实现和优化算法的微小差异会对参数估计产生很大的影响。
这很可能意味着在这种情况下没有估计可以提供精确的参数估计。
推荐阅读
- javafx - 后台线程无论如何直接访问 UI
- ios - Swift 5 对继承的改变?
- php - 将 jquery ajax 与 php 一起使用时的会话问题
- android - Native project fails to build with error: Error configuring
- json - 在Textview和TableLayout中使用retrofit和rxjava2数据显示的json数据解析
- ffmpeg - 流式传输视频时是否真正连接字幕(HLS,M3U8)
- asp.net - IIS 中的 HTTP 到 HTTPS 重定向
- react-native - 按下硬件后退按钮后反应本机应用程序卡住
- primefaces - 如何覆盖 ap:confirmDialog 中的自定义严重性图标
- javascript - 为什么我的 javascript 代码没有执行并且说不是有效的 mime 类型?