1. 程式人生 > >計演算法 -- 從資料中自動實現尋找因果關係的演算法過程

計演算法 -- 從資料中自動實現尋找因果關係的演算法過程

1. 為什麼會提出因果關係計演算法

在文章的開始,我們來討論一個話題:哪些藥一起服用會產生不良反應?

針對這個問題,傳統的觀察法和分析法做法可能如下:

  • 用隨機試驗來測試藥品,但是這種方法並不能給我們提供多少資訊,因為這些試驗往往會避免讓參與者同時服用多種藥物
  • 用模擬實驗來預測藥物之間的相互作用,但是這樣的實驗需要有大量的背景知識才能完成
  • 用實驗的方法對一些藥物組合之間的相互作用進行測試,但考慮到這種實驗需要的成本和時間,它可能只適用於少數幾種可能的藥物組合

上述這些方法的共同缺點就是:實際操作層面比較複雜、費力,不能通過計算機自動化完成。

例如筆者在上篇文章中討論的觀察法,其用於理論研究方面是沒有問題的,但是一旦要將其用於工程實踐,就顯得捉襟見肘了。 

為了解決這個問題,學者提出了計演算法,計演算法本質上是一種資料探勘驅動、從海量資料中自動尋找因果關係的有效方法。

舉個例子來說,

以美國為例,一種藥物上市之後,一些疑似不良反應的事件會被病人、製藥公司和醫療服務機構報告給食品及藥品管理局(FDA),並被輸入資料庫。如果某人服用了一種抗過敏藥物,幾天後心臟病發作了,那麼他或者他的臨床醫師就可以把這一情況報告給FDA。

當然,這些報告裡所說的情況通常都是未經證實的。可能某個人的心臟病發作實際上是與藥物無關的血塊引起的,但僅僅是由於最近有新聞報道說出現了很多起藥物引發心臟病的事件,因此將這個人的心臟病發作解釋為該藥物引發的不良反應似乎就很合理了。

很多情況都可能會導致資料出現虛假的因果關係。例如:

  • 病人身上可能還有其他疾病引發了心臟病,比如未診斷出的糖尿病
  • 資料本身也可能會出問題,比如樣本被汙染了或者症狀被誤診了
  • 事件發生的順序可能因為觀測原因被搞錯了,比如心臟病是在吃藥前就發生了
  • 資料收集不完整,很多真正的不良反應可能並未報告給FDA,因為人們可能認為這些不良反應並不是服藥引起的 

即便有些報告所說的情況是錯的,它們仍然可以幫助我們形成新的有待檢驗的假設。如果我們想要通過實驗來驗證這些不良反應,比如讓一組病人服用各種藥物組合,或者讓每個病人分別服用每種藥物,那我們可能要耽誤很長時間才能找到這些藥物之間的相互作用,從而導致更多病人可能出現藥物不良反應。

相反,如果使用另一組來自醫院的觀察資料,我們就能準確地知道病人服用某種藥物組合後會出現什麼情況。當然,我們無法確定病人有沒有服用醫院給他們開的藥,也無法確定同時服用兩種藥物的病人和其他病人有沒有什麼不同。

儘管這種型別的觀測資料存在很多侷限性,但是和傳統觀察法相比,計演算法最大的優勢是對先驗領域知識的要求很低,我們不強制需要從某個具體的因果假設出發,然後再對這個假設進行評估,而是可以直接從資料中自動發現某種因果關係。

通過將計算能力和從資料中有效發現原因的各種方法進行結合,我們對資料的分析已經不再是一次只考察一個因果關係,而是通過對資料的挖掘同時揭示多種因果關係。

通過這些自動化的方法,我們還可以發現很多人們無法直接觀察到的更加複雜的關係,比如,我們可能會發現一個讓病人在中風後恢復意識的、由多個步驟(每個步驟又包含多個必要組成部分)組成的事件序列。

 

2. 什麼樣的資料適合用來推理因果關係 -- 因果結構搜尋的假設前提

在考察推理方法之前,我們還要討論一下使用這些方法需要輸入的資料內容。這裡所說的資料可能是指隨時間變化的事件序列,比如一隻股票價格每天發生的變化,也可能是指某個時間點上的事件序列。

