2013-01-09 58 views
2

我使用party包河獲取統計信息節點從迴歸樹在從所得的樹的各個節點黨pagckage

我想獲得各種統計數據(平均值,中值等),但我看不到如何做到這一點。例如,

airq <- subset(airquality, !is.na(Ozone)) 
airct <- ctree(Ozone ~ ., data = airq, 
        controls = ctree_control(maxsurrogate = 3)) 
airct 
plot(airct) 

產生具有4個終端節點的樹。我將如何獲得每個節點的平均空氣質量?

+0

想要顯示每個節點的矢量嗎? – agstudy

回答

1

這比我想象的要困難得多。試試這樣的:

a <- by(airq,where(airct),colMeans) #or whatever function you desire for colMeans 
a 
a$"3" #access at node three 
a[["3"]] #same thing 

你可能會發現一些其他有用的例子?`BinaryTree-class`

+0

謝謝!在某種程度上,我很高興這並不簡單。我認爲這將是。 –

6

我無法得到節點的哪個變量是空氣質量。但我在這裏告訴你如何定義你的樹情節:

innerWeights <- function(node){ 
    grid.circle(gp = gpar(fill = "White", col = 1)) 
    mainlab <- node$psplit$variableName 
    label <- paste(mainlab,paste('prediction=',round(node$prediction,2) ,sep= ''),sep= '\n') 
    grid.text(label= label,gp = gpar(col='red')) 
} 

plot(airct, inner_panel = innerWeights) 

enter image description here

編輯通過節點來獲得統計

庫(gridExtra)

innerWeights <- function(node){ 
    dat <- round_any(node$criterion$statistic,0.01) 
    grid.table(t(dat)) 
} 
plot(airct, inner_panel = innerWeights) 

enter image description here

2

如果您在R空間中丟失(並且文檔不能立即幫助您),如何到達那裏(

首先,嘗試str(airct):由於結果比較複雜,輸出有點冗長,但對於更簡單的情況,例如t檢驗,這是你所需要的。

由於print(airct)或只是airct給出了相當有用的信息,打印是如何工作的?嘗試class(airct)或檢查文檔:結果如果類BinaryTree

好了,我們可以看到這個從文檔,而在這種情況下,二叉樹頁上的信息是不夠好

但假設筆者是個懶人(看到頁面上的例子。):在try getAnywhere(print.BinaryTree)。在頂部找到y<[email protected]:所以請嘗試[email protected]下一步

+0

感謝這一點;我喜歡錶達「在R空間中迷失」! 但我確實看過文檔,並沒有看到如何得到我想要的。 'airct @ responses'也提供了很多輸出,我不知道如何判斷哪個是或者如何提取我想要的。 –

1

您也可以使用dplyr包執行此操作。

首先獲取每個觀測所屬的哪個節點並將其存儲在數據幀中。

airq$node <- where(airct) 

然後由節點使用group_by到組的觀察,並使用summarise計算臭氧測量的平均值。您可以將mean替換爲您喜歡的任何彙總統計功能。

airq %>% group_by(node) %>% summarise(avg=mean(Ozone)) 

其中給出以下結果。

node  avg 
    (int) (dbl) 
1  3 55.60000 
2  5 18.47917 
3  6 31.14286 
4  8 81.63333 
5  9 48.71429