遞迴區分 (Recursive partitioning) 是一種多變量分析的統計方法。遞迴區分,基於一些可二分的 (dichotomous)相依變數,試圖建立一個可以正確分類成員的決策樹。
雖然遞迴區分多用於醫療診斷測試,但其實它的應用程度相當廣泛。
相較於迴歸分析會建立一個公式,讓醫療照護者從中計算一個病患擁有疾病的機率;遞迴區分所建立的規則像是「如果病患身上有 x, y, 或 z, 那他可能會得了 q 疾病」
R 當中的 rpart 套件可以幫你做遞迴區分。 Torsten Hothorn 及 Achim Zeileis 進一步實作了擴充的工具組,稱作 partykit,可以幫助呈現、摘要以及視覺化所得模型的樹狀結構。
底下,我們會使用 HELP 資料,分類成員是否「無家可歸」(homeless)。
好極了,有點樣子了 (儘管有點陽春,但沒關係,待會我們會美化它)。我們可以用指令 printcp() 將分類樹的產物顯示出來。
相關資源:
Quick-R: http://www.statmethods.net/advstats/cart.html
消息來源: R-bloggers
閱讀更多 »
雖然遞迴區分多用於醫療診斷測試,但其實它的應用程度相當廣泛。
相較於迴歸分析會建立一個公式,讓醫療照護者從中計算一個病患擁有疾病的機率;遞迴區分所建立的規則像是「如果病患身上有 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(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