不同的研究方法假設出的資料也有所不同,但有些特徵幾乎對所有研究方法都是一樣的,而且這些特徵還會影響我們從資料中得出的結論。

0x1:無隱藏的共同原因假設

1、共同原因假設原理

一個最重要且最普遍的假設就是:我們已經測量了正在進行因果推理的變數中的所有共同原因。這在圖示模型法中也被稱為因果關係的充分性。如果想要從一組變數中找出原因,那麼我們必須確保測量了這些變數中的所有共同原因。

如果咖啡因是真正導致睡眠不足與心率上升的原因,而且這也是睡眠和心率之間的唯一底層聯絡,那麼如果我們不測量咖啡因的攝入量,可能就會得出錯誤的結論,在咖啡因導致的兩個結果(睡眠不足和心率上升)之間找到聯絡。

資料中缺少的原因叫做潛在變數,兩個或兩個以上的變數之間未測量到的原因可能會導致人們做出錯誤的推理,這樣的原因被稱為隱藏的共同原因或潛在的混雜因子。而由此導致的問題被稱為混雜和遺漏變數偏差。

共同原因發現不足是觀察性研究的主要侷限之一,也是大多數計演算法輸入內容的主要侷限之一。它不僅會導致人們在變數之前發現錯誤的聯絡,還會導致人們高估原因的強度。

2、共同原因和非共同原因對因果關係發現的影響

注意!我們並不一定非要假設每一個原因都要測量到,我們只需要測量那些共同的原因,如下圖所示:

上圖中,咖啡因不僅引起了睡眠的變化,還引起了心率的變化,它是心率和睡眠的共同原因。而白酒僅僅引起了睡眠的變化。如果沒有白酒攝入量的資料,那麼我們將無法找到引起睡眠變化的原因,但也不會因此就在其他變數之間(心率和睡眠)找到錯誤的關係。因為只要咖啡因的觀測是完整的,即使白酒的觀測不完全,至少我們會得出以下幾個結論:

  • 心率和睡眠之間不存在因果關係
  • 心率和咖啡因之間存在因果關係

3、因果關係鏈中的間接原因缺失問題

還是繼續上面咖啡因的例子,如果咖啡對睡眠的影響是通過一箇中間變數(代理變數)引起的,它們之間的關係是咖啡因引起心率上升,而心率上升又導致睡眠減少,如下圖所示:

如果我們不測量心率,最多隻會找到一個間接的原因,而不是一個完整的因果結構。

4、如何規避共同原因缺失問題

為了規避有共同原因沒有被測量到的情況,有一種可行的方法是找到與我們的觀測資料一致的所有可能的模型,包括那些帶有隱藏變數的模型。

比如說,如果我們在睡眠和心率之間發現了一個表面上的因果關係,並且知道這兩個變數之間可能存在某些未測量到的共同原因,那麼一個可能的模型就會包含一個能夠引起這兩個觀察到的變數的隱藏變數。

這種方法的好處在於,所有能夠解釋這些資料的模型之間可能會存在一些共同的聯絡,這樣一來,即便存在多種可能的因果結構,我們依然能夠找出一些可能的聯絡。 

0x2:典型分佈假設

除了要確保找到了正確的變數集,我們還需要確保觀察到的內容反映了觀察物件的真實行為,這就是資訊理論中的充分統計量理論。

