Python打卡訓練營Day58

DAY 58 經典時序預測模型2

知識點回顧:

  1. 時序建模的流程
  2. 時序任務經典單變量數據集
  3. ARIMA(p,d,q)模型實戰
  4. SARIMA摘要圖的理解
  5. 處理不平穩的2種差分
    1. n階差分---處理趨勢
    2. 季節性差分---處理季節性

建立一個ARIMA模型,通常遵循以下步驟:

1. 數據可視化:觀察原始時間序列圖,判斷是否存在趨勢或季節性。

2. 平穩性檢驗:

? ? - 對原始序列進行ADF檢驗。

? ? - 如果p值 > 0.05,說明序列非平穩,需要進行差分。

3. 確定差分次數 d:

? ? - 進行一階差分,然后再次進行ADF檢驗。

? ? - 如果平穩了,則 d=1。否則,繼續差分,直到平穩。

4. 確定 p 和 q:

? ? - 對差分后的平穩序列繪制ACF和PACF圖。

? ? - 根據昨天學習的規則(PACF定p,ACF定q)來選擇p和q的值。

5. 建立并訓練ARIMA(p, d, q)模型。

  1. 模型評估與診斷:查看模型的摘要信息,檢查殘差是否為白噪聲。
    1. AIC用來對比不同模型選擇,越小越好
    2. 關注系數是否顯著,通過p值或者置信區間均可
    3. 殘差的白噪聲檢驗+正態分布檢驗

7. 進行預測(需要還原回差分前的結構)

作業:對太陽黑子數量數據集用arima完成流程

#太陽黑子數量數據集from statsmodels.datasets import sunspots
df_sun = sunspots.load_pandas().data['SUNACTIVITY']
df_sun.head()df_sun.plot(figsize=(12, 6))#平穩性檢驗
# 引入ADF檢驗的函數
from statsmodels.tsa.stattools import adfuller # --- 新增:使用ADF檢驗來判斷平穩性 ---print("開始進行ADF平穩性檢驗...")# 執行ADF檢驗
# adfuller()函數會返回一個包含多個結果的元組
adf_result = adfuller(df_sun)# 提取并展示主要結果
adf_statistic = adf_result[0]
p_value = adf_result[1]
critical_values = adf_result[4]print(f"ADF統計量 (ADF Statistic): {adf_statistic:.4f}")
print(f"p值 (p-value): {p_value:.4f}")
print("臨界值 (Critical Values):")
for key, value in critical_values.items():print(f'    {key}: {value:.4f}')print("\n--- 檢驗結論 ---")
# 根據p值進行判斷
if p_value < 0.05:print(f"p-value ({p_value:.4f}) 小于 0.05,我們強烈拒絕原假設(H?)。")print("結論:該序列是平穩的 (Stationary)。")
else:print(f"p-value ({p_value:.4f}) 大于或等于 0.05,我們無法拒絕原假設(H?)。")print("結論:該序列是非平穩的 (Non-stationary)。")# 也可以通過比較ADF統計量和臨界值來判斷,結論是一致的
if adf_statistic < critical_values['5%']:print("\n補充判斷:ADF統計量小于5%的臨界值,同樣表明序列是平穩的。")
#--- 檢驗結論 ---
# p-value (0.0531) 大于或等于 0.05,我們無法拒絕原假設(H?)。
# 結論:該序列是非平穩的 (Non-stationary)。import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
# 中文顯示設置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 設置中文字體
plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示為方塊的問題
#差分
df_sun_diff = df_sun.diff().dropna()
plt.plot(df_sun_diff)
plt.title('一階差分后的數據')
plt.show()
# 一階差分后的ADF檢驗
adf_result_diff = adfuller(df_sun_diff)
print(f'一階差分后數據的ADF檢驗結果:')
print(f'  ADF Statistic: {adf_result_diff[0]}')
print(f'  p-value: {adf_result_diff[1]}') # p-value會變得非常小,說明數據變平穩了
# d = 1# 繪制ACF和PACF圖
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf
plot_pacf(df_sun_diff, lags=44)
plt.title('差分后數據的PACF')
plt.show()plot_acf(df_sun_diff, lags=44)
plt.title('差分后數據的ACF')
plt.show() #p 8 ; q 1 or 0from statsmodels.tsa.arima.model import ARIMA
import warnings
warnings.filterwarnings("ignore")
# 建立ARIMA模型
model = ARIMA(df_sun_diff, order=(8, 1, 0))
arima_result = model.fit()# 打印模型摘要
print(arima_result.summary())# 讓我們預測未來33年
forecast_steps = 33
forecast = arima_result.get_forecast(steps=forecast_steps)
pred_mean = forecast.predicted_mean
conf_int = forecast.conf_int()# 繪制結果
plt.figure(figsize=(14, 7))
plt.plot(df_sun_diff, label='原始數據')
# 繪制模型在歷史數據上的擬合值
plt.plot(arima_result.fittedvalues, color='orange', label='模型擬合值')
# 繪制未來預測值
plt.plot(pred_mean, color='red', label='未來預測值')
# 繪制置信區間
plt.fill_between(conf_int.index,conf_int.iloc[:, 0],conf_int.iloc[:, 1], color='pink', alpha=0.5, label='95%置信區間')
plt.title('ARIMA(8,1,0)模型擬合與預測')
plt.legend()
plt.show()
#核心看點:AIC 和 BIC。當你在比較不同模型時(比如 ARIMA(2,0,0) vs ARIMA(1,0,1)),這兩個值是選擇“最佳”模型的重要依據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89013.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89013.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89013.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

