2015-05-28 28 views
0

我得到一個錯誤而使用所述王牌功能的ARD模型中R的錯誤是在floating.pie.aspfloating.pie錯誤,同時使用nodelables從猿包

錯誤(XX [I] ,YY [I],餡餅[I],半徑= xrad [I],COL = piecol): floating.pie:x值必須是非負

library(ape) 
library(phylobase) 
tree <- read.nexus("data1.nexus") 
plot(tree) 
data <- read.csv("phagy_species.csv") 
clade.full <- extract.clade(tree, node=91) 
plot(clade.full) 
clade.1 <- drop.tip(clade.full, "Bar_bre") 
clade.2<- drop.tip(clade.1, "Par_pho") 
clade.3<- drop.tip(clade.2, "Par_iph") 
clade.4<- drop.tip(clade.3, "Eur_ser") 
clade.5<- drop.tip(clade.4, "Opo_sym") 
clade.6<- drop.tip(clade.5, "Mor_pel") 
clade.7<- drop.tip(clade.6, "Aph_hyp") 
clade.8<- drop.tip(clade.7, "Ere_oem") 
clade.9<- drop.tip(clade.8, "Cal_bud") 
clade.10<- drop.tip(clade.9, "Lim_red") 
clade.11<- drop.tip(clade.10, "Act_str") 
clade.12<- drop.tip(clade.11, "Hel_hec") 
clade.13<- drop.tip(clade.12,"Col_dir") 
clade.14<- drop.tip(clade.13, "Hyp_pau") 
clade.15<- drop.tip(clade.14, "Nym_pol") 
clade.16<- drop.tip(clade.15, "Mel_cin") 
clade.17<- drop.tip(clade.16,"Apa_iri") 
clade.18<- drop.tip(clade.17, "Bib_hyp") 
clade.19<- drop.tip(clade.18, "Mar_ors") 
clade.20<- drop.tip(clade.19, "Apo_cra") 
clade.21<- drop.tip(clade.20, "Pse_par") 
clade.22 <- drop.tip(clade.21, "Lep_sin") 
clade.23<- drop.tip(clade.22, "Dis_spi") 
plot(clade.23) 
data2 <- as.numeric(data[,2]) 
model2 <- ace(data2, clade.23, type="discrete", method="ML", model="ARD") 
summary(model2) 
d <-logLik(model2) 
deviance(model2) 
AIC(model2) 
plot(clade.23, type="phylogram", cex=0.8, font=3, label.offset = 0.004) 
co <- c("red", "blue", "green", "black") 
nodelabels(pie = model2$lik.anc, piecol = co, cex = 0.5) 

就是在這個時候我得到錯誤。如果我使用原始樹而不修剪,則不會出現錯誤。但是,當我將他們調整到符合我的要求時,它就是消極的。

這裏是你正在使用的餡餅比例有複數在它的數據 tree file

data file

+0

我也只想指出,你不需要一次性刪除提示,並創建一堆臨時樹。 (clade,c(「Bar_bre」,「Par_pho」,「Par_iph」,「Eur_ser」,「Opo_sym」,「Mor_pel」,「Aph_hyp」,「 Ere_oem「,」Cal_bud「,」Lim_red「,」Act_str「,」Hel_hec「,」Col_dir「,」Hyp_pau「,」Nym_pol「,」Mel_cin「,」Apa_iri「,」Bib_hyp「,」Mar_ors「 ,「Pse_par」,「Lep_sin」,「Dis_spi」)) –

回答

0

矩陣。看到這一點,嘗試:

class(model2$lik.anc[1,1]) 

該矩陣的行定義了餡餅的比例,他們需要總結爲1。您的代碼產生一個描餡餅,如果我替換nodelabels功能餡餅矩陣像這樣:

nodelabels(pie = matrix(0.25, 64, 4), piecol = co, cex = 0.5) 

因爲現在的pie參數與行的合法矩陣總和爲1

至於你爲什麼在這個矩陣中有複數,我不確定。這可能與您示例中ace產生的所有警告有關。但這是一個完全不同的問題。