arnima at hafro.is
2009-Oct-29 18:00 UTC
[Rd] weighted.mean uses zero when na.rm=TRUE (PR#14032)
The weighted.mean() function replaces NA values with 0.0 when the user specifies na.rm=TRUE: x <- c(101, 102, NA) mean(x, na.rm=TRUE) # 101.5, correct weighted.mean(x, na.rm=TRUE) # 67.66667, wrong weighted.mean(x, w=c(1,1,1), na.rm=TRUE) # 67.66667, wrong weighted.mean(x, w=c(1,1,1)/3, na.rm=TRUE) # 67.66667, wrong The weights are normalized w<-w/sum(w) before removing the NA values, effectively replacing x[is.na(x)]<-0. This bug was introduced between versions 2.9.2 and 2.10.0. Thanks, Arni
Peter Dalgaard
2009-Oct-30 15:07 UTC
[Rd] weighted.mean uses zero when na.rm=TRUE (PR#14032)
arnima at hafro.is wrote:> The weighted.mean() function replaces NA values with 0.0 when the user > specifies na.rm=TRUE: > > x <- c(101, 102, NA) > mean(x, na.rm=TRUE) # 101.5, correct > weighted.mean(x, na.rm=TRUE) # 67.66667, wrong > weighted.mean(x, w=c(1,1,1), na.rm=TRUE) # 67.66667, wrong > weighted.mean(x, w=c(1,1,1)/3, na.rm=TRUE) # 67.66667, wrong > > The weights are normalized w<-w/sum(w) before removing the NA values, > effectively replacing x[is.na(x)]<-0. This bug was introduced between > versions 2.9.2 and 2.10.0.Yes, r48644 on May 27, specifically. -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907