要检查样本组中的ARMA模型:

import pandas as pd

from pandas.tseries.offsets import *

import numpy as np

import matplotlib.pyplot as plt

import statsmodels.api as sm

csv_file = '/home/Jian/Downloads/analyse vtr.csv'

df = pd.read_csv(csv_file, index_col=[0], sep='\t')

grouped = df.groupby('adserver_id')

group = list(grouped)[0][1]

ts_data = pd.TimeSeries(group.c_start.values, index=pd.to_datetime(group.day))

# positive-valued process, looks non-stationary

# simple way is to do a log transform

fig, axes = plt.subplots(figsize=(10,8), nrows=3)

ts_data.plot(ax=axes[0])

ts_log_data = np.log(ts_data)

ts_log_data.plot(ax=axes[1], style='b-', label='actual')

# in-sample fit

# ===================================

model = sm.tsa.ARMA(ts_log_data, order=(1,1)).fit()

print(model.params)

y_pred = model.predict(ts_log_data.index[0].isoformat(), ts_log_data.index[-1].isoformat())

y_pred.plot(ax=axes[1], style='r--', label='in-sample fit')

y_resid = model.resid

y_resid.plot(ax=axes[2])

# out-sample predict

# ===================================

start_date = ts_log_data.index[-1] + Day(1)

end_date = ts_log_data.index[-1] + Day(7)

y_forecast = model.predict(start_date.isoformat(), end_date.isoformat())

print(y_forecast)

2015-07-11 7.5526

2015-07-12 7.4584

2015-07-13 7.3830

2015-07-14 7.3224

2015-07-15 7.2739

2015-07-16 7.2349

2015-07-17 7.2037

Freq: D, dtype: float64

# NOTE: this step introduces bias, it is used here just for simplicity

# E[exp(x)] != exp[E[x]]

print(np.exp(y_forecast))

2015-07-11 1905.6328

2015-07-12 1734.4442

2015-07-13 1608.3362

2015-07-14 1513.8595

2015-07-15 1442.1183

2015-07-16 1387.0486

2015-07-17 1344.4080

Freq: D, dtype: float64

为每个子组运行ARMA模型(非常耗时):

import pandas as pd

from pandas.tseries.offsets import *

import numpy as np

import matplotlib.pyplot as plt

import statsmodels.api as sm

csv_file = '/home/Jian/Downloads/analyse vtr.csv'

df = pd.read_csv(csv_file, index_col=[0], sep='\t')

grouped = df.groupby('adserver_id')

def forecast_func(group):

ts_log_data = np.log(pd.TimeSeries(group.c_start.values, index=pd.to_datetime(group.day)))

# for some group, it raise convergence issue

try:

model = sm.tsa.ARMA(ts_log_data, order=(1,1)).fit()

start_date = ts_log_data.index[-1] + Day(1)

end_date = ts_log_data.index[-1] + Day(7)

y_forecast = model.predict(start_date.isoformat(), end_date.isoformat())

return pd.Series(np.exp(y_forecast).values, np.arange(1, 8))

except Exception:

pass

result = df.groupby('adserver_id').apply(forecast_func)

替代模型:为了快速计算,考虑指数平滑;此外,我看到数据看起来像一个具有时变Possion分布的正值过程,可能会考虑使用pymc模块的状态空间模型.

