2016-04-10 8 views
-1

Ben Ar yeniyim ve ne hakkında çok anlamıyorum işe yarıyor. Ben ancak bu kodu çalıştırmak çalışıyorum "lm.fit içinde Hata (x, y, offset = ofset singular.ok = singular.ok, ...): 0 (non-NA) vakalar" sürekli görünür ve benim veri aslında NA yok. Peki ne yapmalıyım?Hata (x, y, offset = ofset, singular.ok = singular.ok, ...) 0 dışı-na durumlar (moult paketi)

> library("moult") 
> 
> mym = read.csv("Test.csv", sep=";", head=T) 
> head(mym) 
    Age Sex MoultPresence  Score Prim Habitat Jul.Day 
1 Adult 1    1 5554210000 22 Beach  123 
2 Adult00 26 Estuary  124 
3 Adult 1    1 5555553200 35 Estuary  124 
4 Adult 1    1 4440000000 12 Beach  126 
5 Adult0 31 Mudflat  127 
6 Adult00 26 Mudflat  127 

> if (is.numeric(mym$Prim)) {scores <- format(mym$Prim, scientific = FALSE, trim = TRUE)} else {scores <- mym$Prim} 
> mscores <- substr(scores, 1, 9) 
> mym$Date <- date2days(mym$Date, dateformat = "dd-mm-yyyy", startmonth = 9) 
> m88.2 <- moult(Prim ~ Jul.Day, data = mym) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 

> summary(m88.2) 
Error in summary(m88.2) : object 'm88.2' not found 

> m88c <- moult(Prim ~ Jul.Day, data = mym, type = 3) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 

> summary(m88c) 
Error in summary(m88c) : object 'm88c' not found 

> durationmean2ab <- function(duration, mean) { 
+ ab <- c(-mean/duration, 1/duration) 
+ names(ab) <- c("intercept", "slope") 
+ return(ab) 
+ } 
> uz1 <- durationmean2ab(coef(m88c, "duration"), coef(m88c, "mean")) 
Error in coef(m88c, "mean") : object 'm88c' not found 

> 
> ssex <- ifelse(mym$Sex == 1 | mym$Sex == 3, "male", ifelse(mym$Sex == 2 | mym$Sex == 4, "female", NA)) 
> mym$ssex <- as.factor(ssex) 
> mmf <- moult(Prim ~ Jul.Day | ssex | ssex, data = mym, type = 3) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 

Nasıl düzeltilebileceği hakkında herhangi bir fikriniz olabilir mi?

+0

hoş geldiniz! Bu 'teneke' paketi oldukça uzman olduğu için muhtemelen biraz zor olacak. Birisi, neyin yanlış gittiğini bulmak için 'moult' bağırsaklarında çalışmak zorunda kalacak. Bize [yeniden üretilebilir bir örnek] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-rprorecible-example) sağlayacak bir veri ve/veya kod ekleyebilir misiniz? Alternatif olarak, * r-sig-ekoloji @ r-project.org' e-posta listesine * daha fazla şansınız olabilir. –

cevap

1
O vignette for the moult package (katma vurgu) kısaca bir göz alarak ... Güzel Kılavuzunu Oku yardımcı

: bunlardan iki (moult.index ve days) ilk daima gerekir

formula beş parça, olabilir sağlanacak:

moult.index ~ gün | x1 + x2 | y1 + y2 | (Her biri bireye bir , 0 ile 1 arasında) verilir Z1 tüy dökücü indekslerinin ~ vektörü sol tarafında,

sonra ilk bölümü ~ karşılık gelen günlük bir vektör gerektirir Bu bireylerin gözlendiği (gün sayısı, örneğin 1 Temmuz). Daha önce aynı belgede

:

Bu moult endeksi moult puanlarının orijinal toplamı veya dizin lineer hale getirmek için bunlardan bazıları dönüşüm olabilir ... O ölçekli uygundur

: Bu endeks yüzden başlamanızı öneriyoruz ediyorum 0'dan 1.

değişmektedir için

Bu

mym <- transform(mym, Prim_scaled = (Prim-min(Prim))/(max(Prim)-min(Prim))) 
moult(Prim_scaled ~ Jul.Day, data = mym) 
Tamam çalışmak görünen verilerin alt kümesiyle (moult sürümü 1.4 ile birlikte) Bize gösterdiğin: Bir tekrarlanabilir örnek sağlayabilir sürece

mym <- read.table(header=TRUE, 
        text=" 
Age Sex MoultPresence  Score Prim Habitat Jul.Day 
1 Adult 1    1 5554210000 22 Beach  123 
2 Adult00 26 Estuary  124 
3 Adult 1    1 5555553200 35 Estuary  124 
4 Adult 1    1 4440000000 12 Beach  126 
5 Adult0 31 Mudflat  127 
6 Adult00 26 Mudflat  127") 

mym <- transform(mym, Prim_scaled = (Prim-min(Prim))/(max(Prim)-min(Prim))) 
moult(Prim_scaled ~ Jul.Day, data = mym) 

, muhtemelen daha uzağa herhangi alamayan . Taşması Stack için

+0

Merhaba Ben, öneri için teşekkürler. Verilerimi dönüştürmeye çalıştım ancak yine de aynı hatayı alıyorum. –

+0

Bir geçiş yumuşatma kütle verisini dahil etmeye çalıştım ve yardımcı oldu ama şimdi başka bir hatam var '> geçiş yumuşatması <- c (20.4, 20.8, 21.5, 22.8, 24.4, 25.6, 26.3, 25.7, 25.7) > mym $ Prim <- ms2pfmg (mscores, feather.mass) > mym $ Tarih <- date2days (mym $ Tarih, dateformat = "gg-aa-yyyy", startmonth = 9) > m88.2 <- moult (Prim ~ Jul .Day veri = mym) matris içinde hatası (Listede yer almayan (değer, yinelemeli = YANLIŞ, use.names = YANLIŞ), sat_say = NR,: dizi extent' [2] eşit değildir 'dimnames' uzunluğu –