鏈式插補 (MICE):彌合不完整數據分析的差距

導 讀

數據缺失可能會扭曲結果,降低統計功效,并且在某些情況下,導致估計有偏差,從而破壞從數據中得出的結論的可靠性。

處理缺失數據的傳統方法(例如剔除或均值插補)通常會引入自己的偏差或無法充分利用數據集中的可用信息。

鏈式方程插補 (MICE) 的出現為解決這一普遍問題提供了一種更復雜、更靈活的方法,為研究人員提供了一種可以處理現實世界數據固有的復雜性和不確定性的工具。

數據缺失的存在類似于在隱藏地形的地圖上導航。鏈式方程插補 (MICE) 方法充當指南針,引導研究人員穿過這些模糊的路徑,確保所采取的每一步都是最佳的,得出的每一個結論都盡可能準確。

有需要的朋友關注公眾號【小Z的科研日常】,獲取更多內容

01、MCIE

鏈式方程插補 (MICE) 是一種用于處理數據集中缺失數據的統計技術。這是一種多功能方法,可以以靈活而穩健的方式處理缺失值,使其在社會科學到生物統計學等領域廣受歡迎。以下是詳細概述:

1.1 關鍵原則

① 多重插補:與使用單個估計值填充缺失值的單一插補方法不同,MICE 會生成多重插補。這種方法通過創建幾個不同的合理數據集來填充缺失值,從而承認缺失數據真實值的不確定性。

② 鏈式方程:MICE 通過使用一系列回歸模型在逐個變量的過程中估算缺失數據來進行操作。

每個缺失數據的變量都會有條件地估算到數據集中的其他變量。該過程是“鏈式的”,因為它迭代地循環變量,根據上一步的更新數據更新每一步的插補。

1.2 MICE如何運作?

① 初始化:缺失值最初用占位符值填充,通常是該變量觀測值的平均值或中位數。

② 迭代:對于每個缺失數據的變量,使用其他變量作為預測變量,對觀測值擬合回歸模型。然后根據該模型估算缺失值。依次對每個變量重復此步驟,循環遍歷變量進行多次迭代。

③ 收斂:經過指定次數的迭代后,假定該過程已收斂,這意味著進一步循環變量不會顯著改變插補。

通常,前幾次迭代作為“老化”期被丟棄,并且通過從隨后的迭代中采樣來創建多個估算數據集。

1.3 MICE優點

  • 靈活性:MICE 可以處理不同類型的變量(連續、二元、分類)和不同的缺失數據機制。

  • 穩健性:通過生成多重插補,MICE 提供了一種量化由于缺失數據而導致的不確定性的方法,而這種不確定性在單一插補方法中經常被忽視。

  • 效率:鏈式方程方法允許根據最適合其分布和與其他變量關系的模型來估算每個變量。

1.4 MICE局限性

  • 假設:MICE 假設數據隨機丟失 (MAR),但情況可能并非總是如此。如果數據不是隨機丟失 (MNAR),則插補可能會有偏差。

  • 復雜性:迭代過程以及生成和分析多個數據集的需要可能是計算密集型的,并且需要更復雜的統計分析。

1.5 應用領域

MICE廣泛應用于各個領域,在處理不完整數據集時進行數據分析。它在縱向研究、臨床試驗和調查中特別有用,因為丟失數據是一個常見問題。

通過提供穩健的缺失值輸入方法,MICE 幫助研究人員和分析師充分利用他們的數據,從而得出更準確、更可靠的結論。

1.6 MCIE的起源

MICE 源于更廣泛的多重插補框架,這是魯賓于 1987 年提出的一個概念,旨在通過創建多個插補數據集、單獨分析每個數據集,然后組合結果來解決因缺失數據而造成的不確定性。

MICE 在此基礎上構建,通過在鏈式迭代過程中采用一系列回歸模型來生成這些多重插補。這種方法創新使得能夠以更大的靈活性和準確性解決從健康科學到經濟學等不同領域的各種缺失數據問題。

1.7 MCIE的機制

MICE 的核心是通過迭代過程進行操作,其中每個缺失數據的變量都按順序進行估算,并使用其他變量作為預測變量。

