时间序列:
1.时间戳(timestamp)
2.固定周期(period)
3.时间间隔(interval)
date_range:
H:小时
D:天
M:月
rng = pd.date_range('2016/07/01',periods=10,freq='D') #创建一个时间序列,从2016/07/01开始的10天。periods是周期数,freq即周期的长度。 freq可以加数字,如3D表示周期长度为3天
date_range也可以作为小标建立Series rng = pd.Series(np.random.randn(20),index = pd.date_range(pd.datetime(2016,1,1),periods=20))
#如果没有传入freq,默认为’D’
若知道起始时间和终止时间,可以创建一个时间序列。如 rng = pd.date_range('2016/01/01','2017/01/01',freq='M')
过滤,.truncate() rng = pd.Series(np.random.randn(20),index=pd.date_range('2018/01/01',periods=20,freq='M')) rng = rng.truncate(before='2018/05/05')
#其中,before是过滤该日期之前的日期,after是过滤该日期之后的日期
时间戳的加法:rng = pd.Period('2016-01-01') + pd.Timedelta('1 day')
会变成2016-01-02
数据重采样:
降采样:
rng = pd.date_range('1/1/2011',periods=90,freq='D') ; ts = pd.Series(np.random.randn(len(rng)),index=rng) ; ts = ts.resample('M').sum()
升采样:
1。 ts = ts.resample('D').ffill(1)
按照前一个值填充,也可以是多个
2。 ts = ts.resample('D').dfill(1)
按后一个填充
3. ts = ts.resample('D').interpolate('linear)
按照有的数字之间连线,连线上的点来填充空缺值
滑动窗口:
rolling(window)rng = pd.date_range('1/1/2011',periods=90,freq='D') ; ts = pd.Series(np.random.randn(len(rng)),index=rng) ; r = ts.rolling(window=10) ; print(r.mean())
ARIMA模型
平稳性:均值和方差没有明显的变化,经由样本时间序列得到的拟合曲线有“惯性”
严平稳:分布不随时间的改变而改变
弱平稳:期望与相关系数(依赖性)不变。发生在某时刻t的值依赖于他的过去的信息,所以需要依赖性
差分法: 时间序列在t 于t-1 时刻的差值
自回归模型(AR):
1.描述当前值和历史值之间的关系,用变量自身的历史时间的数据对自身进行预测
2.自回归模型必须满足稳定性要求
3.p阶自回归模型公式:
自回归模型的限制:
1自回归模型是用于自身的数据进行预测
2.必须具有稳定性
3.必须具有自相关性
4.自回归只适用于预测与自身前期相关的现象
移动平均模型(MA)
1.移动平均模型关注的是自回归模型中的误差项的累加
2.q阶自回归过程
3.移动平均法能有效消除预测中的随机波动
自回归移动平均模型(ARIMA)
自回归与移动平均结合(相加)
ARIMA(p,d,q) 全称为差分自回归移动平均模型
q为移动平均数,p为自回归项,d为差分次数
原理:将非平稳时间序列转化为平稳时间序列然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型
自相关函数(ACF)
有序的随机变量与其自身相比较
自相关函数反映了同一序列在不同时序的取值之间的关系
偏自相关函数(PACF)
对于一个平稳AR模型,求出滞后k自相关系数p(k)时,x(t)与x(t-k)之间的单纯的相关关系
x(t)还会收到中间(k-1)随机变量x(t-1),x(t-2)…x(t-k+1)的影响,而这k-1个随机变量又都和x(t-k)具有相关关系
所以自相关系数p(k)里实际掺杂了其他变量对x(t),x(t-k)的影响
剔除了中间k-1个随机变量的干扰后,x(t-k)对x(t)的影响的相关程度
ADF 还包含了其他变量的影响,而偏自相关系数PACF是严格的这两个变量之间的相关性
模型 | ACF | PACF |
---|---|---|
AR ( p ) | 衰减趋向于0 | p阶后截尾 |
MA(q) | q阶后截尾 | 衰减趋于0 |
ARM A(p,q ) | q阶后区域0(几何或震荡型) | p阶后区域0(几何或震荡型) |
ARIMA建模流程:
1.将序列平稳(差分法确认d)
2.p和q阶确认ACF和PACF
3.ARIMA(p,d,q)
模型选择AIC和BIC,选择更简单的模型
AIC:赤池信息准则: AIC = 2k - 2ln(L)
BIC:贝叶斯信息准则:BIC = kln(n) - 2ln(L)
k为模型参数个数,n为样本数量,L为似然函数
重采样 pd.resample
滑动窗口 .rolling(window=10)
tsfresh 特征提取