【python深度學習】Day 56 時序數據的檢驗

知識點:
  1. 假設檢驗基礎知識
    1. 原假設與備擇假設
    2. P值、統計量、顯著水平、置信區間
  2. 白噪聲
    1. 白噪聲的定義
    2. 自相關性檢驗:ACF檢驗和Ljung-Box 檢驗
    3. 偏自相關性檢驗:PACF檢驗
  3. 平穩性
    1. 平穩性的定義
    2. 單位根檢驗
  4. 季節性檢驗
    1. ACF檢驗
    2. 序列分解:趨勢+季節性+殘差

記憶口訣:p越小,落在置信區間外,越拒絕原假設。

時序部分需要鋪墊的知識非常多,相信這次應該說清楚了假設檢驗相關的基礎知識。

作業:自行構造數據集,來檢查是否符合這個要求。

時間數據的檢驗流程,如下

一、假設檢驗

統計學中,假設檢驗:證明一件事,不直接去證明它‘是’,而先假設它‘不是’,然后用證據去推翻這個‘不是’的假設。

1.原假設和備擇假設

根據序列預測對數據的要求,先進行檢驗,確定后續選擇什么操作。

2 P值與統計量

p值:證明統計量是否有價值的關鍵指標

置信區間:

-落在置信區間內 = 我們觀測到的現象很可能是在 原假設為真的情況下,純屬巧合發生的= 接受原假設

- 落在置信區間外 = 備擇假設證據確鑿,不是巧合

二、白噪聲

1.定義

一個完全隨機的序列(其特點是具有不可預測性)

白噪聲滿足以下條件:

(1)均值為0

(2)方差恒定

(3)自相關性為0(即過去的值對未來的值沒有影響)

在結構化數據集中預測(樣本獨立無關),如果數據本身就沒價值,比如特征和樣本毫無關系,雖然生成一些隨機數作為特征,再隨機生成一些數作標簽后,可以訓練,但是模型注定也學不到什么東西。

時序預測中,要求會更加苛刻,自己制造一個隨機的序列,然后讓模型來學習,這注定也是不可能實現的。也就是說數據本身要具備可預測性

2.判斷是否為白噪聲的方法

(1)ACF 檢驗

??????????ACF 假設的是在滯后 k 階上,序列的自相關系數為 0

(2)PACF檢驗

????????PACF假設:k 階偏自相關系數為 0,這句話的意思是控制了中間所有滯后項(y (t-1), y (t-2), ..., y (t-k+1))的影響后,y (t) 與 y (t-k) 之間無直接線性關聯

- ACF (自相關):衡量 y(t) 和 y(t-k) 之間的總體相關性,包含了所有中間時刻(t-1, t-2, …)的間接影響。

- PACF (偏自相關):衡量 y(t) 和 y(t-k) 之間的直接相關性,剔除了所有中間時刻的干擾。

(3)Ljung-Box檢驗

????????評估整個數據(比如前10個或前20個滯后項)的整體表現

三、平穩性

1.定義

一組數據的均值,方差不會隨時間改變而改變

2.判斷是否具有平穩性的方法——ADF檢驗

ADF檢驗的兩個假設和判斷規則:

原假設 (H?): 序列是非平穩的(存在單位根)。

備擇假設 (H?): 序列是平穩的。

判斷規則: 我們主要看輸出的 p-value。

? - 如果 p-value < 0.05:我們有充分的理由拒絕原假設,采納備擇假設,即認為序列是平穩的。

? - 如果 p-value ≥ 0.05:我們無法拒絕原假設,即認為序列是非平穩的。

三、季節性

1.定義

時間序列中,以固定的、已知的頻率重復出現的模式或周期性波動

季節性是數據中最強大、最明顯的預測信號之一。如果一個模型不能識別和利用季節性,它的預測結果將會出現系統性的、周期性的巨大誤差。

四、代碼實戰

1.生成隨機序列

