我放了一份样例数据在data文件夹下,
看一下数据大小和结构
画图看一下序列的走势:(一些画图等探索类的方法放在了test_stationarity.py 文件中,包含时间序列图,移动平均图,有兴趣的可以自己尝试下)。
看这糟心的图,那些骤降为0的点这就是我遇到的第一个坑,我当初一拿到这份数据就开始做了。后来折腾了好久才发现,那些骤降为0的点是由于数据缺失,ETL的同学自动补零造成的,沟通晚了(TДT)。
把坑填上,用前后值的均值把缺失值补上,再看一眼:
发现这份数据有这样几个特点,在模型设计和数据预处理的时候要考虑到:
前六天的数据做训练,第七天做测试集。
消除数据的毛刺,可以用移动平均法,我这里没有采用,因为我试过发现对于我的数据来说,移动平均处理完后并不能使数据平滑,我这里采用的方法很简单,但效果还不错:把每个点与上一点的变化值作为一个新的序列,对这里边的异常值,也就是变化比较离谱的值剃掉,用前后数据的均值填充,注意可能会连续出现变化较大的点:
平滑后的训练数据:
采用statsmodels工具包:
对分解出来的趋势部分单独用arima模型做训练:
预测出趋势数据后,加上周期数据即作为最终的预测结果,但更重要的是,我们要得到的不是具体的值,而是一个合理区间,当真实数据超过了这个区间,则触发报警,误差高低区间的设定来自刚刚分解出来的残差residual数据:
预测并完成最后的加法处理,得到第七天的预测值即高低置信区间:
对第七天作出预测,评估的指标为均方根误差rmse,画图对比和真实值的差距:
可以看到,均方根误差462.8,相对于原始数据几千的量级,还是可以的。测试数据中的两个突变的点,也超过了置信区间,能准确报出来。
前文提到不同的api形态差异巨大,本文只展示了一个,我在该项目中还接触了其他形态的序列,有的有明显的上升或下降趋势;有的开始比较平缓,后面开始增长... ... ,但是都属于典型的周期性时间序列,它的核心思想很简单:做好分解,做好预测结果的还原,和置信区间的设置,具体操作可根据具体业务逻辑做调整,祝大家建模愉快:-D。
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!展开全部SPSS和Python,单纯地说哪个好,是没有意义的,还要看你用来干什么?
我来帮你区分一下这些术语。
1、分析工具:Excel、SPSS、Tableau属于分析工具类
2、分析语言:Python、R属于分析脚本语言。
分析工具类,如果细分还可以分为统计工具和挖掘工具。
1)统计工具: 比如像Excel/Tableau/PowerBI都属于统计工具,此类工具的很简单,是基于统计(比如分类汇总)的分析工具,通过统计指标,查看业务的规律、变化、趋势等等,来作出对业务的判断并给出合适的业务策略。
所以,此类工具侧重于业务的描述性分析(业务规律、业务变化、业务周期),常用有的分析方法有:对比分析、分布分析、结构分析、趋势分析等等。
2)挖掘工具: 像SPSS/SAS类就属于挖掘工具。此类挖掘工具侧重探索隐藏得比较深的业务知识和模式,挖掘工具侧重于业务的影响因素分析、预测性分析等等,讲究分析模型(比常规的分析方法要复杂),在分析模型中不见得有统计指标,而是模式。
常用的分析模型:影响因素分析(相关/方差/列联分析)、数据预测模型(回归预测/时序预测)、分类预测模型(决策树、神经网络、支持向量机等),当然还其它更多的模型,比如聚类、关联等等。
理论上,使用高级的数据挖掘工具也是可以进行常规的数据统计分析的,即Excel能够实现的,理论上SPSS也可以实现。但坦白地说,用挖掘工具来做统计工具分析,其效率反而没有统计工具高。
不过,当前绝大多数公司,都是在用Excel/SQL来做数据分析,可见他们并没有什么复杂的业务问题需要用到更高级的分析工具,简单的工具已经足以胜任平时的业务数据分析了。
最后再来说分析语言Python/R。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!