例如:

  • 如果我們要考察【有沒有報警系統,是導致搶劫案發生的原因】,那麼我們的資料需要確保搶劫案的發生完全依賴於是否安裝了報警系統,如果還有其他的依賴原因沒有觀測到或者沒有被納入考察範圍,就會導致因果關係結構的錯亂,這就是變數缺失問題。
  • 如果我們要考察【學習時間,是SAT成績的原因】,那麼我們的資料需要確保覆蓋了所有學習時間的學生的SAT成績,否則就會出現我們在這篇文章裡討論過的抽樣偏差問題,由於樣本缺乏變化,我們可能無法找到事物之間的真正關聯
  • 如果我們要考察【跑步時間,是體重下降的原因】,那麼我們要注意,跑步和體重下降之間存在兩種關係,一種是跑步對體重下降有積極影響,另一種是跑步對體重下降有消極影響,因為跑步後會增大食慾和促進吸收。如果蒐集到的資料分佈得不好,因為這種抵消關係的存在,我們可能會錯誤地發現跑步和體重下降之間沒有任何關係
  • 如果我們要考察【某基因的表達,是某種生物顯性特徵的原因】,就會遇到所謂的優先權問題。當很多基因都能產生同一種顯性特徵時,即便我們讓其中一個基因不起作用,這個顯性特徵依然會出現,這是很多具備自平衡能力的生物體都會具備的特徵。這種現象會導致我們錯誤地發現原因和結果之間似乎並不存在因果依賴性
  • 如果我們要考察【硬幣是否有做手腳的的問題】,我們只拋10次硬幣就是不夠的,在小數的實驗次數下很可能會出現罕見事件,只有在拋硬幣次數接近無窮次時,實驗結果才會真實地反映該硬幣背後的真實概率分佈。如果該硬幣是一個標準硬幣,那麼正面朝上和反面朝上的次數比例會接近1:1。這就是大數定律問題。
  • 如果我們要考察【能夠判定一個文字文件是惡意文件的原因】,那麼就要求我們能夠獲取到完全的“惡意樣本全集”,這在理論上是合理的,但在實際工程中是很難做到了,惡意樣本本質上是基於一種程式設計語言規範的無限字串組合,總量和類別都是無限的

辛普森悖論表明,根據考察資料的不同(整體資料或小群體資料),會發現不同的因果結構。

因果推理取決於真實的依賴性關係,我們通常要假設我們觀測到的資料是滿足典型分佈特性的,這種假設被稱為忠實性原則,因為那些不能反映真正的潛在因果結構的資料在某種意義上是“不忠實的”。

0x3:穩定系統假設

上一節說道的典型集假設,我們在進行因果推理時往往會做出這樣的假設:假設我們有足夠多資料,假設我們看到的是由某個原因引起的某個結果出現的真正概率,而不是一個異常現象。

但是要注意的是,對於有些系統(比如那些非穩定性系統)而言,即便是一個無窮大的資料集也無法滿足這個假設的要求。

例如,像股票平均收益這種時間序列資料,它本身是不穩定的,或者說系統本身可能就不具備任何可預測的規律性存在。這種情況下,我們不應該從觀測資料中發現任何因果關係。

所以一般情況下,在進行因果推理前,我們必須假設這些關係是不會隨著時間的變化而變化的 

0x4:正確變數假設

對於因果推理活動來說,我們首先要確保我們測量了正確的事物,

  • 如果我們手上掌握的是金融市場的資料,那我們研究的變數可能就是各個股票
  • 如果在政治學領域,那我們研究的變數可能是競選捐款額和通話量 
  • 如果在入侵檢測領域,那我們研究的變數可能是表示伺服器執行指標的各種統計量
  • 對於共生多原因導致某結果的問題,單獨考察單個變數可能無法找到任何關係,但如果同時考察所有的共生變數,則可能可以找到這種因果關係

我們不僅需要測量正確的事物,還需要確保描述這些事物的方式是正確的。例如,在某些研究中,肥胖症和肥胖可能屬於一個類別,合在一起統計就行。但是對於那些致力於治療肥胖症患者的研究來說,對肥胖症和肥胖的區分,就至關重要了。 

0x5:時序不變性假設

如果變數之間的關係是隨著時間而變化的,那麼就可能出現這樣的情況。變數在時間序列的一個時間段裡是相互獨立的,但在另一個時間段裡卻不盡然。在這種情況下,儘管變數之間的關係在一段時間內可能很強,但是當我們考察整個時間段,變數之間的關係可能會顯得很弱。

 

3. 圖解模型 -- 找到一個模型來了解資料中所有的因果關係

0x1:什麼是圖解模型

為了向別人描述某個因果關係,或者為了理解各個事物是如何組成一個整體的,我們常常會畫一張因果結構圖。

