python实现时间序列分析1:传统时间序列分析法

本文详细介绍了Python中时间序列分析的方法,包括移动平均法(简单、加权、指数平滑)以及传统的时间序列模型ARIMA。此外,还提及了在工业实践中应用广泛的xgboost。
摘要由CSDN通过智能技术生成

本文将针对时间序列方法的python实现进行系统的介绍。

1 移动平均法系列

移动平均法是指在当前时间添加时间窗口,取窗口内平均值,或者加权平均值。

1.1 朴素预测法

朴素预测法是指直接使用前一时刻的时序值作为后一个时刻的预测值。

1.2 简单移动平均法

#读取数据
import pandas as pd
data = pd.read_excel("data.xlsx")
print("=================INFO=============")
print(data.info())
X = data[["f1","f2"]]
Y = data["target"]
X_train = X[0:17]
Y_train = Y[0:17]
print("=================DATA==============")
data.head()

#简单移动平均
import matplotlib.pyplot as plt
 

def ma(time_s_part):
    n = len(time_s_part)
    sum = 0
    for i in time_s_part:
        sum += i
    result = sum / n
    return result
 
def answer1(time_s, n): 
    """
    两个参数:
    time_s:时间序列
    n:移动的步长,即移动的期数
    """
    result_ma = []  # 简单移动平均值的列表
    for i in range(n - 1, len(time_s)):
        time_s_part = (time_s[i - (n - 1):i + 1])
        result_ma.append(ma(time_s_part))
    print("Result of moving average:{}".format(result_ma))
    x = result_ma[-1]
    print("Prediction value:{}".format(x))
    # 可视化
    plt.scatter(list(range(len(result_ma))), result_ma)
    plt.show()
if __name__ == '__main__':
    n = 3  
    answer1(Y_train, n)  

在这里插入图片描述

1.3 加权移动平均法

在简单移动平均的基础上对每一期的数据添加权重。

import matplotlib.pyplot as plt
 
# 加权移动平均法
def wma(list2, w):
    n = len(list2)
    sum = 0
    for i in n:
        sum += list2[i] * w[i]
    return sum
 
def answer2(list1, n):
    # 加权移动平均法
    w = [0.2, 0.3, 0.5]  # 各期的权重
    listWMA = []  # 加权移动平均值的列表
    for i in range(n - 1, len(list1)):
        list2 = (list1[i - (n - 1):i + 1])
        listWMA.append(ma(list2))
    print("加权移动平均值的列表:{}".format(listWMA))
    # 最后的移动平均值可做为下一个数的预测
    x = listWMA[-1]
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值