2017-09-29 33 views
0

我是一位查看許多鳥類物種棲息地協會的生物學家。因此,我列出了每個物種的全球模型清單,並在每個物種上都使用了疏浚。我現在想用model.avg來獲得頂級模型的平均係數(delta < 2)。當子集大小= 1時,獲取model.avg以返回頂級模型

但是,對於某些物種只有一個頂級模型 - 下一個最佳模型的delta> 2.這對我來說很好,但這意味着model.avg會引發錯誤。我希望它只是返回該頂級模型的係數(與mean(5)返回5相同)。

我可以用一個if從句找到這樣的物種和分別對待,但後來的,比方說,get.models輸出,是的model.avg輸出非常不同的,所以我必須去區別對待他們的權利的方式通過這是一個凌亂的faff。

是否有一個簡單的解決方法來獲得model.avg(或類似model.avg的輸出)以使用單個頂級模型?

回答

0

我的解決辦法:

tmp <- get.models(x, subset = delta < 2) 
    if (length(tmp)==1){ 
    tmp2 <- c(tmp, tmp) 
    mod.avg.results <- model.avg(tmp2) 
    } else {mod.avg.results <- model.avg(x, subset = delta < 2)} 

(這是在llply,因此x是每個物種model.selection對象)

0

使用coefTablecoef作爲成分共同的界面和平均模型。例如:

coefTable(if(nrow(x) == 1) 
    get.models(x, 1)[[1]] 
    else model.avg(x)) 

其中x是你"model.selection"表。