python的时间序列预测,用python中的时间序列预测相关推荐

  1. ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现

    ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 目录 机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 代码实现

  2. python预测发展趋势_Python中的趋势“预测器”?

    对于预测时间序列数据,我觉得最好的选择是LSTM,它是一种递归神经网络,非常适合于时间序列回归.在 如果您不想深入研究神经网络的后端,我建议您使用Keras库,它是Tensorflow框架的包装器.在 ...

  3. 预测类问题中的时间序列预测模型

    前言:时间序列预测模型适用于含有时间变量的模型预测,对中短期的预测有着较好的结果,对长期预测不适用.本文重点介绍ARIMA模型的原理及代码实现. 其他模型总结:​[Python]Python中的经典时 ...

  4. python短期预测图_Python中利用长短期记忆模型LSTM进行时间序列预测分析

    原文链接:http://tecdat.cn/?p=6663 此示例中,神经网络用于使用2011年4月至2013年2月期间的数据预测都柏林市议会公民办公室的能源消耗. 每日数据是通过总计每天提供的15分 ...

  5. python 分类变量xgboost_如何用XGBoost做时间序列预测?

    作者:Jason Brownlee翻译:wwl校对:王雨桐本文约3300字,建议阅读10分钟本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型 ...

  6. 【Python】时间序列数据分析与预测之Python工具汇总

    本文中总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时,数据科学家或 ML 工程师通常会使用 ...

  7. 时间序列数据分析与预测之Python工具汇总

    ‍ ‍ 大家好,我是辰哥‍ ‍ 本文中硬核总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时, ...

  8. 时间序列特征构造:以电力负荷预测为例讲解(python语言)

    个人电气博文目录传送门 学好电气全靠它,个人电气博文目录(持续更新中-) 时间序列特征构造 时间序列问题,首先不管是回归问题,还是分类问题. 一个模型的好坏,决定因素由数据集的大小,特征值的选取和处理 ...

  9. python时间序列预测不连续怎么办_Python建模:预测周期性时间序列的正确姿势

    公司平台上有不同的api,供内部或外部调用,这些api承担着不同的功能,如查询账号.发版.抢红包等等. 日志会记录下每分钟某api被访问了多少次,即一个api每天会有1440条记录(1440分钟),将 ...

  10. 组合预测模型 | ARIMA-LSTM时间序列预测(Python)

    组合预测模型 | ARIMA-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-LSTM时间序列预测(Python) 预测结果 基本介绍 程序设计 参考资料 预测结果 基本介绍 ...

最新文章

  1. 亿级流量网关设计思路
  2. CEO 赠书 | 甲之蜜糖乙之砒霜,创新者也将成为守旧者
  3. 【Hibernate】Hibernate系列6之HQL查询
  4. 在Spring + Hibernate中使用二级缓存配置步骤
  5. FAT 文件系统代码分析--文件系统挂载篇
  6. 2的6次方怎么用计算机,2的6次方是多少(进制转换计算器)
  7. Ubuntu 9.10 如何安装rais环境
  8. 线程池的好处,详解,单例(绝对好记)
  9. android手机下开发摄像头拍摄
  10. 钉钉ppt放映显示备注_PPT的备注怎么用,放映PPT时如何显示备注 来看看吧
  11. 华硕主板无盘启动bios设置_【华硕主板bios启动顺序】华硕主板bois启动项_华硕主板bios硬盘启动...
  12. 计算机mac地址怎么读,如何读取MAC地址
  13. 基于vue的开源管理系统模板
  14. 《计算机网络:自顶向下方法》学习笔记——第六章:链路层
  15. Neo4j图形数据库的一些基本Cypher查询指令总结
  16. mysql 2.71828_e值如何计算 2.71828
  17. 感《明朝后期的中缅战争》
  18. mysql评论表_如何设计论坛评论表?mysql
  19. 个人房屋抵押贷款的利率一般是多少?
  20. 数据结构实训——校园导游系统

热门文章

  1. java 性能调优:35 个小细节,让你提升 java 代码的运行效率
  2. IDEA一定要懂的32条快捷键
  3. 高效工作,分享几个实用的小诀窍,很多人已经悄悄用上了
  4. 管理者如何打造一个有执行力的团队?
  5. 稀疏矩阵按列转置核心代码
  6. 算法笔记-桶排序代码与原理、非比较排序、计数排序、基数排序、C#代码
  7. python语言依赖平台吗_在大型项目上,Python 是个烂语言吗?
  8. 单链表-两个线性表的合并1(破环原链表+尾插法)
  9. 子网地址,广播地址,子网掩码,主机地址范围,求法总结
  10. C++中的运算符重载基础