用于时间序列分析的缩放/参数加权函数

Scaling / parametric weighting function for time series analysis

我有一些时间序列数据,我想对我的数据进行加权,以便最近的观察结果的权重高于旧的观察结果。因此,我正在寻找满足一些属性的参数加权函数。它应该是这样的:

weighting(time, minTime, maxTime, minWeight, slope) = ?

据此

输出: 输出应该在区间 [minWeight, 1.0].

有没有人知道这个加权函数可能是什么样子,或者一些提示或代码示例/伪代码?


我看过的一些功能:

f(x) = x^(n/m), if n < m -- root function

f(x) = x^(n/m), if n = m -- linear function

f(x) = x^(n/m), if n > m -- power function

rescaling(time, minTime, maxTime) = (time - minTime) / (maxTime - minTime)

该加权函数提供区间[0, 1]中的权重。但是曲线形状始终是线性的(无法调整)并且最小值始终为0(我也想调整)。

我想我太笨了,无法将所有部分放在一起。有人可以帮忙吗?

可以通过引入新轴 t'w' 来简化问题,如此处所示

有了这些坐标,方程就很简单了:

w'^2 = t'       - high-score
w' = t'         - normal-score
w' = t'^2       - low-score

因此,只需将 w' 替换为:(w - w0)/(1 - w0) 并将 t' 替换为:(t - t0)/(t1 - t0) 即可得到:

(w - w0)^2/(1 - w0)^2 = (t - t0)/(t1 - t0)      - high-score
(w - w0)/(1 - w0) = (t - t0)/(t1 - t0)          - normal-score
(w - w0)/(1 - w0) = (t - t0)^2 / (t1 - t0)^2    - low-score

现在我们必须求解 w:

w = w0 + (1 - w0)sqrt((t - t0)/(t1 - t0))       - high-slope
w = w0 + (1 - w0)(t - t0)/(t1 - t0)             - normal-slope
w = w0 + (1 - w0)(t - t0)^2 / (t1 - t0)^2       - low-slope

如果您选择其他函数而不是 sqrt()^2,则可以使用完全相同的技术。