該過程從初步插補階段開始,其中缺失值由初始估計值填充,例如觀測值的平均值或中位數。在連續迭代中,對于每個缺失數據的變量,將回歸模型擬合到觀察到的數據,同時考慮所有其他變量的當前插補。

然后根據該模型的預測分布估算缺失值。這個循環在一系列迭代中重復,使得插補隨著模型調整到反饋循環中的插補值而演變。

1.8 MCIE的優勢與創新

與傳統插補方法相比,MICE 方法具有多種優勢。

首先也是最重要的是它的靈活性:通過為每個變量選擇適當的模型,MICE 可以容納從連續到分類的不同類型和分布的變量。如果數據隨機丟失 (MAR) 的假設成立,這種適應性可以擴展到處理各種丟失模式和機制。

此外,通過生成多重插補,MICE 承認并量化插補過程中固有的不確定性,從而實現更穩健的統計推斷。

02、代碼

為了演示在 Python 中使用鏈式方程插補 (MICE),我們將創建一個包含缺失值的合成數據集,應用 MICE 插補這些值,然后使用指標和圖評估插補質量。

我們將使用該pandas庫來處理數據、numpy生成缺失值、sklearn創建合成數據集和評估指標以及matplotlib繪圖seaborn

我們還將使用IterativeImputerfrom,sklearn.impute因為它實現了類似 MICE 的方法。

import numpy as np
import pandas as pd
from sklearn.datasets import make_regression
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import seaborn as sns# 生成合成數據集
X, y = make_regression(n_samples=1000, n_features=10, noise=0.1, random_state=42)# 轉換為 DataFrame,以便于操作
df = pd.DataFrame(X, columns=[f'Feature_{i}' for i in range(X.shape[1])])
df['Target'] = y# 顯示前幾行
df.head()# I引入缺失值
np.random.seed(42)
df_missing = df.mask(np.random.random(df.shape) < 0.1)# 顯示前幾行以驗證缺失值
df_missing.head()# 初始化 MICE 計算器
mice_imputer = IterativeImputer(max_iter=10, random_state=42)# 擬合和轉換數據集以填補缺失值
df_imputed = mice_imputer.fit_transform(df_missing)# 將擬合數據轉換回 pandas DataFrame
df_imputed = pd.DataFrame(df_imputed, columns=df.columns)
df_imputed.head()# 計算每個特征的 RMSE
rmse = np.sqrt(mean_squared_error(df, df_imputed, multioutput='raw_values'))# 打印每個特征的均方根誤差
print(f'RMSE for each feature: {rmse}')# 選擇要繪制的特征
feature_to_plot = 'Feature_0'# 繪制原始分布圖和處理后的分布圖
plt.figure(figsize=(10, 6))
sns.kdeplot(df[feature_to_plot], label='Original', color='green', linestyle="--")
sns.kdeplot(df_imputed[feature_to_plot], label='Imputed', color='red', linestyle="-")
plt.legend()
plt.title(f'Distribution of Original vs. Imputed Values for {feature_to_plot}')
plt.xlabel('Value')
plt.ylabel('Density')
plt.show()

輸出:

RMSE for each feature: [ 0.24095716  0.22593846  0.21704334  0.15838514  0.25103187  0.299926050.1432319   0.22131897  0.27775888  0.16266519 15.56987127]

此代碼片段提供了從創建具有缺失值的合成數據集到使用 MICE 估算這些值并評估結果的完整演練。

它提供了一個在 Python 中處理缺失數據的實際示例,展示了 MICE 在保留數據集的統計屬性方面的實用性。

03、總結

鏈式方程插補代表了缺失數據處理方面的重大進步,為研究人員和分析師提供了靈活、強大且復雜的工具包。

雖然 MICE 具有一定的復雜性和假設,但它解決了統計分析中的基本挑戰,能夠對不完整的數據進行更明智、更細致的解釋。

隨著數據集規模和復雜性的增長,MICE 等先進插補技術的作用只會變得更加重要,這凸顯了統計科學中持續方法創新和教育的必要性。

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

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

相關文章

機器學習:模型選擇和模型優化

