时间序列分析
时间序列是研究数据随时间变化而变化的一种算法。是一种预测性分析算法。它的基本出发点就是事物发展都有连续性,按照它本身固有的规律进行。
时间序列的常用算法包括移动平均(MA,Moving Average)、指数平滑(ES,Exponential Smoothing)、差分自回归移动平均模型(ARIMA,Auto-regressive Integrated Moving Average Model)三大主要类别,每个类别又细分和延伸多种算法。
时间序列可以解决在只有时间(序列项)而没有其他可控变量下对未来数据的预测问题,常用于经济预测、股市预测、天气预测等。
1. 如果没有自变量,为什么还用时间序列
时间序列通常用于在没有自变量的条件下做预测分析,但有时,即使有自变量也需要用到时间序列。
下面项目是做地区用电量预测,但可用的只有三份数据,一份是地区每5分钟一个点的量测值数据,一份是该地区每隔1小时的天气数据,另外还有季节性数据如节假日、工作休息日。
表面上看,可将天气和季节作为自变量、用电量作为因变量建立回归模型,但本质上,地区的用电量会受到天气和季节变化的影响(夏天空调),但这种影响对整个地区影响非常小,因为该地区用电大户是企业、工业用电客户,因此,这种回归模型无法满足用户预测需求。
经分析,用电量趋势会存在随时间变化而变化的规律,天气、季节因素作为外部影响因素对结果加以调整。
基于这种假设,我们用ARIMA+SVR(svm中的回归模型器)结合起来做电量预测,基本思路:先通过ARIMA得到下一个时间点t的预测用电量值x1、预测值上下限x2、预测样本量x3;然后将这三个特征,再加上天气、季节因素例如温度x4、湿度x5、风力x6、节气x7等几十个特征作为输入变量,来预测t时刻点的真实用电量。
结果证明,这种方法比单独使用任何一种回归和时间序列得到的预测结果更符合实际情况。ARIMA基于其中隐含的主要规律预测用电的“主要部分”,而不同的天气和季节性因素则作为外部因素来增加对结果的修正,弥补无法通过时间规律反映出的“次要部分”和“波动部分”。
实际运营中,可能存在类似的场景:在要分析的主题中无法确定主要变量因素,即使确定了主要变量但无法获得数据,那么可采用这种方法来实现。
2. 时间序列不适合商业环境复杂的企业
常见对时间序列影响较大的因素:
- 融资、并购、收购:当新的资源进入企业后,原来的企业发展模式会面临重构。
- 人工造势:例如天猫双11、京东618等,这些事件跟时间没太大关系,但确实能影响个别日期的数据状态。
- 恶意商业活动:当企业被恶意商业活动攻击时,会产生无法预知的信息,如恶意流量、黄牛订单、活动刷单、内部订单等。
- 广告活动:广告活动对流量和销售的影响几乎是决定性的,有关用户、销售、流量等方面的分析跟时间几乎没有关系。只关乎广告费用。
- 促销活动:促销活动对销售型公司而言,是必备的,基本已经是“没有促销就没有销售”的状态。
- 人为因素:例如删除数据库、商品调价错误、内部信息泄露、升级系统导致程序崩溃等导致的数据异常。
- 系统问题:企业内部IT服务系统出现问题。例如高并发下服务器响应慢、服务器宕机、系统内部错误等导致数据异常。
- 竞争对手影响:例如竞争对手在本企业店庆之前做促销活动、必然吸引一部分用户去消费,尤其对两个网站重叠的会员。
- 宏观政策影响:例如北京商品房调控政策出来,二手房成交率下降70%。
- 企业经营策略的转变:很多中小企业定期制定和修订经营策略,这种经营模式的变革对企业运营影响非常大。
因此,实际分析中,只使用时间序列做预测性分析的场景相对较少。
3. 时间序列预测的整合、横向和纵向模式
4. 代码实例:Python时间序列分析
Pandas和statsmodels都提供了时间序列相关分析功能,这里用statsmodel。有关时间序列算法的选择,最常用的是ARIMA、ARMA,因此,这里使用ARIMA/ARMA做时间序列分析。对这两种时间序列,难点是如何如何判断参数值。本示例将设置判断阈值,通过自动化程序方式来完成自动的ARIMA/ARMA的参数(p、d、q)选择以及模型训练,降低时间序列算法应用难度。
示例中模拟的是针对具有时间序列特征的数据集来做未来时间序列的预测。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2019-07-05 支持向量机(二)线性支持向量机