美股封盘(close)数据
获取数据源—>缺失值处理—>检验数据稳定性—>序列平稳—>参数寻优—>建立模型—>模型检验—>模型预测
一、获取数据源
#以谷歌美股封盘数据来构建时间序列模型|导入库包
from pandas_datareader import data
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.arima_model import ARIMA
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.tsa.api as smt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
#设置股票代码与起始时间
stock_code = "GOOG"
start_date = "2005-01-01"
end_date = "2019-12-25"
stock_info = data.get_data_yahoo(stock_code, start_date, end_date)
#展示前5行股票数据
print(stock_info.head())
plt.plot(stock_info['Close'], 'g') #展示数据图
plt.show()
展示数据图
图描述
#获取封盘数据
df = pd.DataFrame(data=stock_info)
data = df.loc[:,['Close']]
data.tail() #查看数据截止日期
二、缺失值处理
没有的话,手动创造一些缺失值
1.先对数据进行降采样
2.然后对数据进行升采样
3.之后使用向前填充、向后填充、线性填充来进行缺失值的处理
在处理数据时也可以用降升采样,在这里我是造一些缺失值
#降采样
data1 = data.resample('2W').mean() #取三天的平均值
data1.head()
#查看数据个数
n_sample = data1.shape[0]
n_sample
392
#升采样
data2 = data1.resample('D').asfreq()
data2.head(6)
#缺失值处理 分别为ffill(取前面的值)、bfill(取后面的值)、interpolate(线性取值)
#这里采取的线性填充
data3 = data2.resample('D').interpolate()
data3.head()
三、检验序列的稳定性
主要是观察数据是否是平稳序列,如果不是则要进行处理转换为平稳序列
data = data['Close']