[R] Log plus one transformation in R

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Mon Dec 12 18:58:08 CET 2016


Numerical accuracy in floating point math is a much broader discussion than R, but [1] seems to summarize it reasonably well. There are whole courses on this topic at university. 

[1] http://www.johndcook.com/blog/2010/06/07/math-library-functions-that-seem-unnecessary/
-- 
Sent from my phone. Please excuse my brevity.

On December 12, 2016 9:26:17 AM PST, John Sorkin <jsorkin at 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 <dwinsemius at comcast.net> 12/12/16 12:05 PM >>>
>
>> On Dec 12, 2016, at 8:53 AM, John Sorkin
><jsorkin at 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 at 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 <faradj.g at 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 at 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 at 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 at 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
>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 at 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.



More information about the R-help mailing list