進行數據處理之后&#xff0c;我們得到了x_train和y_train&#xff0c;我們就可以用來進行回歸或分類模型訓練啦~ 一、模型選擇 我們這里可能使用的是回歸模型&#xff08;Regression&#xff09;&#xff0c;值得注意的是&#xff0c;回歸和分類不分家。分類是預測離散值&…

策略的更新、加載與同步

C語言的C庫提供了策略的更新、加載與同步的方法&#xff0c;這里引入多線程&#xff0c;達到區分讀寫任務&#xff08;生產者——消費者 模型&#xff09;的目的。 示例&#xff1a; /*brief check strategy to update, reload, synchronized to read(stoped by SIGINT)author…

Mysql標量子查詢

目錄 子查詢標量子查詢數據準備 子查詢 SQL語句中嵌套select語句&#xff0c;稱為嵌套查詢&#xff0c;又稱子查詢。 SELECT * FROM t1 WHERE column1 ( SELECT column1 FROM t2 ... );子查詢外部的語句可以是insert / update / delete / select 的任何一個&…

git的安裝、使用

文章目錄 安裝gitgit學習網站git初始配置具體配置信息 新建版本庫&#xff08;倉庫&#xff09;git的工作區域和文件狀態工作區域文件狀態git文件提交的基礎指令 git基礎指令1. 版本提交2. 分支創建3. 分支切換4. 分支合并(1) git merge(2) git rebase 5. 在git的提交樹上移動(…

Ps:銳化工具

銳化工具 Sharpen Tool可用于增強圖像局部區域的對比度&#xff0c;從而提高圖像的清晰度和細節&#xff0c;特別適用于提升照片的邊緣定義和紋理細節。 快捷鍵&#xff1a;無 ◆ ◆ ◆ 常用操作方法與技巧 1、如果直接在像素圖像上使用銳化工具&#xff0c;可嘗試使用“漸隱…

怎么優雅地訪問ChatGPT

ChatGPT&#xff0c;這顆璀璨的智能結晶&#xff0c;在2022年歲末之際&#xff0c;由OpenAI實驗室傾力鑄就&#xff0c;猶如夜空中躍動的智慧星辰&#xff0c;點亮了人工智能領域的新紀元。猶如汪洋中的一座燈塔&#xff0c;ChatGPT以其獨特的智慧光輝引人注目&#xff0c;然而…

Linux:kubernetes(k8s)node節點加入master主節點(3)

Linux&#xff1a;kubernetes&#xff08;k8s&#xff09;搭建mater節點&#xff08;kubeadm&#xff0c;kubectl&#xff0c;kubelet&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136415575?spm1001.2014.3001.5502 我在上一章部署好了主節點&…

前端打包部署(黑馬學習筆記)

我們的前端工程開發好了&#xff0c;但是我們需要發布&#xff0c;那么如何發布呢&#xff1f;主要分為2步&#xff1a; 1.前端工程打包 2.通過nginx服務器發布前端工程 前端工程打包 接下來我們先來對前端工程進行打包 我們直接通過VS Code的NPM腳本中提供的build按鈕來完…

從下一代車規MCU厘清存儲器的發展(2)

目錄 1.概述 2.MCU大廠的選擇 2.1 瑞薩自研STT-MRAM 2.2 ST專注PCM 2.3 英飛凌和臺積電聯手RRAM 2.4 NXP如何計劃eNVM 3.小結 1.概述 上篇文章&#xff0c;我們簡述了當前主流的存儲器技術&#xff0c;現在我們來講講各大MCU大廠的技術選擇 2.MCU大廠的選擇 瑞薩日…

redis的RDB和AOF

Redis是一種高性能的鍵值對存儲系統&#xff0c;它支持多種類型的數據結構&#xff0c;如字符串、列表、集合、哈希表、有序集合等。Redis提供了兩種不同的持久化機制來確保數據的安全性&#xff1a;RDB&#xff08;Redis Database&#xff09;和AOF&#xff08;Append Only Fi…

Tomcat布署及優化二-----Mysql和虛擬機