003大模型基礎知識

大模型分類&#xff1a; 技術架構&#xff1a; Encoder Only Bert Decoder Only 著名的大模型都是 Encoder - Decoder T5 是否開源&#xff1a; 開源陣營&#xff1a; Llama DeepSeek Qwen 閉源陣營&#xff1a; ChatGpt Gemini Claude 語言模型發展階段&am…

JVM監控及診斷工具-GUI篇

19.1. 工具概述 使用上一章命令行工具或組合能幫您獲取目標Java應用性能相關的基礎信息&#xff0c;但它們存在下列局限&#xff1a; 1&#xff0e;無法獲取方法級別的分析數據&#xff0c;如方法間的調用關系、各方法的調用次數和調用時間等&#xff08;這對定位應用性能瓶頸…

適用于Windows系統截圖工具

1.Faststone Capture 官網網址&#xff1a;https://faststone-capture.com/ 網上很多注冊碼&#xff1a;https://www.cnblogs.com/LiuYanYGZ/p/16839503.html 2.Snipaste 官網網址&#xff1a;https://apps.microsoft.com/detail/9p1wxpkb68kx?launchtrue&modefull&…

區塊鏈的三種共識機制——PoW、PoS和DPoS原理

區塊鏈的核心是去中心化網絡的信任機制&#xff0c;而共識機制是實現這一目標的關鍵。共識機制可分為兩個階段&#xff1a;&#xff08;1&#xff09;提出共識內容&#xff08;2&#xff09;對內容達成共識&#xff08;遵循最長鏈原則&#xff09;。三種主流的共識機制主要有工…

React 和 Vue的自定義Hooks是如何實現的,如何創建自定義鉤子

目的&#xff1a;將公共邏輯提取出來&#xff0c;類似于 mixin&#xff0c;解決了mixin的設計缺陷。 React 和 Vue 自定義 Hooks 實現對比 React 自定義 Hooks React 的自定義 Hooks 是 JavaScript 函數&#xff0c;它們以 use 開頭&#xff0c;可以調用其他 Hooks。 基本規則 …

構建高效事件驅動架構:AWS S3與SQS集成實踐指南

引言 在現代云架構中,事件驅動的設計模式越來越受到開發者的青睞。AWS S3與SQS的集成為我們提供了一個強大的事件處理機制,能夠在文件上傳、刪除或修改時自動觸發后續的業務邏輯。本文將詳細介紹如何配置S3事件通知到SQS隊列,并分享實際項目中的最佳實踐。 架構概述 S3事…

C++ -- STL-- List

////// 歡迎來到 aramae 的博客&#xff0c;愿 Bug 遠離&#xff0c;好運常伴&#xff01; ////// 博主的Gitee地址&#xff1a;阿拉美 (aramae) - Gitee.com 時代不會辜負長期主義者&#xff0c;愿每一個努力的人都能達到理想的彼岸。1. list的介紹及使用 2. list的深度剖…

rt-thread 線程間同步方法詳解

rt-thread 線程間同步方法詳解一、什么是線程間同步線程同步的必要性線程同步的挑戰二、同步方式1、信號量信號量工作機制信號量的管理方式信號量的創建與刪除信號量的獲取與釋放信號量的典型應用場景信號量的注意事項2、互斥量互斥量工作機制互斥量的特性互斥量的操作接口互斥…

Spring Boot + Vue2 實現騰訊云 COS 文件上傳:從零搭建分片上傳系統

目錄 一、項目目標 二、騰訊云 COS 基本配置 1. 創建存儲桶 2. 獲取 API 密鑰 3. 設置跨域規則&#xff08;CORS&#xff09; 三、后端&#xff08;Spring Boot&#xff09;實現 1. 依賴配置 2. 配置騰訊云 COS&#xff08;application.yml&#xff09; 3. 初始化 COS…

使用 Java 獲取 PDF 頁面信息(頁數、尺寸、旋轉角度、方向、標簽與邊框)

