Skip to main content

[函数] ZScore

Input

  • 时间序列 X={xt}X = \{x_t\}
  • 滚动时间窗口 ww

Execution

  1. 统计 XX 的总长度,若长度小于 ww , 则返回 NaN 结束逻辑.

  2. 对于每个时间点 tt ,在区间 [tw+1,t][t-w+1, t] 内取子序列

    Xt={xtw+1,xtw+2,,xt}X_t = \{x_{t-w+1}, x_{t-w+2}, \dots, x_t\}
  3. 统计 XtX_t非空数值的数量 cc 与窗口长度 ww 的比例,记作 r=c/wr=c/w , 若 r<0.5r < 0.5 , 则返回 NaN 结束逻辑.

  4. 计算该窗口中非空数值的均值与标准差

    μt=1ci=tw+1txi,σt=1ci=tw+1t(xiμt)2\mu_t = \frac{1}{c}\sum_{i=t-w+1}^t x_i, \quad \sigma_t = \sqrt{\frac{1}{c}\sum_{i=t-w+1}^t (x_i - \mu_t)^2}
  5. 定义滚动 z-score:

    zt=xtμtσtz_t = \frac{x_t - \mu_t}{\sigma_t}
  6. 返回 ztz_t .

Notes

  • σt=0\sigma_t = 0 时将 ztz_t 设为 0.