import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
# 中文顯示設置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 設置中文字體
plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示為方塊的問題# --- 1. 生成隨機序列數據 ---# 為了讓每次運行的結果都一樣,設置一個隨機種子(可選)
np.random.seed(42)# 定義序列的長度
num_points = 200# 生成一個包含 200 個點的隨機序列
# np.random.randn() 從標準正態分布(均值為0,方差為1)中抽取隨機樣本
random_sequence = np.random.randn(num_points)print("生成的前10個數據點:")
print(random_sequence[:10])# --- 2. 可視化序列 ---# 設置圖形大小
plt.figure(figsize=(12, 6))# 繪制線圖
plt.plot(random_sequence, label='Random Sequence (White Noise)')# 添加標題和標簽
plt.title('Visualization of a Randomly Generated Sequence', fontsize=16)
plt.xlabel('Time Step (時間步)', fontsize=12)
plt.ylabel('Value (值)', fontsize=12)# 添加一條水平線,表示序列的均值(接近于0)
plt.axhline(y=0, color='r', linestyle='--', label='Mean (均值 ≈ 0)')# 顯示網格和圖例
plt.grid(True, linestyle='--', alpha=0.6)
plt.legend()# 顯示圖形
plt.show()

2.繪制ACF檢驗圖

from statsmodels.graphics.tsaplots import plot_acf 
print("--- 開始檢驗白噪聲屬性 ---")# 檢驗 1: 均值是否接近 0
mean = np.mean(random_sequence)
print(f"1. 序列的均值: {mean:.4f}")
if -0.1 < mean < 0.1:print("   (結論: 均值非常接近0,滿足條件。)\n")
else:print("   (結論: 均值偏離0較遠。)\n")# 檢驗 2: 方差是否恒定(且接近理論值1)
# 對于我們生成的數據,方差恒定是與生俱來的。我們主要檢查其值。
variance = np.var(random_sequence)
print(f"2. 序列的方差: {variance:.4f}")
if 0.8 < variance < 1.2:print("   (結論: 方差接近于1,滿足條件。np.random.randn理論方差為1)\n")
else:print("   (結論: 方差偏離1較遠。)\n")# 檢驗 3: 自相關性是否為 0
# 這是最核心的檢驗。我們通過繪制ACF圖來完成。
print("3. 檢驗自相關性 (使用ACF圖):")
print("   - ACF圖展示了序列與它過去值之間的相關性。")
print("   - 對于白噪聲,只有lag=0時相關性為1,其他所有lag的相關性都應在藍色置信區間內(統計上不顯著)。")# 創建一個新的圖形來繪制ACF圖
fig, ax = plt.subplots(figsize=(12, 5))
plot_acf(random_sequence, lags=30, ax=ax) # 我們查看前30個滯后的相關性
ax.set_title('序列的自相關函數圖 (ACF Plot)')
ax.set_xlabel('Lag (滯后階數)')
ax.set_ylabel('Autocorrelation (自相關系數)')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()

3.繪制PACF檢驗圖

from statsmodels.graphics.tsaplots import plot_pacf # 引入PACF圖
# --- 繪制PACF圖 ---
fig, ax = plt.subplots(figsize=(12, 5))
plot_pacf(random_sequence, lags=30, ax=ax)
ax.set_title('序列的偏自相關函數圖 (PACF Plot)')
ax.set_xlabel('Lag (滯后階數)')
ax.set_ylabel('Partial Autocorrelation')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()

4.繪制Ljung-Box檢驗圖

import numpy as np
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
# 引入Ljung-Box檢驗的函數
from statsmodels.stats.diagnostic import acorr_ljungbox # --- 您的原始代碼部分 ---
np.random.seed(42)
num_points = 200
random_sequence = np.random.randn(num_points)# --- 白噪聲屬性檢驗---
mean = np.mean(random_sequence)
variance = np.var(random_sequence)
print(f"1. 序列的均值: {mean:.4f}")
print(f"2. 序列的方差: {variance:.4f}\n")
print("3. 檢驗自相關性 (使用ACF圖)...")
fig, ax = plt.subplots(figsize=(12, 5))
plot_acf(random_sequence, lags=30, ax=ax)
ax.set_title('序列的自相關函數圖 (ACF Plot)')
plt.show()# --- 新增:使用 Ljung-Box 檢驗進行嚴格的白噪聲檢驗 ---
print("\n" + "="*50)
print("4. 進行嚴格的白噪聲檢驗 (Ljung-Box Test)")
print("="*50)
print("   - 原假設(H?): 序列是白噪聲。")
print("   - 判斷標準: 如果 p-value > 0.05,則接受原假設,認為序列是白噪聲。")# 執行Ljung-Box檢驗
# 我們通常會檢查一系列的滯后項,比如前10、20、30個
# 函數返回一個包含統計量和p值的DataFrame
ljung_box_result = acorr_ljungbox(random_sequence, lags=[10, 20, 30], return_df=True)print("\nLjung-Box檢驗結果:")
print(ljung_box_result)# --- 結論解釋 ---
print("\n--- 檢驗結論 ---")
# 我們可以檢查最后一個(最嚴格的)p值
# .iloc[-1] 獲取最后一行, .loc['lb_pvalue'] 獲取p值
last_p_value = ljung_box_result.iloc[-1]['lb_pvalue']if last_p_value < 0.05:print(f"在滯后30階時,p-value ({last_p_value:.4f}) 小于 0.05。")print("結論:我們拒絕原假設,該序列不是白噪聲。")
else:print(f"在滯后30階時,p-value ({last_p_value:.4f}) 大于 0.05。")print("結論:我們無法拒絕原假設,該序列是白噪聲。")

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

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