下面這個圖形展示的是一個變量出現的概率是如何受另一個變數影響的。

這個圖告訴我們以下幾點資訊:

  • 廣告和購買行為之間存在某種關係
  • 廣告和購買行為之間的關係是單向的,即廣告影響購買行為,而不是購買行為影響廣告

接下來看另一個因果概念圖:

 

這個圖告訴我們以下幾點資訊:

  • 廣告和購買行為之間存在某種關係
  • 廣告和購買行為之間的關係是單向的,即廣告影響購買行為,而不是購買行為影響廣告
  • 天氣和購買不存在任何關係,我們不能用天氣影響或預測購買行為

0x2:圖解模型能夠表示因果關係的條件

儘管我們可以用圖形來表示因果關係,但這並不意味著我們繪製的或者知道的每一個圖解模型表示的都是因果關係。一個圖解模型要能夠具備表示因果關係,需要具備以下幾個條件:

  • 因果關係中的馬爾可夫條件:一個變數的概率只取決於引起這個變數的原因
  • 充分性原則:所有共同的原因都要測量到
  • 忠實性原則:所使用的資料準確地反映了變數之間真正的依賴關係
  • 變數描述正確性原則:變數的描述必須正確
  • 典型集原則:觀測資料的概率分佈要保證充分性

1、充分性原則

假設廣告不僅能夠引起購買行為,還能提高品牌認知度,

如果我們沒有用來表示廣告的變數,還要試圖從一組資料中推理出變數之間的關係,那我們可能會發現如下圖所示的圖形,

這會讓我們錯誤地認為購買行為提高了品牌認知度,而實際上,這是一個偽因果性。 

一般來說,任意數量的變數中都可能有一個共同的原因,如果這個原因沒有被測量到的話,我們就無法保證由此推理出的關係是正確的。

另一種複雜的情況是出現決定性關係。比如說,每收到一封電子郵件,我的電腦都會發出聲響,而電腦的聲響又會讓我的狗汪汪亂叫。

 

如果在出現聲響的情況下,狗叫的概率為1,而在出現電子郵件的情況下,電腦發出聲響的概率也為1。

儘管從圖解模型圖上,我們可以看到電子郵件和狗叫應該是相互獨立的。但是如果僅從觀測結果上,我們可以會錯誤地推匯出電子郵件是聲響和狗叫的共同原因,因為電子郵件的出現,都會100%伴隨聲響和狗叫的出現。

事實上,這個問題不僅是圖示模型中存在的問題,也是大部分概率法中的一個難題。

2、變數描述正確性原則

如果廣告變量表示的是“是否在電視臺購買了廣告空間”,但真正的原因卻是“消費者看到廣告的次數”,這可能會導致我們無法找到真正的因果關係。

3、忠實性原則

一個貝葉斯網網路包括兩部分:

  • 結構:各個變數之間的連線方式
  • 條件性概率分佈組合:這些組合不過是一些表格,這些表格讓我們能夠在給定原因變數值(真或假)出現的概率。例如廣告和購買行為的例子:

對於貝葉斯網路中的每一個節點來說,我們都會有一個類似的表格。知道這個網路結構資訊可以極大地簡化我們的計算工作,因為每一個變數的值都是由其父級元素決定的。

相反,如果我們對變數之間的聯絡一無所知,就不得不將每一個變數都包含到表格的每一行之中。如果存在 N 個可以為真或為假的變數,那麼我們就會有 2N 行。

我們既可以從資料中瞭解變數之間的結構和各個變量出現的概率,也可以根據我們瞭解的資訊構建一個結構,以此來了解各個變數發生的概率。

4、因果關係中的馬爾可夫條件

只要知道一個變數的直接原因就能夠預測這個變數,這個前提條件被稱為因果關係中的馬爾科夫條件。 

在變數的直接原因已經給定的情況下,變數是獨立於它的非衍生物的(衍生物指的是由變數導致的結果,以及由這些結果導致的結果,等等)。

這在貝葉斯網理論中被稱為tail-to-head(證據跡),可以抽象為下圖所示的結構:

