[数据挖掘] 42 时间序列预测1 趋势模型 基于回归的预测 美国铁路(美铁)客运公司数据_哔哩哔哩_bilibili
import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt # pylab 子模块则是在 pyplot 的基础上增加了一些额外的功能,例如自动导入了 NumPy 和 Matplotlib,使得用户可以更方便地进行数值计算和绘图操作
import statsmodels.formula.api as smf # statsmodels用于进行统计分析和建模。它提供了广泛的统计模型和方法,包括时间序列分析
from statsmodels.tsa import tsatools, stattools # 子模块tsa,用于时间序列分析。该模块提供了多种时间序列模型和工具
from statsmodels.graphics import tsaplots
from statsmodels.tsa.arima.model import ARIMA
from dmba import regressionSummary
import matplotlib
matplotlib.use('TkAgg') # 指定后端
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] #苹果显示中文 mac中文
filepath = "/Users/zitongqiu/Documents/data mining/data/Amtrak.csv"
df = pd.read_csv(filepath)
df['Date'] = pd.to_datetime(df.Month, format='%d/%m/%Y')
ridership_ts = pd.Series(df.Ridership.values, index=df.Date, name='Ridership')
# .inferred_freq是pandas中DatetimeIndex对象的一个属性,用于自动推断时间序列的频率,它可以根据时间序列的索引推断时间序列的频率.
ridership_ts.index = pd.DatetimeIndex(ridership_ts.index, freq=ridership_ts.index.inferred_freq)
# print(ridership_ts.index) # dtype='datetime64[ns]', name='Date', length=159, freq='MS')
ax = ridership_ts.plot(color='mediumvioletred', figsize=(12, 8)) # ax是一个Axes对象,用于控制和设置图形的各个方面
ax.set_title("1991-01至2004-03美铁月客流量时序图")
ax.set_xlabel('Time')
ax.set_ylabel('Ridership (in 000s/千人)')
ax.set_ylim(1300, 2300)
plt.show()
ridership_ts_3yrs = ridership_ts['1997':'1999']
df = tsatools.add_trend(ridership_ts, trend='ctt') # 使用tsatools.add_trend函数添加趋势线,趋势为ctt,线性项和二次项
ridership_lm = smf.ols(formula='Ridership~trend+trend_squared',
data=df).fit() # smf.ols函数对df中的数据进行了线性回归分析