相關文章

搭建網站時用到的技術

jQuery AJAX FLASK框架 要再Python的虛擬環境下部署 接下來創建項目文件夾 /data/demo 進入demo目錄中&#xff0c;創建虛擬環境 ??激活虛擬環境后&#xff0c;所有操作都基于創建時使用的 Python 版本?? virtualenv venv 成功會生成一個venv文件夾&#xff0c; 接…

Docker知識點匯總——AI教你學Docker

Docker & Docker Compose 全面知識點梳理 一、Docker 基礎知識 1.1 Docker 概念 什么是容器、鏡像、倉庫、Docker 引擎容器與虛擬機的區別Docker 的應用場景與優勢 1.2 Docker 安裝與配置 各操作系統&#xff08;Linux、Windows、macOS&#xff09;上的安裝方法配置加…

Agent輕松通-P1:什么是Agent?

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄 1 引言2 基礎概念3 Agent的挑戰3.1 復雜度帶來的…

Grafana MySQL監控大盤指標圖趨勢不連續分析

問題現象 通過benchmarksql對MySQL數據庫做壓測完發現Grafana關于該數據庫的監控圖趨勢不連續&#xff0c;監控數據異常。 說明&#xff1a;Prometheusmysqlexpoter都通過容器運行 日志分析 檢查了其他數據庫節點跟主機節點趨勢圖均正常&#xff0c;排除 Prometheus 的問題&a…

Python實例題:基于區塊鏈的去中心化應用平臺(區塊鏈、智能合約)

目錄 Python實例題 題目 問題描述 解題思路 關鍵代碼框架 難點分析 擴展方向 Python實例題 題目 基于區塊鏈的去中心化應用平臺&#xff08;區塊鏈、智能合約&#xff09; 問題描述 開發一個基于區塊鏈的去中心化應用平臺&#xff0c;包含以下功能&#xff1a; 區塊…

接口請求重復觸發問題的排查流程:iOS抓包實戰中的工具協作

有時候&#xff0c;Bug 并不體現在程序錯誤上&#xff0c;而是行為偏差。在一次常規功能測試中&#xff0c;我們發現移動端某個提交請求被觸發了兩次&#xff0c;雖然后端做了冪等處理&#xff0c;但頻繁請求仍可能帶來性能問題、錯誤日志膨脹、以及潛在副作用。 這類問題常被…

oracle 表空間與實例妙用,解決業務存儲與權限處理難題

oracle 表空間與實例妙用&#xff0c;解決業務存儲與權限處理難題 一、方案背景 在同一個研發數倉中&#xff0c;現使用 Oracle 數據庫存儲生產和質量的數據。為了滿足業務發展需求&#xff0c;需要新增財務數據的存儲&#xff0c;同時確保不影響現有的生產和質量數據。本方案…

迅為RK3576開發板NPU環境搭建和使用rknn-toolkit2功能演示模型轉換

開發板采用核心板底板結構&#xff0c;在我們的資料里提供了底板的原理圖工程以及PCB工程&#xff0c;可以實現真正意義上的裁剪、定制屬于自己的產品&#xff0c;滿足更多應用場合。 迅為針對RK3576開發板整理出了相應的開發流程以及開發中需要用到的資料&#xff0c;并進行詳…

如何在 Python 中連接 Elasticsearch 并使用 Qwen3 來實現 RAG

今天的這篇文章是 “在本地電腦中部署阿里 Qwen3 大模型及連接到 Elasticsearch” 的續篇。我們接著上次的文章&#xff0c;繼續探索如何使用 Qwen3 來實現 RAG。在本練習中&#xff0c;我們使用 Elastic Stack 9.0.1 版本。 創建 Elasticsearch API key 我們按照如下的步驟來…

