python?dowhy數(shù)據估計因果分析功能探索
python dowhy數(shù)據分析庫
今天給大家分享一個神奇的 python 庫,dowhy
https://github.com/py-why/dowhy
dowhy 是一個開源的 Python 庫,旨在簡化因果推斷的過程,特別是針對那些希望從數(shù)據中估計因果效應的研究者和數(shù)據科學家。通過它可以輕松地定義因果模型、識別因果效應、估計這些效應以及進行健壯性檢驗。它建立在 Pandas、NumPy 和 scikit-learn 等流行庫之上,提供了一個直觀且強大的工具,用于根據觀測數(shù)據估計因果效應。
什么是因果分析?
因果分析是統(tǒng)計分析的一個分支,旨在理解和量化變量之間的因果關系。它的目的是回答諸如 “改變一個變量對另一個變量有什么影響?” 之類的問題?;?“哪些因素影響特定結果?” 與僅僅識別變量之間關系的相關性不同,因果分析試圖確定一個變量是否直接影響另一個變量。
從本質上講,因果分析不僅僅是描述關聯(lián)性,還致力于在變量之間建立因果關系。這在流行病學、經濟學、社會科學和醫(yī)療保健等領域至關重要。
庫的安裝
可以直接通過 pip 進行安裝。
pip install dowhy
加載數(shù)據集
import numpy as np import pandas as pd from dowhy import CausalModel import dowhy.datasets rvar = 1 if np.random.uniform() >0.5 else 0 data_dict = dowhy.datasets.xy_dataset(10000, effect=rvar, sd_error=0.2) df = data_dict['df'] df[["Treatment", "Outcome", "w0"]].head()
建立因果模型
現(xiàn)在你可以使用 DoWhy 定義因果模型。這涉及指定分析中的變量、治療、結果和潛在的混雜因素。
model= CausalModel( data=df, treatment=data_dict["treatment_name"], outcome=data_dict["outcome_name"], common_causes=data_dict["common_causes_names"] ) model.view_model(layout="dot")
CausalModel 是 DoWhy 庫中用于定義因果模型的核心類。這個類的構造函數(shù)接受幾個關鍵參數(shù)來指定模型的不同部分。
data,包含所有相關數(shù)據的 DataFrame。這應該包括處理變量、結果變量、共同原因(共變量)、以及(如果有的話)工具變量。
treatment,指定作為處理(干預)的變量名。在因果推斷中,我們關心的是改變這個變量會如何影響結果變量。
outcome,指定結果變量的名稱。這是我們想要了解其因果效應的變量。
common_causes,一個包含所有已知共同原因(也稱為共變量或混雜變量)名稱的列表。這些是既影響處理變量又影響結果變量的變量,必須控制以避免偏差。
instruments,一個包含所有工具變量名稱的列表(如果有的話)。工具變量是與處理變量相關但只通過它影響結果變量的變量,常用于處理內生性問題。
從圖中可以看出,w0 為混雜變量,它既影響處理變量 treatment 又影響結果變量 outcome。
估計因果效應
現(xiàn)在我們可以估計因果效應并確定估計是否正確。為簡單起見,此示例使用線性回歸。
estimate = model.estimate_effect(model.identify_effect(), method_name="backdoor.linear_regression") # Plot Slope of line between treamtent and outcome =causal effect
這行代碼使用 DoWhy 庫來估計因果效應。
首先,model.identify_effect() 方法被調用來確定從觀測數(shù)據中是否可以識別出處理對結果的因果效應。這個識別過程通?;谥付ǖ囊蚬麍D,它會查看是否存在任何未控制的后門路徑。
然后,通過指定 method_name="backdoor.linear_regression",它使用線性回歸來估計效應,同時控制了所有通過識別過程發(fā)現(xiàn)的后門路徑的變量。這意味著它會估計在控制了所有已知的共同原因后,處理對結果的直接效應。
下面,我們來繪制處理變量和結果變量之間的因果效應。在這個圖表中,斜率表示因果效應的大小,即處理變量的每個單位變化將導致結果變量變化多少單位。如果斜率為正,則意味著處理與結果之間存在正相關;如果斜率為負,則存在負相關。
dowhy.plotter.plot_causal_effect(estimate, df[data_dict["treatment_name"]], df[data_dict["outcome_name"]])
以上就是python dowhy數(shù)據估計因果分析功能探索的詳細內容,更多關于python dowhy數(shù)據分析的資料請關注腳本之家其它相關文章!
- python?spotlight庫簡化交互式方法探索數(shù)據分析
- python Bamboolib庫加速Pandas數(shù)據分析過程詳解
- python一行代碼就能實現(xiàn)數(shù)據分析的pandas-profiling庫
- Python數(shù)據分析庫PyGWalker的強大交互式功能界面探索
- 精選39道Python數(shù)據分析面試題提早備戰(zhàn)金三銀四
- Python數(shù)據分析從入門到進階之分類算法全面教程
- 科學計算與數(shù)據分析利器Python數(shù)據分析庫Scipy使用詳解
- Python數(shù)據分析numpy文本數(shù)據讀取索引切片實例詳解
相關文章
創(chuàng)建Shapefile文件并寫入數(shù)據的例子
今天小編就為大家分享一篇創(chuàng)建Shapefile文件并寫入數(shù)據的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Python函數(shù)中參數(shù)是傳遞值還是引用詳解
這篇文章主要介紹了深入了解Python函數(shù)中參數(shù)是傳值還是傳引用,在 C/C++ 中,傳值和傳引用是函數(shù)參數(shù)傳遞的兩種方式,在Python中參數(shù)是如何傳遞的,需要的朋友可以參考下2019-07-07Python中強大的函數(shù)map?filter?reduce使用詳解
Python是一門功能豐富的編程語言,提供了許多內置函數(shù),以簡化各種編程任務,在Python中,map(),filter()和reduce()是一組非常有用的函數(shù),它們允許對可迭代對象進行操作,從而實現(xiàn)數(shù)據轉換、篩選和累積等操作,本文將詳細介紹這三個函數(shù),包括它們的基本用法和示例代碼2023-11-11Python?中的lambda匿名函數(shù)和三元運算符
這篇文章主要介紹了Python?中的lambda匿名函數(shù)和三元運算符,使用關鍵字???lambda???定義,所以匿名函數(shù)又稱之為lambda表達式,下面文章更多相關內容需要的小伙伴可以參考一下2022-04-04