這種結構代表的意思是: 

  • c未知時:影響可以經過c從a流向b,a可以作為證據影響b的後驗概率
  • c已知時:在c給定的條件下,a,b被阻斷,是獨立的。

還是用廣告投入的例子來說明, 

如果營銷策和預算只能通過廣告來影響購買行為,那麼購買行為的發生概率則只取決於廣告,廣告是導致購買行為的直接原因。

一旦廣告這個值確定了,那麼其他的原因將不再重要了,換句話說,廣告已經提供了預測購買結果的所有資訊,除此之外,不再需要其他資訊。所有的原因對購買行為的影響都要通過廣告來實現。 

從理論上說,如果我們能直接干預廣告活動,那麼無須對營銷策略或預算做任何調整也能讓購買行為發生變化,因為購買行為完全是由我們設定的廣告值決定的。

0x3:從資料自動推理得到概率圖形

1、將概率圖示模型搜尋問題轉化為目標函式最優化問題

假設我們有一些關於某個公司僱員情況的資料,我們知道:

  • 他們的工作時間
  • 休假資訊
  • 部分生產指標

接下來的問題是,如何自動化地找到這些因素之間存在的因果關係網路呢?這個問題的本質上是,如何在所有的因果關係網路集合中,尋找到一個或一批和觀測資料最匹配的拓樸結構(最大似然思想)。

顯然,這個問題是一個最優目標搜尋問題,那我們就可以借用優化理論裡的目標函式優化理論來解決這個問題。

我們可以找一個指標來衡量一個模型對資料的描述能力,然後搜尋可能的模型,找到在這個指標下得分最高的模型。這種方法叫作搜尋評分法。

如果休假導致生產力提高是這個資料的唯一關係,那麼帶有這樣一個(從休假指向生產力)的箭頭的模型應該比包含其他關係的模型得分高,

如果實際情況是 V(休假) 導致 P(生產力),那麼第一個圖形的得分應該是最高的

具體到操作層面,要想從候選模型中做出最優選擇,我們還需要用一個方法來計算哪個圖形與資料更相符。

用來評分的函式有很多,但從根本上來說,除了要避免將圖形和特定資料集中的噪聲過擬合,我們對資料的描述程度也存在一個平衡點。我們可以通過一個非常複雜的結構來完美解釋資料集中的每一個點,但我們想要找到一個模型來描述各個變數之間更為普遍的關係(即泛化能力),而不是解釋資料中的每一處噪聲。 

因此,當圖形變得越來越複雜時,搜尋空間會變得十分巨大。只要25個變數,我們得到的所有可能圖形的數量(超過10110)就會讓宇宙中所有原子的數量(估計只有1080)相形見絀。

沒有任何方法能讓我們一一測試這些圖形,我們必須尋找一個相對聰明的搜尋策略,高效地進行拓樸搜尋。

2、啟發式因果拓樸搜尋方法

 

假設我們一一測試了上圖中的前三個圖形,然後發現(c)的得分最高。接下來最好的策略是去研究與這個圖形相近的其他圖形,而不是隨機想出第四個圖形。

我們可以增加一個箭頭、改變箭頭的方向或者刪除一個箭頭,來看看圖形的得分是如何變化的。這種方法本質上是一種啟發式搜尋的思想。 

這種啟發式搜尋有存在很大的問題,就是“容易陷入區域性最優”,因為也有可能最好的圖形其實是(d),但由於我們使用了啟發式策略,一直在優化第三個圖形,並且在找到真正的結構之前就已經停止了測試工作,所以我們永遠也沒有機會測試到第四個圖形。

但是如果我們不能測試到每一個圖形,就無法確保最好的圖形已經被測試了。

區域性最優化陷阱

3、引入先驗知識的拓樸搜尋方法

先驗知識可以簡化待搜素的拓樸空間,如果我們知道性別只能是原因而絕不會是結果,那就可以避免測試所有將性別當做結果的圖形。

如果我們對要尋找的結構有一定的先驗瞭解,那麼就能為整個圖形組合設計出一個概率分佈圖,並且可以用它來引導我們找到那些更有研究價值的各種可能的結構。