1.Mysql搭Blog 1.1下載安裝包 看一下tomcat狀態 1.2放到指定目錄 cp jpress-v3.2.1.war /usr/local/tomcat/webapps/ cd /usr/local/tomcat/webapps/ 1.3路徑優化 ln -s jpress-v3.2.1 jpress 看jpress權限 1.4生成配置文件 cat >/etc/yum.repos.d/mysql.repo <<E…

掘根寶典之C語言指針詳解

目錄 什么是指針&#xff1f; 與指針相關的運算符 指針類型的意義 指針的大小 初始化 將指針直接指向一個已經存在的變量或內存地址&#xff1a; 使用malloc函數動態分配內存&#xff0c;并將指針指向新分配的內存&#xff1a; 使用calloc函數動態分配內存&#xff0c;并…

Javascript:常量與數據類型

一、前言 介紹完變量之后我們來對常量進行了解一番&#xff0c;關于常量我們需要知道些什么呢&#xff1f; 二、正文 1.常量的基本使用 使用const聲明的變量稱為常量&#xff0c;當某個變量的字面量無需改動的時候就能夠用到常量。 //聲明一個常量 const G 9.8 //輸出這個常量…

您的計算機已被pings勒索病毒感染?恢復您的數據的方法在這里!

導言&#xff1a; 在數字時代&#xff0c;數據是企業和個人生活中不可或缺的一部分。然而&#xff0c;隨著勒索病毒的不斷進化和傳播&#xff0c;我們的數據面臨著前所未有的威脅。其中&#xff0c;.pings 勒索病毒是最新一輪威脅之一&#xff0c;它以其獨特的加密算法和無情的…

leetcode-字符串中的單詞數

434. 字符串中的單詞數 題解&#xff1a; 這個問題可以通過遍歷字符串&#xff0c;當遇到非空格字符時&#xff0c;判斷其前一個字符是否為空格&#xff0c;如果是&#xff0c;則說明這是一個新的單詞的開始&#xff0c;計數器加一。最后返回計數器的值即可。 class Solutio…

【Redis | 第一篇】快速了解Redis

文章目錄 1.快速了解Redis1.1簡介1.2與其他key-value存儲的不同處1.3Redis安裝——Windows環境1.3.1下載redis1.3.2啟動redis1.3.3進入redis客戶端1.3.4修改配置 1.4Redis安裝——Linux環境1.4.1安裝命令1.4.2啟動redis1.4.3進入redis客戶端 1.5配置修改1.6小結 1.快速了解Redi…

MyBatis 學習(七)之 緩存

目錄 1 MyBatis 緩存介紹 2 一級緩存 3 二級緩存 3.1 二級緩存介紹 3.2 二級緩存配置 3.3 二級緩存測試 4 參考文檔 1 MyBatis 緩存介紹 MyBatis 緩存是 MyBatis 中的一個重要特性&#xff0c;用于提高數據庫查詢的性能。MyBatis 提供了一級緩存和二級緩存兩種類型的緩存…

Git與GitHub:解鎖版本控制的魔法盒子

?? 歡迎大家來訪Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭?&#xff5e;?? &#x1f31f;&#x1f31f; 歡迎各位親愛的讀者&#xff0c;感謝你們抽出寶貴的時間來閱讀我的文章。 我是Srlua&#xff0c;在這里我會分享我的知識和經驗。&#x…

cetos7 Docker 安裝 gitlab

一、gitlab 簡單介紹和安裝要求 官方文檔&#xff1a;https://docs.gitlab.cn/jh/install/docker.html 1.1、gitlab 介紹 gitLab 是一個用于代碼倉庫管理系統的開源項目&#xff0c;使用git作為代碼管理工具&#xff0c;并在此基礎上搭建起來的Web服務平臺&#xff0c;通過該平…

(六)Dropout抑制過擬合與超參數的選擇--九五小龐

過擬合 即模型在訓練集上表現的很好&#xff0c;但是在測試集上效果卻很差。也就是說&#xff0c;在已知的數據集合中非常好&#xff0c;再添加一些新數據進來效果就會差很多 欠擬合 即模型在訓練集上表現的效果差&#xff0c;沒有充分利用數據&#xff0c;預測準確率很低&a…