標籤:

[Python]因果檢驗工具

安裝過程

如果你已經安裝了 pip,那麼你只需運行以下代碼即可。

因果推理

causality.inference 模塊中將會包含多種推斷變數之間因果關係的演算法。但是到2016年1月23日為止,我只實現了 Pearl(2000) 提出的 IC* 演算法。

此時,我們已將變數的關係圖儲存到 graph中,在這個圖中每個變數表示一個節點,每條邊則表示給定搜索路徑中其他變數的情況下,相鄰節點之間的統計相關性。如果兩個變數之間存在統計相關性,那麼箭頭方向處的變數將被存在 arrow 中。如果兩個變數之間同時滿足真正的因果關係,此時 marked=True。如果我們列印出模型的擬合結果,我們可以很明顯的看出變數之間存在的關係:

從上述結果中我們可以看出,x2與x4,x3與x4,x4與x5之間存在統計相關性,此外我們還可以看出 x4到x5 之間存在真正的因果關係。這個結果與 Pearl(2000) 文章中的圖 2.3(d) 相吻合。

非參數效應估計

causality.nonparametric 模塊是一個利用觀測數據集對因果分布進行非參數化估計的工具。你可以提供一個變數的容許集用來控制,它用來度量給定原因時一個效應的因果反應分布,或給定原因時這個效應的期望值。

我最近已經添加了調整功能,你可以通過調整有向圖中變數X的父節點來估計一組變數Y和一組變數X之間的因果效應。

此時,你可以利用以下代碼來觀察調整結果:

如果我們沒有對變數 x1 進行調整,由於 x2,x1,x3 之間存在一個搜索路徑,那麼我們將會錯誤地認為 x2 是 x3 的因果原因。

其他注意事項

這個項目還處於早期階段,程序的運行時間較長。未來的一段時間內,我將會不斷對其進行優化,其中主要包括:

  • 實現快速互信息計算,O(NlogN)
  • 加快整合控制變數的九三過程
  • 增加用戶提供的圖形,並找出容許集
  • 確定變數間因果效應的捷徑方法

Pearl, Judea. Causality. Cambridge University Press, (2000)

推薦閱讀:

Python 爬蟲實戰(一):使用 requests 和 BeautifulSoup
ELEMENTARY.01.Say Hi
【精心解讀】關於Jupyter Notebook的28個技巧
理解 Python 裝飾器看這一篇就夠了
爬豆瓣電影名的小案例(附視頻操作)

TAG:Python |