Folks: I know this may be overreaching, but are we missing what's important? WHY do the zeros occur? Are they values less then a known or unknown LOD? -- and/or is there positive mass on zero? In either case, using logs to calculate a geometric mean may not make sense. Paraphrasing Greg Snow, what is the scientific question? What is the model?
Cheers, Bert On Mon, Jan 17, 2011 at 9:13 AM, Keith Jewell <k.jew...@campden.co.uk> wrote: > Just in case some of x are negative (the desired median still exists, as > long as the two middle values are non -ve), how about: > > x <- runif(20, -1, 100) > exp(median(log(pmax(0,x)))) > > It'll give -Inf if the two middle values are negative, when I guess we > should get NaN, but I can't see a 1-line way to handle that! > > Keith J > > "Peter Ehlers" <ehl...@ucalgary.ca> wrote in message > news:4d3468ef.5010...@ucalgary.ca... >> I've been reminded by Prof. Brian Ripley that R's >> log() function will indeed handle zeros appropriately. >> >> Apologies to S Ellison and Hadley Wickham. >> >> Peter Ehlers >> >> On 2011-01-17 06:55, Peter Ehlers wrote: >>> On 2011-01-17 02:19, S Ellison wrote: >>>> Will this do? >>>> >>>> x<- runif(20, 1, 100) >>>> >>>> exp( median( log( x) ) ) >>>> >>>> S Ellison >>>> >>>> >>> That's what Hadley proposed, too. It's fine for >>> your example, but there is potentially a small >>> problem with this method: the data must be positive. >>> Since it's not unusual to see data with some zeros, >>> the log() would fail. >>> >>> Depending on what type of data I was going to use >>> this modification of the median for, I would consider >>> modifying the (quite short) median.default function, >>> with appropriate additional data checks. >>> >>> Peter Ehlers >>> >>>> >>>>>>> Skull Crossbones<witch.of.agne...@gmail.com> 15/01/2011 16:26>>> >>>> Hi All, >>>> >>>> I need to calculate the median for even number of data points.However >>>> instead of calculating >>>> the arithmetic mean of the two middle values,I need to calculate their >>>> geometric mean. >>>> >>>> Though I can code this in R, possibly in a few lines, but wondering if >>>> there >>>> is >>>> already some built in function. >>>> >>>> Can somebody give a hint? >>>> >>>> Thanks in advance >>>> >> > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > -- Bert Gunter Genentech Nonclinical Biostatistics ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.