4、基於約束法的拓樸搜尋方法

除了採用更優秀的搜尋方法去搜索海量的潛在影象集之外,我們還可以使用變數之間的依賴性來建構那個得分最高的圖形。約束法就是這樣一種搜尋方法。 

約束法通過不斷重複測試變數之間的獨立性,並在測試結果中增加、減少圖形中的箭頭,或者改變圖形中箭頭的方向。

  • 其中有些方法是每次增加一個變數
  • 還要一些方法一開始就已經將所有變數連線在一起,然後再一個一個地刪除箭頭

這其實就是貝葉斯網中的區域性獨立性假設,基於區域性獨立性假設,我們可以大大化簡貝葉斯圖的複雜拓樸結構,從而簡化節點間的條件概率計算。

以下圖為例,

如果我們發現在給定 C 的情況下,A 和 B 是相互獨立的,那麼就可以刪除它們之間的連線,然後繼續尋找變數之間的其他關係,看看還能刪除哪些連線。

在真實的工程實踐中,我們會發現變數之間完全相互獨立的可能性不大,或多或少都會有一些相關性。而我們需要判斷的是,應該在什麼時候接受或拒絕變數之間相互獨立的假設。

如果在給定B的情況下,A出現的概率和A本身出現的概率完全一樣(即互資訊為零),那麼這兩個變數之間就是相互獨立的。

在實際研究中,我們需要選擇一個統計學上的門檻(臨界值),來決定是否接受基於這些測試而提出的條件獨立性結論。

 

4. 因果衡量模型 -- 重點對每一個關係的強度進行分別評估的方法

0x1:因果衡量模型原理及優缺點

因果衡量模型,並不要求尋找一個與資料一致的或者能夠對資料做出完美解釋的圖解模型,因果衡量模型更多地是側重於研究區域性,它主要研究的是量化各種因果關係強度的問題。例如:

  • 如果休假可以提高生產力,但生產力不能導致休假,那麼休假作為提高生產力的原因的強度應該很高;
  • 反之,生產力提高作為放假的原因的強度應該很低

儘管相關性是對稱的,但在衡量因果關係的顯著性時,需要利用這些關係中的非對稱性特徵。在某種意義上,因果關係的顯著性應該與原因對結果的解釋程度相稱,與原因作為一種干預手段能夠帶來某種結果的有效程度也相稱。

如果休假只能偶爾提高生產力,而加班總是能夠提高生產力,那麼作為生產力提高的原因,加班的強度要高於休假的強度。

如果休假能夠提高生產力的原因只是因為休假可以讓員工在這家公司待得久一些,且有經驗的員工的生產力更高,那麼我們想要知道的是,經驗對於提高生產力的重要性是否高於休假。也就是說,我們想要發現最直接的原因,這些原因在圖形中是直接父級原因,而不是更遙遠的祖父級原因。

如果可以用一種方法,以完全獨立於其他任何無關變數的方式,去單獨評估生產力提高的原因(區域性評估),那麼我們可以做更少的測試,並且可以同時進行這些測試,從而大大提高計算這些事情的計算程式的速度。

這種方法的侷限性在於,如果沒有一個結構來展示所有變數之間的聯絡,我們可能無法直接使用這些結論來進行預測。

假設我們發現黨派的支援會讓參議員們投票支援某些法案,而這些參議員所屬選區選民的支援也會起到同樣的效果。因果衡量模型並沒有告訴我們這兩種方案是如何相互作用的,也沒有告訴我們如果這兩種支援相加,是否會導致參議員支援某個法案的決心更強。

要想解決這個問題,可以去尋找更為複雜的關係,我麼並不是要使用所有測量過的變數,而是要去建立各種聯絡(政黨和選民對提案的支援的複合因果關係結構),而這往往是需要藉助貝葉斯網那樣的理論體系才能較好地解決的。

0x2:概率與因果關係的顯著性

在給定原因的情況下,某個結果出現的條件性概率也可以用來衡量原因的顯著性。

衡量原因強度的方法有很多,但這些方法的基本理念都是要以某種方式吸收其他資訊來解釋這些共同的原因,即資訊理論中的互資訊概念。

