From @okol @ending from in@@-toulou@e@fr  Tue Dec  4 11:46:32 2018
From: @okol @ending from in@@-toulou@e@fr (Serguei Sokol)
Date: Tue, 4 Dec 2018 11:46:32 +0100
Subject: [Rd] Bug report: Function ppois(0:20,
 lambda=0.9) does not generate a non-decreasing result.
In-Reply-To: <CALEXWq1WFLzQBgm8oF1myry25DZEyEA_jT3kFEnLYP55-06QKg@mail.gmail.com>
References: <f49f51f.a07fd.16774649817.Coremail.qweytr1@mail.ustc.edu.cn>
 <CALEXWq1WFLzQBgm8oF1myry25DZEyEA_jT3kFEnLYP55-06QKg@mail.gmail.com>
Message-ID: <2787db5d-a009-40f5-bea6-8ddb10b10a50@insa-toulouse.fr>

Le 04/12/2018 ? 11:27, I?aki Ucar a ?crit?:
> On Tue, 4 Dec 2018 at 11:12, <qweytr1 at mail.ustc.edu.cn> wrote:
>> function ppois is a function calculate the CDF of Poisson distribution, it should generate a non-decreasing result, but what I got is:
>>
>>> any(diff(ppois(0:19,lambda=0.9))<0)
>> [1] TRUE
>>
>> Actually,
>>
>>> ppois(19,lambda=0.9)<ppois(18,lambda=0.9)
>> [1] TRUE
>>
>> Which could not be TRUE.
> This is just another manifestation of
>
> 0.1 * 3 > 0.3
> #> [1] TRUE
>
> This discussion returns to this list from time to time. TLDR; this is
> not an R issue, but an unavoidable floating point issue.
Well, here the request may be interpreted not as "do it without round 
error" which is indeed unavoidable but rather "please cope with rounding 
errors in a way that return consistent result for ppois()". You have 
indicated one way to do so (I have just added exp() in the row):

any(diff(exp(ppois(0:19, lambda=0.9, log.p=TRUE))) < 0)
#[1] FALSE

But may be there is another, more economic way?

Serguei.

>   Solution:
> work with log-probabilities instead.
>
> any(diff(ppois(0:40, lambda=0.9, log.p=TRUE))<0)
> #> [1] FALSE
>
> I?aki
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>


-- 
Serguei Sokol
Ingenieur de recherche INRA

Cellule math?matiques
LISBP, INSA/INRA UMR 792, INSA/CNRS UMR 5504
135 Avenue de Rangueil
31077 Toulouse Cedex 04

tel: +33 5 62 25 01 27
email: sokol at insa-toulouse.fr
http://www.lisbp.fr



[Rd] Bug report: Function ppois(0:20, lambda=0.9) does not generate a non-decreasing result.
Serguei Sokol