目錄 引言 一、安裝和引入PDF處理庫 二、獲取 PDF 頁數 三、獲取頁面尺寸&#xff08;寬高&#xff09; 四、獲取頁面旋轉角度 五、判斷頁面方向&#xff08;橫向 / 縱向&#xff09; 六、獲取頁面標簽 七、獲取頁面邊框信息 八、總結 引言 了解 PDF 頁面屬性是我們在…

基于 AI 的大前端安全態勢感知與應急響應體系建設

大前端應用&#xff08;Web、APP、小程序&#xff09;作為用戶交互的入口&#xff0c;面臨日益復雜的安全威脅&#xff1a;從傳統的 XSS 攻擊、CSRF 偽造&#xff0c;到新型的供應鏈投毒、AI 驅動的自動化爬蟲&#xff0c;再到針對業務邏輯的欺詐攻擊&#xff08;如薅羊毛、賬號…

Java 與 MySQL 性能優化:MySQL全文檢索查詢優化實踐

文章目錄一、引言二、InnoDB引擎下的全文檢索功能詳解2.1 全文索引的基本概念與原理2.2 全文索引的創建與管理2.3 全文檢索的三種查詢模式2.4 中文全文檢索的挑戰與解決方案三、CMS 場景下的全文檢索性能瓶頸分析3.1 索引構建與維護開銷3.2 查詢性能瓶頸3.3 鎖機制與并發性能問…

應用軟件格式滲透 利用word去滲透(MS10-087)

用到的靶機為&#xff1a;WinXP漏洞原理&#xff1a;一、漏洞觸發機制與核心組件 漏洞根源&#xff1a;RTF文件解析邏輯缺陷 觸發組件&#xff1a;Microsoft Word的RTF&#xff08;Rich Text Format&#xff09;解析引擎&#xff0c;具體涉及 mso.dll 模塊中的 路徑規范化函數&…

解密AWS VPC路由表:顯式關聯與隱式關聯,誰決定了網絡出口?

大家好&#xff0c;今天我們來聊一個在 AWS 云計算世界里既基礎又關鍵的話題&#xff1a;VPC 路由表。 很多剛接觸 AWS 的朋友&#xff0c;在配置網絡時可能會遇到這樣的困惑&#xff1a;為什么我的 EC2 實例無法訪問互聯網&#xff1f;為什么某些子網的網絡策略和其他子網不一…

LeetCode題解---<203.移除鏈表元素>

文章目錄題目代碼及注釋關鍵點題目 給你一個鏈表的頭節點 head 和一個整數 val &#xff0c;請你刪除鏈表中所有滿足 Node.val val 的節點&#xff0c;并返回 新的頭節點 。 示例 1&#xff1a; 輸入&#xff1a;head [1,2,6,3,4,5,6], val 6 輸出&#xff1a;[1,2,3,4,…

【JavaScript高級】構造函數、原型鏈與數據處理

目錄構造函數和原型構造函數實例成員和靜態成員構造函數的問題構造函數原型 prototype對象原型 \_\_proto\_\_constructor 構造函數構造函數、實例、原型對象三者之間的關系原型鏈JavaScript 的成員查找機制&#xff08;規則&#xff09;原型對象的this指向擴展內置對象繼承cal…

項目進度與預算脫節,如何進行同步管理

項目進度與預算脫節會導致資源浪費、成本超支和項目延期。進行同步管理的方法包括&#xff1a;建立統一的項目進度預算管理體系、實施實時監控與反饋機制、采用項目管理工具輔助同步管理。尤其是實施實時監控與反饋機制&#xff0c;通過持續監測進度與預算的匹配情況&#xff0…

TCP半關閉

理解TCP半關閉&#xff1a;像水管一樣的網絡連接控制 從全關閉到半關閉&#xff1a;為什么需要這種機制&#xff1f; 想象你和朋友正在通電話討論一個重要項目&#xff1a; 全關閉&#xff1a;就像突然掛斷電話&#xff0c;雙方都無法再說話半關閉&#xff1a;你說"我說完…

衡石科技技術手冊--儀表盤過濾控件詳解

過濾控件說明 過濾控件 的定義 過濾控件用于在儀表盤中過濾圖表數據&#xff0c;分為儀表盤內過濾控件和全局過濾控件。 過濾控件結構說明 字段類型描述uidSTRING過濾控件唯一識別 idappIdLONG過濾控件所屬的應用 iddataAppIdLONG字段來源是數據包時的數據包 iddashboar…

ASP.NET Core中數據綁定原理實現詳解

在ASP.NET Core 中&#xff0c;數據綁定是將 HTTP 請求中的數據&#xff08;如表單、查詢字符串、請求體等&#xff09;映射到控制器動作方法參數或模型對象的過程。以下將從原理、核心組件、執行流程及關鍵機制等方面詳細解析其實現邏輯。 一、數據綁定的核心原理與組件 1. 數…