2010-11-09 21 views
9

Sarıcı işlevi kullanarak glm.nb aracılığıyla birkaç yüz veri kümesi çalıştırıyorum. Hiçbir şey fantezi, ben sadece llply aracılığıyla her bir liste öğesi geçmek, glm.nb kullanarak sığdırmak, data.frame katsayıları yazmak ve geri döndürün.Hataları nasıl yok sayabilirim ve liste öğelerini işlemeye devam edebilirim?

Şaşırtıcı olmayan bir şekilde, glm.nb bazı veri kümeleri için yakınsama başarısız olur. Fonksiyonun bir hatadan ötürü durmasına ve durmasına rağmen, veri kümelerinin geri kalanı boyunca devam etmesini ve mümkün olan durumlarda sonuçları döndürmesini tercih ederim. Bu işi yapabilirsiniz hataları görmezden daha genel bir yolda

res.model <- function(x) 
     { 
     res <- try(invisible(glm.nb(x~y, data=x))) 
    if(!("try-error" %in% class(res))) 
     { 
    return (data.frame(site=unique(x$site_name),species=unique(x$species),coef=res$coefficients[2])) 
     } 
} 

Herhangi düşünceler:

Benim ilk girişimi bu?

+0

Ben plyr hakkında çok şey bilmiyorum, ama introwith(), intro kılavuz yardımında belirtildiği gibi değil mi? http://had.co.nz/plyr/plyr-intro-090510.pdf – Chase

+0

Muhtemelen ilgili: http://stackoverflow.com/questions/2963729/r-catching-errors-in-nls – nico

cevap

9

Aynı zorlukla karşılaştığım bir nls() var. Bir data.frame her gruba regresyon uyguluyorum ama bu mantık (Sanırım) sizin için de çalışması gerekir:

dlply(myData, c("group1", "group2"), function(df){ 
     tryCatch(nls(depen ~ exp(a1 + b1 * year) , data=df, start = list(a1 = -1, b1 = 0), na.action=na.omit), error=function(e) NULL) 

Ben kendi durumunuza göre nasıl uygulanacağını tahmin edildi eğer öyleyse, gibi bir şey olurdu:

res <- trycatch(glm.nb(x~y, data=x), error=function(e) NULL) 

bunu kullanmaktan yolu, ben NA atıyorum regresyon yakınsama etmez her zaman değer verir. Farklı bir şey yapmak isteyebilirsiniz.

5

Ayrıca, failwith işlevini plyr. f plyr geçirerek fonksiyonu ise, bunun yerine işlev başarısız olduğunda ne gerek dönüş değeri ile NA yerine, fonksiyon tabii

safef = failwith(NA, f) 

geçebilir. Bu kod, başarısızlıkla ilgili örneklerden doğrudan kaldırılır.

İlgili konular