问题标签 [quantile-regression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在计算相应分位数的熊猫数据框中创建分位数列
我有一个由客户 ID 索引的数据框 df。并包括:
df=['Customer ID', 'Sales' ,'Product code' ,'Price']
]:https ://i.stack.imgur.com/vP8Gy.png
我想创建一个分位数列,它为每个客户 id 计算(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9,0.95,1)
价格列范围内的相应分位数
df=['Customer ID', 'Sales','Product code', 'Price', 'Quantiles Price']
所以最终的 df 将包含一个新列,称为每个相应客户 ID 的价格分位数:
任何人都可以建议我可以使用什么功能来获得这个?
先感谢您。
catboost - 具有单调约束的分位数回归
尝试对某些功能使用带有单调约束的分位数回归时,我在 CatBoost 中遇到了问题。
分位数损失使用“Exact”作为叶子估计方法,但单调约束不能与此方法一起使用。
我尝试使用“梯度”方法,但它似乎在分位数回归中效果不佳(即使没有单调约束)。
我如何将分位数回归与单调约束结合起来?
r - 执行分位数回归时 R 中 quantreg 输出的尴尬行为
我正在对生存数据执行审查分位数回归,以解释我的队列中某些百分位数的生存时间差异。我正在使用quantreg
CRAN 的软件包。
这是一个可作为可重现示例的代码
请注意,在我的df
数据集中,您有一个时间变量 ( months
)、一个事件变量 ( event
) 和一个分组变量 ( sex
)。我随机添加了一些 NA 值来模拟观测的真实数据。
如您所见,fit
存储crq
函数的结果。结果如下:
这些NA
可能与事件在我的数据库中非常罕见有关,因此两组的总生存率可能高于 20%(即 0.2 个百分点)。但是,我对较低的百分位数感兴趣(应该报告非 NA 值)。当我运行summary(fit)
命令时,结果如下:
我没有尝试过任何可以帮助我的代码工作的方法。请注意,我尝试在 crq 的调用中指定tau
,taus
和grid
属性,但这些似乎不会影响输出(它一直在发布“NA”表)。
谁能帮我?
r - R中的二次分位数回归
有谁知道如何在连续变量上拟合二次(或更高阶)模型并在 R 中对其进行分位数回归?此外,您如何判断哪个级别的 tau 更适合数据?
“den”的值是鱼的密度 (count/m^3) 和盐度 = 盐度 (ppt)。完整的数据集是 1500 个观测值,我想使用盐度来预测鱼的密度。包含所有数据的图看起来是半二次的,但我想使用分位数回归将其与其他拟合进行比较。我只是不知道如何使模型中的关系非线性。是den~盐度+盐度^2吗?
python - 为什么在 sklearn.linear_model.QuantileRegressor 中拟合模型需要更长的时间,然后是 R 模型实现?
首先我使用 R 实现分位数回归,然后我使用具有相同分位数(tau)和 alpha=0.0(正则化常数)的 Sklearn 实现。我得到相同的公式!我尝试了许多“求解器”,但运行时间仍然比 R 长得多。
例如:
在 R 模型中,默认方法是“br”,而在 Sklearn 中是“套索”。尽管我将 R 实现的方法更改为“套索”,但运行时间更短。
导入并创建数据:
绘制数据的函数(有或没有线):
获取公式的函数:
拟合数据并测试运行时间和公式:
为什么在 sklearn 和 R 模型实现中拟合模型需要更长的时间?
r - 如何使用 R 中的多重插补数据执行引导以估计和推断分位数回归?
我正在尝试使用在 R 中的多重插补数据上运行的分位数回归模型手动汇集结果mice
。我使用引导程序来获得模型项的 95% CI 和 P 值,其中模型参数及其标准误差是在采样一定数量的行后获得的,该行数等于我的数据集中唯一的参与者数量. 对于m个估算数据集的每一个,该过程重复 500 次。然后,作为最后一步,我根据 Rubin 的规则 (1987)(参见例如https://bookdown.org/mwheymans/bookmi/rubins-rules . html ). 为了加快速度,我使用foreach
将分析拆分到多个处理器内核for
上并循环遍历m个估算数据集。
但是,合并结果的部分似乎存在缺陷。当我查看汇总结果时,我观察到 P 值与 95% CI 不一致(例如,当 0 包含在 95% CI 中时,P < 0.05)。
为了说明这个问题,我做了一个可重复的例子,使用这些公开可用的数据:https ://archive.ics.uci.edu/ml/machine-learning-databases/00519/heart_failure_clinical_records_dataset.csv
因为这个数据集中没有缺失数据,所以我自己介绍一下,对数据进行插补(m = 10个插补数据集,20次迭代)。我set.seed
用于重现性。
请注意,我在此示例中使用lm
而不是。quantreg::rq
为了进一步加快速度,我在这里使用 OLS 而不是分位数回归并并行化该过程。
作为最后一步,我根据 Rubin 的规则汇总结果。
显然,下图的P值不符合95% CI(因为0包含在CI中,所以P值应该≥0.05)。
编辑(2021 年 12 月 29 日)
正如@Gerko Vink 在他的回答中指出的那样,多重插补和引导都会导致方差。插补引起的方差由鲁宾规则处理,引导方差不是。不幸mice::pool
的是,不适用于quantreg::rq
.
我知道基于本文所示的基于百分位的简单方法构建引导 CI ,但我倾向于认为这不是正确的方法。
有谁知道在使用时如何适当地处理引导引起的额外差异rq
?
编辑(2021 年 12 月 30 日)
受最近这篇文章的启发,我决定不再走自举的道路,而是从每个估算的数据集中手动提取点估计和方差,并使用鲁宾规则将它们汇集起来。我已将这种方法发布为下面的答案。不过,任何关于如何适当处理使用时引导引起的额外差异的意见rq
仍然非常受欢迎!
r - 如何使用分位数回归模型的置信区间绘制第 10、第 50 和第 90 分位数
我有兴趣将分位数回归模型拟合到具有二元结果响应的数据,因此,我使用GJRM
R 中的包。在拟合模型后,我尝试为每个预测变量绘制带有多个分位数的置信区间,但是,我不能吨。在这里,我包含了一个来自包本身的示例。另外,我怎么能找到每个拟合模型的 AIC?给定示例中的 AIC 适用于两个拟合方程。
r - RQPD 对象的集群标准错误
如何对 rqpd 对象的标准错误进行聚类?该功能summary.rqpd
似乎不允许“集群”选项。
最小工作示例:
r - 如何使用分位数回归和 R 中的自举标准误差确定 t stat 的自由度
我正在使用 R 使用自举标准误差进行分位数回归,以测试一个变量在分布的第 5、第 50 和第 95 个百分位数是否高于第二个变量。输出不包括 t stat 的自由度。我该如何计算?
r - 使用条件分位数回归对考试成绩进行排名的 SAS 代码
我对 R 和一般编码相对较新,我一直在尝试复制此PDF中提供的示例(https://support.sas.com/resources/papers/proceedings17/SAS0525-2017.pdf)关于分位数回归在 SAS 中。该示例可在第 14 至 17 页上找到,并应用于一个简单的数据集,以确定学生在控制年龄时的表现百分位数。
我从未使用过 SAS 并尝试使用 quantreg 包在 R 中复制示例,但到目前为止我还无法获得回归分位数级别的结果。(我不在乎图表)
是否有人可以提供将 SAS 代码转换为 R 的示例?
编辑:我很抱歉在没有示例的情况下发布此内容,因为卡梅伦先生向我指出我的问题的格式之前不够充分。我希望这现在更合适了。感谢您的帮助!
这是我所做的一个例子:
最后一行代码为我产生了一个错误。我现在的问题是如何使用 quantreq 来获取各个学生 ID 的分数等级。我可以对分数本身进行回归,但我不知道如何像示例中那样对每个人进行回归。