用于时间序列分析的缩放/参数加权函数
Scaling / parametric weighting function for time series analysis
我有一些时间序列数据,我想对我的数据进行加权,以便最近的观察结果的权重高于旧的观察结果。因此,我正在寻找满足一些属性的参数加权函数。它应该是这样的:
weighting(time, minTime, maxTime, minWeight, slope) = ?
据此
- time显然是观察的时间去加权,应该在minTime和maxTime之间(time >= minTime, time <= maxTime),
- minTime是最早的观测时间,
- maxTime为最新观测时间,
- minWeight是最小权重到return(也是与权重轴的截距;区间:[0,1]),
- 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
Exponential, logarithmic or sigmoid 函数...
Rescaling(最小-最大归一化)也满足其中一些属性:
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
,则可以使用完全相同的技术。
我有一些时间序列数据,我想对我的数据进行加权,以便最近的观察结果的权重高于旧的观察结果。因此,我正在寻找满足一些属性的参数加权函数。它应该是这样的:
weighting(time, minTime, maxTime, minWeight, slope) = ?
据此
- time显然是观察的时间去加权,应该在minTime和maxTime之间(time >= minTime, time <= maxTime),
- minTime是最早的观测时间,
- maxTime为最新观测时间,
- minWeight是最小权重到return(也是与权重轴的截距;区间:[0,1]),
- 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
Exponential, logarithmic or sigmoid 函数...
Rescaling(最小-最大归一化)也满足其中一些属性:
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
,则可以使用完全相同的技术。