2014-02-05 50 views
2

Nagarajan et al。書(貝葉斯網絡中的R,奧賴利2013年,第35頁)說,當我需要將R bnlearn包的標記數據集,並要求使用學習結構通過寫R bnlearn Grow-Shrink結構學習返回無向圖

library(bnlearn) 
data(marks) 
bn.gs = gs(marks) 
養成縮水實施

那麼我應該得到一個有向圖:

model: [STAT][ANL|STAT][ALG|ANL:STAT][VECT|ALG] [MECH|VECT:ALG] 
nodes: 5 
arcs: 6 
undirected arcs: 0 
directed arcs: 6 

的是相反,我得到一個無向圖:

model: [undirected graph] 
nodes: 5 
arcs: 6 
undirected arcs: 6 
directed arcs: 0 

即使當我加入OPTI對於gs方法,無向= FALSE,我仍然得到相同的結果。 我在做什麼錯?或者在R實現中有錯誤?我已經嘗試過了兩個在我的Mac和Debian的機器上,結果是一樣的...

回答

5

答案是通過在其網站上的作者(我剛發現)提供:http://www.bnlearn.com/book-useR/

「第35頁:bnlearn 3.2和更高版本對設置弧線方向更挑剔;其結果是bn.gs無向圖,並且必須延伸到一個與DAG cextend()結束的例子。」

換句話說,通過

bn.gs = cextend(gs(marks)) 

取代的代碼的最後一行它令人遺憾的是,Springer並沒有提供標準的勘誤服務,例如O'Reilly。這本書的作者必須創建自己的網站,並花了我一些時間來找到它...

+0

謝謝你的答案。真的很有幫助 – akunyer

0

這不是一個錯誤。方向測試的p值對於兩個方向都是相同的,因此返回了無向邊。這就是說,使用cextend()是我所做的,