The problem is that 1+x does not give accurate results for small x: > (1+1e-17) == 1 [1] TRUE
Bill Dunlap TIBCO Software wdunlap tibco.com On Mon, Dec 12, 2016 at 9:26 AM, John Sorkin <jsor...@grecc.umaryland.edu> wrote: > David, > > I did read the help page. All it says is > > log1p(x) computes *log(1+x)* accurately also for *|x| << 1* (and less > accurately when *x is approximately -1*). > > This gives me pause. Does it mean that log(x) does not give accurate > results? If log1p gives more accurate values than log, why is the log > function not written to use the more accurate computation performed by > log1p. I don't believe I can look directly at the code for log and log1p, > so I need to rely on the kindness of others to explain the differences > between the computations performed by the functions. I guess the test I > ran, log1p(0.000001)/log(0.000001+1), did not have enough precision to > demonstrate a difference between the two functions. > > John > > > > > John David Sorkin M.D., Ph.D. > Professor of Medicine > Chief, Biostatistics and Informatics > University of Maryland School of Medicine Division of Gerontology and > Geriatric Medicine > Baltimore VA Medical Center > 10 North Greene Street > GRECC (BT/18/GR) > Baltimore, MD 21201-1524 > (Phone) 410-605-7119 > (Fax) 410-605-7913 (Please call phone number above prior to faxing) > > >>> David Winsemius <dwinsem...@comcast.net> 12/12/16 12:05 PM >>> > > > > On Dec 12, 2016, at 8:53 AM, John Sorkin <jsor...@grecc.umaryland.edu> > wrote: > > > > At the risk of being flamed . . . > > What is the difference between log1p(x) and log(x+1)? > > The two methods appear to give the same results: > >> log1p(0.000001)/log(0.000001+1) > > [1] 1 > > John > > Read the help page more carefully. > > -- > David. > > > > > > John David Sorkin M.D., Ph.D. > > Professor of Medicine > > Chief, Biostatistics and Informatics > > University of Maryland School of Medicine Division of Gerontology and > > Geriatric Medicine > > Baltimore VA Medical Center > > 10 North Greene Street > > GRECC (BT/18/GR) > > Baltimore, MD 21201-1524 > > (Phone) 410-605-7119 > > (Fax) 410-605-7913 (Please call phone number above prior to faxing) > >>>> William Dunlap via R-help <r-help@r-project.org> 12/12/16 11:38 AM > >>>> > > log1p(x), in the base package computes log(1+x) accurately for small x > > (and > > large). > > > > E.g., > >> options(digits=16) > >> base::log1p(1e-14) > > [1] 9.99999999999995e-15 > >> base::log1p(1e-14) - base::log(1+1e-14) > > [1] 7.992778373591124e-18 > >> as.numeric(log(Rmpfr::mpfr(1,precBits=1000) + Rmpfr::mpfr(1e-14, > > precBits=1000))) - log1p(1e-14) > > [1] 0 > > > > > > Bill Dunlap > > TIBCO Software > > wdunlap tibco.com > > > > On Mon, Dec 12, 2016 at 8:23 AM, Faradj Koliev <farad...@gmail.com> > > wrote: > > > >> Hi all, > >> > >> How do I perform log(x+1) in R? > >> > >> log1p_trans() from the package ”scales" doesn’t seem to work for me. > >> > >> Best, > >> Faradj > >> ______________________________________________ > >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> 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. > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > > Confidentiality Statement: > > This email message, including any attachments, is for the sole use of > > the intended recipient(s) and may contain confidential and privileged > > information. Any unauthorized use, disclosure or distribution is > > prohibited. If you are not the intended recipient, please contact the > > sender by reply email and destroy all copies of the original message. > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > > David Winsemius > Alameda, CA, USA > > > > *Confidentiality Statement:* > > This email message, including any attachments, is for ...{{dropped:10}} ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.