时间序列预测(一)数据的一些处理方法

一、滑动平均

公式(窗口为7):

也就是说7个数做一次平均

 

二、指数平均

公式:

其中

因此

也就是说离本点越近,考虑的权重也越大。

 

python code:

# author: adrian.wu
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd

"""
count : count(1)
day: d
"""
path = '/Users/adrian.wu/PycharmProjects/jobs/time_series/data/ord_count_by_day.csv'

data_raw = pd.read_csv(path)
data_raw.sort_values("d", inplace=True)

"""
draw raw time series picture
"""
# plt.plot(data_raw['d'], data_raw['count(1)'])
# plt.show()

win_7 = data_raw['count(1)'].rolling(window=7).mean()
ewma_30 = data_raw['count(1)'].ewm(span=30).mean()
d = [i for i in range(0, len(ewma_30))]

fig, ax = plt.subplots(1, 1)

ax.plot(d, data_raw['count(1)'], label='raw_data')
ax.plot(d, win_7, label='win_7')
ax.plot(d, ewma_30, label='ewma_span=30')
plt.legend()
plt.show()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、趋势和周期

时间序列经过合理的函数变换后都可以被认为是由3个部分叠加而成。分别是趋势项部分、周期项部分和噪声项部分

其中s(t)表示周期项,如weekly seasonality(周一和周二是不一样的)和yearly seasonality (平时和寒暑假是不一样的等)。对于一些特别的场景,比如和寒暑假是不一样的等。对于一些特别的场景,还要考虑节假日。

 

四、从频域看可能存在的周期

同样可以利用傅立叶变换看看频域里面的时间序列。

转载于:https://www.cnblogs.com/ylxn/p/10790366.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值