时间序列规则
def isValid(s: 'str') -> 'bool':
return s
#这里的参数:‘注解内容’ 和 箭头‘注解内容’的用法是为标注了参数和返回值的类型,使代码更具有阅读性
def isValid(s):
return s
#效果上其实没有区别
支付数据、客流量数据、交通数据等时间序列通常都具有明显的周期性
- 周期性是核心
- 确定周期(一周、一月)
- 确定组成一个周期的元素(周1-周日、1号-31号)
- 结合STL分解观察周期变化
- 缺点:不考虑节假日、突发事件等
STL分解
STL (Seasonal-Trend decomposition procedure based on Loess) [1] 为时序分解中一种常见的算法,基于LOESS将某时刻的数据*[Math Processing Error]Yv*分解为趋势分量(trend component)、周期分量(seasonal component)和余项(remainder component):
基于周期因子的时间序列预测
method
-
Step1 获得周期因子
- 两种方式
- 除以周均值 ,然后按列取中位数
- 以季节作为一个小部分,该月那个工作日均值,再除以整体均值
- 因子的计算就是 该天的均值除以该周的均值
- 两种方式
-
Step2 预测
- 用因子的中位数 乘以 上一个工作周的平均值
1. 以星期为周期的中位数预测
method
- 按照周,对数据进行reshape( N, 7 )的一个重组
- 再将数据各个星期的那一列的中位数提取出来,之后存入每一天的数据中。作为一个预测。
2. 基于周期因子(以星期为周期)的预测
describe
-
就是说每个weekday都有一个周期因子。我们要算基于星期的周期因子
method 1
- 先将每一天的数据除以这个周的平均值就算出了这一天在这一个周的周期因子
- 将这个周的这个天的周期因子取一个中位数就是我们要的因子
- base的话就是可以按照weekday去取一个中位数
method 2
- 将每一天的数据按照周搞出来 算一个平均 (也就是说在星期一 我知道其平均数值)
- 将按照星期的平均值 除以按照 全体的平均值 就得到了 我们的平均因子
- base:前一周的平均值除以平均因子
- pre:base * 该weekday的一个平均因子
3. 基于周期因子(以月为周期)的预测
describe
trade_day.loc[i,"purchase_day_rate"] = sum(np.array(purchase_weekday_rate)*np.array(trad_day.loc[i,['w1','w2','w3','w4','w5','w6','w7']]))/sum(trade_day.loc[i,['w1','w2','w3','w4','w5','w6','w7']])
#这里的意思就是用星期的因子去和该日各个星期的值进行乘积,得到一种该日在星期因子下的平均
#再除以该周的平均 就得到了该日在星期因子下的周期因子
#遍历每一天就得到了该月每一天在星期因子下的周期因子
#用月份下每一日的平均值作为base
#base/周期因子 就得到了对月份的每一天的一个预测
- 根据因子和每日均值进行预测
- 最后得到一个要预测的月的一个列表 我们只需要将这个列表中的值作为base 然后再称以一个那个月的星期几的一个星期因子 就完成了一个预测。