如何以不同的方式衡量为时间范围提供的观察结果?

数据挖掘 数据挖掘 数据集
2021-10-01 20:46:30

我有 623 个观察值,其中一个连续因变量和 13 个自变量(连续、分类和有序)是根据研究人员的经验和文献回顾定义的。我考虑计划做几个回归分析来估计因变量并研究预测因素(如果它们是正的、负的以及它们的大小)。提供 10 年的数据。由于最新的观察结果更重要,因此我对使用加权观察结果感兴趣。我该如何解决这个问题并验证我的方法?

4个回答

因此,观察年份被视为对因变量有积极影响的预测变量。但是,年份本身对因变量本身没有任何影响;相反,正是在同一时期发生的其他因素导致了改进。

对于具有足够交互深度的树来说,这听起来像是一个挑战,因为您发现这一年与导致改进的其他因素相互作用。这里的普通最小二乘回归不能很好地捕捉到这种类型的交互。

我建议建立以下回归模型:

  1. 将日期列转换为 (CurrentYear - YearOfDateStamp) AS NumOfYearsAway。我建议将其保留为数字特征,而不是分类特征。这将允许基于树的模型选择像 NumOfYearsAway >= 5.5 这样的切割,而不是 (6,7,10) 中的 NumOfYearsAway。当您的评分数据集中出现 NumOfYearsAway = 0 时,这也可能更有帮助,您可能没有当年数据集的训练数据。
  2. 拟合基于树的模型,我会选择 XGBoost,使用通常的 CV 来调整超参数,例如交互深度。

然而,在您的应用程序中选择 XGBoost 的缺点是特定变量对目标变量的影响的解释并不明显。您需要部分依赖图来观察目标变量如何随定制输入变量变化。如果可解释性非常重要,可以选择像 rpart 这样的单树回归模型。

将日期转换为整数时间戳将对最近的观察结果赋予更高的权重。

当你写:

由于最新的观察结果更重要,因此我对使用加权观察结果感兴趣。

您的意思是您已经知道日期将成为您分析中的预测因素,或者您想人为地使该变量成为回归的预测因素?

如果是前者,那么上面的整数转换就可以了。如果是后者,则需要将日期与目标变量结合起来(例如通过乘法)。

您可以做的一件事是计算时间间隔,即当前时间 - 观察时间。假设这是 t。现在创建一个权重向量为 c/t 或 c*exp(-t)。您可以在插入符号中使用权重caret::train > weights

我会阅读衰减函数。使用其中之一,您可以准确选择过去的事情在多大程度上做出了贡献:

https://en.wikipedia.org/wiki/Exponential_decay