大家好,時間序列分析是一種基于歷史數(shù)據(jù)和趨勢分析進行預測的統(tǒng)計技術。它在金融和經(jīng)濟領域非常普遍,因為它可以準確預測趨勢并做出明智的決策。本文將使用Python來探索經(jīng)濟和金融數(shù)據(jù),執(zhí)行統(tǒng)計分析,并創(chuàng)建時間序列預測。
我們將在本教程中使用NumPy、Pandas和Matplotlib等不同的Python庫,此外還將介紹yfinance
庫,并使用它來從Yahoo Finance下載金融數(shù)據(jù)。
安裝庫
在開始之前,安裝必要的庫,打開終端并運行以下命令:
pip install pandas numpy matplotlib yfinance
接下來,打開一個新的Jupyter Notebook或選擇的任何Python環(huán)境,開始實現(xiàn)代碼。
數(shù)據(jù)收集
為了演示如何使用Python進行時間序列分析和預測,將使用微軟公司的每日調整收盤價,這些數(shù)據(jù)由Yahoo Finance提供。在下載數(shù)據(jù)之前,導入所需的庫:
import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
# 設置可視化的樣式。
plt.style.use('fivethirtyeight')
接下來,定義微軟公司的代碼、開始和結束日期。
# 定義代碼并下載數(shù)據(jù)。
MSFT = yf.download('MSFT', start='2010-01-01', end='2022-06-30')
yfinance
庫提供了一種簡單的方法來下載特定代碼的金融數(shù)據(jù),開始和結束日期表示我們要下載的數(shù)據(jù)時間段,本文為2010年1月至2022年6月。
探索性數(shù)據(jù)分析
現(xiàn)在已經(jīng)下載了數(shù)據(jù),然后探索一下數(shù)據(jù)以更好地了解它的結構和特征,可以使用Pandas來分析數(shù)據(jù)。
# 顯示數(shù)據(jù)的前5行。
print(MSFT.head())
# 顯示數(shù)據(jù)的統(tǒng)計摘要。
print(MSFT.describe())
第一行代碼將數(shù)據(jù)的前5行輸出到控制臺。它給我們一個快速查看數(shù)據(jù)的結構——顯示日期、開盤價、最高價、最低價、收盤價和調整后的收盤價。
第二行代碼提供了數(shù)據(jù)的統(tǒng)計摘要,顯示計數(shù)、平均值、標準差、最小值、最大值和四分位數(shù)值。
接下來,讓我們繪制每日調整后的收盤價,使數(shù)據(jù)可視化。
# 繪制微軟公司的調整后收盤價。
plt.figure(figsize=(12,6))
plt.plot(MSFT['Adj Close'], label='Adjusted Close')
plt.title('Microsoft Adjusted Close Price')
plt.xlabel('Date')
plt.ylabel('Adjusted Close Price ($)')
plt.legend(loc='upper left')
plt.xticks(rotation=45)
plt.show()
?時間序列分析
接下來需要進行時間序列分析,以深入了解數(shù)據(jù)的時間行為。自相關函數(shù)(ACF)和偏自相關函數(shù)(PACF)用于識別連續(xù)觀測值和預測值之間的關系,可以使用statsmodels
庫來計算ACF和PACF。
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# 繪制自相關和偏自相關函數(shù)
fig, ax = plt.subplots(2, figsize=(12,6))
plot_acf(MSFT['Adj Close'], lags=20, ax=ax[0])
plot_pacf(MSFT['Adj Close'], lags=20, ax=ax[1])
plt.show()
上面的代碼繪制了微軟公司調整后的收盤價的ACF和PACF,滯后期最長為20。
?從ACF圖中,我們可以觀察到自相關值在緩慢下降。PACF圖表明只有在滯后1時期,才存在顯著的自相關性,這表明第一個滯后期或時間段與當前觀察值具有最強的相關性。
預測
現(xiàn)在我們已經(jīng)分析了數(shù)據(jù)并了解了其結構和趨勢,讓我們使用Prophet
庫進行一些預測。
pip install prophet
from prophet import Prophet
首先,我們將創(chuàng)建一個新的DataFrame,僅捕獲我們分析所需的列。
# 創(chuàng)建一個新的DataFrame
data = MSFT.loc[:, ['Adj Close']]
data.head()
接下來,我們將重命名列以適應Prophet
的命名約定。
# 重命名列以適應Prophet的命名約定
data = data.reset_index()
data = data.rename(columns={'Date':'ds', 'Adj Close':'y'})
data.head()
上述代碼將DataFrame中必要的列重命名以適應Prophet
的命名約定,ds
列表示日期,而y
列表示我們要預測的值。
現(xiàn)在,我們將數(shù)據(jù)拆分為訓練集和測試集,并使用Prophet
庫進行預測。
train_data = data[data['ds'] < '2021-07-01']
test_data = data[data['ds'] >= '2021-07-01']
# 創(chuàng)建模型并擬合訓練數(shù)據(jù)
model = Prophet()
model.fit(train_data)
# 定義一個與預測范圍一致的新的DataFrame
future = test_data[['ds']]
forecast = model.predict(future)
# 繪制預測圖
model.plot(forecast)
plt.title('Microsoft Adjusted Close Price: Actual vs. Forecast')
plt.xlabel('Date')
plt.ylabel('Adjusted Close Price ($)')
plt.show()
上述代碼創(chuàng)建了一個Prophet
模型并擬合訓練數(shù)據(jù),未來的DataFrame用ds
列表示我們的預測日期。然后我們進行預測,并將結果保存在forecast DataFrame
中,最后使用模型的plot()
函數(shù)繪制預測圖。
?總結
時間序列分析和預測是獲得不同領域數(shù)據(jù)洞察力的重要統(tǒng)計技術。本文從雅虎金融收集數(shù)據(jù),并使用Python進行數(shù)據(jù)分析,包括探索性數(shù)據(jù)分析和預測。文章來源:http://www.zghlxwxcb.cn/news/detail-589620.html
本文演示了各種可視化技術,例如繪制移動平均線、ACF和PACF圖,同時還進行了時間序列預測,這在金融和經(jīng)濟中是做出明智的投資決策所必需的。文章來源地址http://www.zghlxwxcb.cn/news/detail-589620.html
到了這里,關于Python探索金融數(shù)據(jù)進行時間序列分析和預測的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!