时间序列模型进行预测及异常值检测


前言

本文主要记录使用时间序列模型进行预测及异常值检测的相关笔记


1. 简介

在数据分析中,常常有根据时间变化而变化的数据,这时难免会出现一些异常数据,比如突然增大、突然变小等情况,此时我们就可以使用Facebook提出的Prohpet算法进行异常值检测。这个方法主要是激昂数据波动情况拟合值的置信区间作为判断是否为异常值的上下界。本文将利用此算法在一个数据集上进行检测。

2. 步骤

本次判断的异常值主要为PM2.5的浓度变化随时间变化情况,并判断异常值。下面是具体步骤:
1、首先我们读入数据,将数据存储到一个时序数据变量中,然后输出时间序列数据的波动情况;
2、通过时序数据获得时序数据拟合模型,然后对数据变化趋势和波动情况进行拟合(其中包含了默认置信度95%下的上下界);
3、通过第2步获得的置信区间的上下界,来确定样本中那些数据为异常值,并赋值新建的一个变量。最后根据第2步获得的预测值与第3步获得的异常值还有原始数据进行可视化。

计算某一列值从第一行到当前行的累计和
表table1中有id列和num列,计算从第一行的num值到当前行的num值累计和。

3. 代码

import matplotlib
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pmdarima as pm
from fbprophet import Prophet

matplotlib.rcParams['axes.unicode_minus'] = False
# 解决图像显示中文的问题
sns.set(font="Kaiti", style="ticks", font_scale=1.4)


# 判断并返回异常值
def outlier_detection(forecast):
    index = np.where((forecast["y"] <= forecast["yhat_lower"]) |
                     (forecast["y"] >= forecast["yhat_upper"]), True, False)
    return index


if __name__ 
  • 8
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sky-JT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值