我有一些时间序列数据,并且我想加权我的数据,因此最近的观测值的权重要比旧的观测值高。因此,我正在寻找一个满足一些属性的参数加权函数。它应该看起来像这样:
权重(时间,minTime,maxTime,minWeight,斜率) =吗?
其中
输出: 输出应在[minWeight,1.0]区间内。
有人知道这个加权函数的外观,还是一些提示或代码示例/伪代码?
我看过的一些功能:
f(x)= x ^(n / m),如果n
f(x)= x ^(n / m),如果n = m-线性函数
f(x)= x ^(n / m),如果n> m-幂函数
Rescaling(最小-最大归一化)也满足其中一些属性:
重新缩放(时间,最小时间,最大时间)=(时间-最小时间)/(最大时间- minTime)
此加权功能提供区间[0,1]中的权重。但是曲线形状始终是线性的(无法调整),最小值始终为0(我也想对其进行调整)。
我想我太愚蠢了,无法将所有部分放在一起。有人可以帮忙吗?
答案 0 :(得分:1)
可以通过引入新轴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
,则可以使用相同的技术。