python?dowhy數(shù)據(jù)估計因果分析功能探索
python dowhy數(shù)據(jù)分析庫
今天給大家分享一個神奇的 python 庫,dowhy
https://github.com/py-why/dowhy
dowhy 是一個開源的 Python 庫,旨在簡化因果推斷的過程,特別是針對那些希望從數(shù)據(jù)中估計因果效應(yīng)的研究者和數(shù)據(jù)科學(xué)家。通過它可以輕松地定義因果模型、識別因果效應(yīng)、估計這些效應(yīng)以及進行健壯性檢驗。它建立在 Pandas、NumPy 和 scikit-learn 等流行庫之上,提供了一個直觀且強大的工具,用于根據(jù)觀測數(shù)據(jù)估計因果效應(yīng)。

什么是因果分析?
因果分析是統(tǒng)計分析的一個分支,旨在理解和量化變量之間的因果關(guān)系。它的目的是回答諸如 “改變一個變量對另一個變量有什么影響?” 之類的問題?;?“哪些因素影響特定結(jié)果?” 與僅僅識別變量之間關(guān)系的相關(guān)性不同,因果分析試圖確定一個變量是否直接影響另一個變量。
從本質(zhì)上講,因果分析不僅僅是描述關(guān)聯(lián)性,還致力于在變量之間建立因果關(guān)系。這在流行病學(xué)、經(jīng)濟學(xué)、社會科學(xué)和醫(yī)療保健等領(lǐng)域至關(guān)重要。
庫的安裝
可以直接通過 pip 進行安裝。
pip install dowhy
加載數(shù)據(jù)集
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 定義因果模型。這涉及指定分析中的變量、治療、結(jié)果和潛在的混雜因素。
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 庫中用于定義因果模型的核心類。這個類的構(gòu)造函數(shù)接受幾個關(guān)鍵參數(shù)來指定模型的不同部分。
data,包含所有相關(guān)數(shù)據(jù)的 DataFrame。這應(yīng)該包括處理變量、結(jié)果變量、共同原因(共變量)、以及(如果有的話)工具變量。
treatment,指定作為處理(干預(yù))的變量名。在因果推斷中,我們關(guān)心的是改變這個變量會如何影響結(jié)果變量。
outcome,指定結(jié)果變量的名稱。這是我們想要了解其因果效應(yīng)的變量。
common_causes,一個包含所有已知共同原因(也稱為共變量或混雜變量)名稱的列表。這些是既影響處理變量又影響結(jié)果變量的變量,必須控制以避免偏差。
instruments,一個包含所有工具變量名稱的列表(如果有的話)。工具變量是與處理變量相關(guān)但只通過它影響結(jié)果變量的變量,常用于處理內(nèi)生性問題。

從圖中可以看出,w0 為混雜變量,它既影響處理變量 treatment 又影響結(jié)果變量 outcome。
估計因果效應(yīng)
現(xiàn)在我們可以估計因果效應(yīng)并確定估計是否正確。為簡單起見,此示例使用線性回歸。
estimate = model.estimate_effect(model.identify_effect(),
method_name="backdoor.linear_regression")
# Plot Slope of line between treamtent and outcome =causal effect這行代碼使用 DoWhy 庫來估計因果效應(yīng)。
首先,model.identify_effect() 方法被調(diào)用來確定從觀測數(shù)據(jù)中是否可以識別出處理對結(jié)果的因果效應(yīng)。這個識別過程通?;谥付ǖ囊蚬麍D,它會查看是否存在任何未控制的后門路徑。
然后,通過指定 method_name="backdoor.linear_regression",它使用線性回歸來估計效應(yīng),同時控制了所有通過識別過程發(fā)現(xiàn)的后門路徑的變量。這意味著它會估計在控制了所有已知的共同原因后,處理對結(jié)果的直接效應(yīng)。
下面,我們來繪制處理變量和結(jié)果變量之間的因果效應(yīng)。在這個圖表中,斜率表示因果效應(yīng)的大小,即處理變量的每個單位變化將導(dǎo)致結(jié)果變量變化多少單位。如果斜率為正,則意味著處理與結(jié)果之間存在正相關(guān);如果斜率為負,則存在負相關(guān)。
dowhy.plotter.plot_causal_effect(estimate, df[data_dict["treatment_name"]], df[data_dict["outcome_name"]])

以上就是python dowhy數(shù)據(jù)估計因果分析功能探索的詳細內(nèi)容,更多關(guān)于python dowhy數(shù)據(jù)分析的資料請關(guān)注腳本之家其它相關(guān)文章!
- python?spotlight庫簡化交互式方法探索數(shù)據(jù)分析
- python Bamboolib庫加速Pandas數(shù)據(jù)分析過程詳解
- python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫
- Python數(shù)據(jù)分析庫PyGWalker的強大交互式功能界面探索
- 精選39道Python數(shù)據(jù)分析面試題提早備戰(zhàn)金三銀四
- Python數(shù)據(jù)分析從入門到進階之分類算法全面教程
- 科學(xué)計算與數(shù)據(jù)分析利器Python數(shù)據(jù)分析庫Scipy使用詳解
- Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解
相關(guān)文章
創(chuàng)建Shapefile文件并寫入數(shù)據(jù)的例子
今天小編就為大家分享一篇創(chuàng)建Shapefile文件并寫入數(shù)據(jù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Python函數(shù)中參數(shù)是傳遞值還是引用詳解
這篇文章主要介紹了深入了解Python函數(shù)中參數(shù)是傳值還是傳引用,在 C/C++ 中,傳值和傳引用是函數(shù)參數(shù)傳遞的兩種方式,在Python中參數(shù)是如何傳遞的,需要的朋友可以參考下2019-07-07
Python中強大的函數(shù)map?filter?reduce使用詳解
Python是一門功能豐富的編程語言,提供了許多內(nèi)置函數(shù),以簡化各種編程任務(wù),在Python中,map(),filter()和reduce()是一組非常有用的函數(shù),它們允許對可迭代對象進行操作,從而實現(xiàn)數(shù)據(jù)轉(zhuǎn)換、篩選和累積等操作,本文將詳細介紹這三個函數(shù),包括它們的基本用法和示例代碼2023-11-11
如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序
在Python中,將代碼轉(zhuǎn)成可以執(zhí)行的程序需要安裝庫pyinstaller,如果是Windows用戶,打開Anaconda?Prompt輸入相對應(yīng)代碼,下面小編給大家詳細講解如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序,感興趣的朋友一起看看吧2024-03-03
Python?中的lambda匿名函數(shù)和三元運算符
這篇文章主要介紹了Python?中的lambda匿名函數(shù)和三元運算符,使用關(guān)鍵字???lambda???定義,所以匿名函數(shù)又稱之為lambda表達式,下面文章更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-04-04