Domain 層完全指南(面向 iOS 開發者)

目錄 為什么需要 Domain 層清晰的三層架構核心概念&#xff1a;Entity / Value Object / Use Case / RepositorySwift 代碼實戰測試策略在舊項目中落地的步驟結語 1 為什么需要 Domain 層 在傳統 MVC / MVVM 中&#xff0c;我們往往把業務規則寫進 ViewController 或 ViewMod…

華為OD機試_2025 B卷_矩形相交的面積(Python,100分)(附詳細解題思路)

題目描述 給出3組點坐標(x, y, w, h)&#xff0c;-1000<x,y<1000&#xff0c;w,h為正整數。 (x, y, w, h)表示平面直角坐標系中的一個矩形&#xff1a; x, y為矩形左上角坐標點&#xff0c;w, h向右w&#xff0c;向下h。 (x, y, w, h)表示x軸(x, xw)和y軸(y, y-h)圍成…

17、Rocket MQ快速實戰以及核?概念詳解

? 、MQ簡介 MQ&#xff1a;MessageQueue&#xff0c;消息隊列。是在互聯?中使??常?泛的—系列服務中間件。 這個詞可以分兩個部分來看&#xff0c; —是Message&#xff1a;消息。消息是在不同進程之間傳遞的數據。這些進程可以部署在同—臺機器上&#xff0c;也可以 分…

設計模式之手寫策略模式實現動態支付(Java實現)

首先&#xff0c;定義一個接口類 import java.util.Map;public interface PayInterface {/*** 支付方法* param amount 支付金額* param paymentInfo 支付信息&#xff08;如卡號、密碼等&#xff09;* return 支付結果*/boolean pay(double amount, Map<String, String>…

Spring Boot 虛擬線程 vs WebFlux:誰更勝一籌?

Spring Boot 作為構建現代 Java 應用程序的強大框架,為開發者提供了多種處理并發和可擴展性的解決方案。其中最受關注的兩種方案是 Spring Boot 虛擬線程(Java 21 引入)和 Spring Boot WebFlux(基于響應式編程)。雖然兩者都致力于優化資源利用率和提升高并發處理能力,但在…

淘寶商品搜索接口|關鍵字獲取商品列表API接入指南

在電商領域&#xff0c;淘寶作為中國最大的電子商務平臺之一&#xff0c;擁有海量的商品資源。對于開發者而言&#xff0c;通過淘寶開放平臺提供的 API 接口&#xff0c;能夠實現與淘寶平臺的深度整合&#xff0c;其中關鍵字搜索商品 API 接口尤為重要。它允許開發者根據特定的…

Centos 離線部署(MQTT)EMOX腳本并設置開機自啟

文件結構 install_emqx.sh #!/bin/bash # Filename: install_emqx.sh # Description: EMQX離線一鍵部署腳本 (針對特殊目錄結構)# 檢查root權限 if [[ $EUID -ne 0 ]]; thenecho "請使用root權限運行此腳本&#xff01;" exit 1 fi# 定義依賴包和安裝路徑 DEP_RPM&…

機器學習基礎:從概念到應用的全面解析

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;10年以上C/C, C#, Java等多種編程語言開發經驗&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開…

【機器學習1】線性回歸與邏輯回歸

?邏輯回歸與線性回歸的主要區別在于理論基礎、應用場景和數學模型。 1 線性回歸 1.1 理論基礎 線性回歸主要用于建模自變量與連續性因變量之間關系的統計方法&#xff0c;試圖利用一條線來擬合自變量與因變量之間的線性關系。 1.2 應用場景 從應用場景來說&#xff0c;適…

小程序 頂部欄標題欄 下拉滾動 漸顯白色背景

![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/3164fd0e6d6848efaa1e87e02c35179e.png 下拉 100px 后 變成漸變成白色 顯示原理 <wd-navbar fixed safeAreaInsetTop :bordered"false":custom-style"background-color: rgba(255, 255, 255, op…

Java底層原理:深入理解類加載機制與反射

一、Java類加載機制 Java類加載機制是Java運行時環境的重要組成部分&#xff0c;它負責將字節碼文件加載到JVM內存中&#xff0c;并將其轉換為可執行的類。類加載機制的實現涉及類加載器&#xff08;ClassLoader&#xff09;、類加載過程和類加載器的層次結構。 &#xff08;…