在回归中为最近的观察分配更多的权重

机器算法验证 r 时间序列 回归 随机森林
2022-03-10 22:34:29

如何为 R 中最近的观察分配更多权重?

我认为这是一个常见的问题或愿望,但我很难弄清楚如何实现这一点。我试图搜索很多,但我找不到一个很好的实际例子。

在我的示例中,随着时间的推移,我将拥有一个大型数据集。我想说的是对最近的数据行应用某种指数加权。所以我会有某种指数函数,说 2015 年的观察对于训练模型比 2012 年的观察更重要。

我的数据集变量包含分类值和数值的混合,我的目标是一个数值——如果这很重要的话。

我想使用诸如 GBM/随机森林之类的模型进行测试/尝试,最好是在 CARET 包中。

更新问题

我很欣赏下面给出的关于如何通过两点之间的日期距离以指数方式衰减权重的回应。

然而,当谈到用插入符号训练这个模型时,权重究竟是如何考虑的?每个训练行中的权重值是未来某个点与该点历史上发生时间之间的距离。

权重是否仅在预测期间起作用?因为如果它们在训练过程中发挥作用,那会不会导致各种问题,因为各种交叉折叠会具有不同的权重,试图预测在它之前的某个时间点可能实际存在的东西?

2个回答

如何为 R 中最近的观察分配更多权重?

我猜你有一个与每个观察相关的时间戳。你可以计算一个变量timeElapsed = modelingTime - observationTime现在您应用一个简单的指数函数作为W=K*exp(-timeElapsed/T),其中K是比例常数,T是衰减函数的时间常数W作为案例重量。

据我所知,许多函数都caret允许weight作为参数,它是要提供给相应观察的一列案例权重(因此具有与#rows 相同的长度)。

数据(不是分析师做出假设 - 猜测)通常可以建议加权方案的形式。这是通过 GLS 完成的,其中加权最小二乘模型的适当权重是从误差方差中发现的统计显着差异中获得的。通过 ARIMA(Tsay 程序)和此处http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html查看更改和异常值检测如果您想发布数据,请在此处发布,我会尽力提供进一步帮助,因为我可以定期访问可能会启发您的软件。

我正在使用该软件的 R 版本。

您可以查看如何使用 ARIMA 在干预分析中包含控制变量?因为它具有如何识别权重并用于稳定误差方差的示例,从而有效地相信/不相信/贴现/加权/信任某些先前的值。