例如,如果在休假和加班這兩個變數都為真時,生產力提高的概率為 X%,而只有加班這一個變數為真實,生產力提高的概率也為 X%,那麼知道休假資訊也並不能提升我們預測生產力提高這一事件出現概率的準確性。換句話說,休假資訊並不能為確定生產力提高這個結果提供更多的資訊。

因此,要想量化某個原因的顯著性,我們可以計算這個原因平均在多大程度上影響了其結果出現的概率。簡單來說,就是在其他因素保持不變的情況下,這個原因出現和未出現時某個結果出現的概率會有多大的變化。

可以將各種情況出現的概率進行加權計算。如果在一個非常普遍的情況下,一個原因可以顯著地提高某個結果出現的概率,那麼這個原因的顯著性比那些只在極少數情況下才能提高某個結果出現概率的原因要大得多。

要注意的是,因果衡量模型,同樣也需要遵循前面討論過的“因果結構搜尋的假設前提”,這裡不再贅述。

另一方面,由於在實踐中總會出現一些噪聲、失誤和資料缺失的情況,所以我們不能假定不是原因的事物的顯著性指標的值就一定為零。相反,我們經常需要確定哪些因果顯著性指標的值具有統計意義。

比如說,有很多變數可能是某些變數的原因,但是它們之間又沒有真正的因果關係,我們在計算這些變數的因果顯著性指標的平均值時,會發現這些顯著性值的分佈看起來就像一個鐘形曲線,就像吐下圖中的灰色柱狀圖,

而當測試的資料集中存在一些真正的因果關係時,這些顯著性會分佈成另一種圖形,例如上圖中的黑色柱狀圖部門。

我們可以利用這種差異來判斷顯著性指標的哪些值應該被看成是具有因果關係的值。

0x3:因果關係的顯著性計算方法

1、基於時間視窗的統計性方法

在有些計算因果關係的顯著性方法中,可以在原因和結果之間指定一個時間間隔或時窗,以便計算原因的顯著性。

如果與流感病人親密接觸後,接觸者會在1-4天后出現流感症狀,那麼4天這個統計時間視窗,就能讓我們計算出二者之間的因果顯著性。

如果這種方法的問題在於,如果我們對引起流感的原因一無所知,怎樣才能知道需要測試多大的時窗呢?如果我們測試的時間窗不對,我們可能就會錯誤一些真正的原因,或者只能找到真正窗的一個子集或超集。

在下圖中,我麼測試的時窗與真正的時窗重合了一部分,但也有不一樣的地方,

  • 如果測試的時窗太長,那麼就會出現很多這樣的情況:我們很期待某個結果出現,但是這個結果卻沒有出現。由於在原因為真的情況下結果並未出現,所以這些案例會對原因的顯著性值造成不利影響
  • 如果測試的時窗太窄,那麼即便測試的潛在原因沒有出現,某個結果可能也會出現。
  • 隨著測試時窗與真實時窗越來越接近,顯著性值也會變大,並且最終會與真實的顯著性值相一致 

 

5. 還有什麼自動因果發現方法?

因果推理的方法不止一種,目前還沒有哪一種方法能夠在所有案例中都準確無誤地找到事件之間的因果關係。有些方法得出的結論更具普遍性,但是這些結論取決於那些實際上不一定為真的假設。只用一種因果搜尋方法來解決問題都是不可行的,我們需要的是一個工具箱。

沒有一種方法是完美的,所以一定要了解每一種方法的侷限性,例如:

  • 如果你的推理是建立在雙變數格蘭傑因果關係基礎之上的,那麼你應該意識到,你找到的只是一種單向相關性,同時還應該考慮一下多變數的方法
  • 如果因果結構是已知的,而我們想要從一些資料中找出這個結構的各種引數(概率分佈),這時貝葉斯網也許是一個很好的選擇
  • 如果時間是其中一個重要變數,那麼使用動態貝葉斯網可能更合適
  • 如果資料中包含大量變數,或者我們並不需要找出完整的關係結構,那麼用於計算因果關係強度的方法比推理因果模型的方法的效率要更高

&n