Re: A very small p-value

Martin Maechler <[email protected]>
Newsgroups gmane.comp.lang.r.general
Message-ID <[email protected]>
>>>>> Christophe Dutang 
>>>>>     on Sat, 25 Oct 2025 11:45:42 +0200 writes:

    > Dear list,
    > I'm computing a p-value for the Student test and discover some inconsistencies with the cdf pt().

    > The observed statistic is 11.23995 for 95 observations, so the p-value is very small

    >> t_score <- 11.23995
    >> n <- 95
    >> print(pt(t_score, df = n-2, lower=FALSE), digits=22)
    > [1] 2.539746620181247991746e-19
    >> print(integrate(dt, lower=t_score, upper=Inf, df=n-2)$value, digits = 22)
    > [1] 2.539746631161970791961e-19

    > But if I compute with pt(lower=TRUE), I got 0

    >> print(1-pt(t_score, df = n-2, lower=TRUE), digits=22)
    > [1] 0

    > Indeed, the p-value is lower than the epsilon machine

    >> pt(t_score, df = n-2, lower=FALSE) < .Machine$double.eps
    > [1] TRUE

    > Using the square of t statistic which follows a Fisher distribution, I got the same issue:

    >> print(pf(z, 1, n-2, lower=FALSE), digits=22) 
    > [1] 5.079493240362495983491e-19 
    >> print(integrate(df, lower=z, upper=Inf, df1=1, df2=n-2)$value, digits = 22) 
    > [1] 5.079015231299358486828e-19 
    >> print(1-pf(z, 1, n-2, lower=TRUE), digits=22) 
    > [1] 0
	
    > When using the t.test() function, the p-value is naturally printed : p-value < 2.2e-16.

    > Any comment is welcome. 

    > Christophe 

    >> R.version
    > _                           
    > platform       aarch64-apple-darwin20      
    > arch           aarch64                     
    > os             darwin20                    
    > system         aarch64, darwin20           
    > status                                     
    > major          4                           
    > minor          5.1                         
    > year           2025                        
    > month          06                          
    > day            13                          
    > svn rev        88306                       
    > language       R                           
    > version.string R version 4.5.1 (2025-06-13)
    > nickname       Great Square Root 
    > -------------------------------------------------
    > Christophe DUTANG
    > LJK, Ensimag, Grenoble INP, UGA, France
    > ILB research fellow
    > Web: http://dutangc.free.fr
    > -------------------------------------------------

It seems to me you are wondering about the fact that you cannot
distinguish in double precision
the number 1  from a number that mathematically is
1 - 2.54*10^{-19}.

Are you serious?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.