利用 partykit 進行遞迴區分 (recursive partitioning)

2011年11月19日 星期六
遞迴區分 (Recursive partitioning) 是一種多變量分析的統計方法。遞迴區分,基於一些可二分的 (dichotomous)相依變數,試圖建立一個可以正確分類成員的決策樹。

雖然遞迴區分多用於醫療診斷測試,但其實它的應用程度相當廣泛。

相較於迴歸分析會建立一個公式,讓醫療照護者從中計算一個病患擁有疾病的機率;遞迴區分所建立的規則像是「如果病患身上有 x, y, 或 z, 那他可能會得了 q 疾病」

R 當中的 rpart 套件可以幫你做遞迴區分。 Torsten Hothorn 及 Achim Zeileis 進一步實作了擴充的工具組,稱作 partykit,可以幫助呈現、摘要以及視覺化所得模型的樹狀結構。

底下,我們會使用 HELP 資料,分類成員是否「無家可歸」(homeless)。

ds = read.csv("http://www.math.smith.edu/r/data/help.csv")
library(rpart); library(partykit)
ds$sub = as.factor(ds$substance)
homeless.rpart = rpart(homeless ~ female + i1 + sub + sexrisk + mcs +
  pcs, method="class", data=ds)
plot(homeless.rpart)
text(homeless.rpart)



好極了,有點樣子了 (儘管有點陽春,但沒關係,待會我們會美化它)。我們可以用指令 printcp() 將分類樹的產物顯示出來。

printcp(homeless.rpart)


接著我們要利用 partykit 套件製作漂亮的圖形。 注意我們使用了 plot.party() as.party(),強迫 rpart 物件轉成適當的格式。
 
plot(as.party(homeless.rpart), type="simple")


你也可以將 type="simple" 移掉,看一看終端節點 (terminal node) 的分類情況。

plot(as.party(homeless.rpart))



想要知道更多的資訊和更多迷人的圖片,不妨參考此文件。文件裏頭有取出每個中間節點的 p-value 的範例。

相關資源:
Quick-R: http://www.statmethods.net/advstats/cart.html
消息來源: R-bloggers

0 意見:

張貼留言

嗨,我是 Seyna。歡迎您的留言 :)

 

Categories

 

© 2010 取火之路, Design by DzigNine
In collaboration with Breaking News, Trucks, SUV