Home  /  Resources & support  /  FAQs  /  Obtaining one-tailed probabilities for t distribution
Note: This FAQ is for users of Stata 6. It is not relevant for more recent versions.

Stata 6: How can I get one-tailed probabilities for the Student’s t distribution?

Title   Stata 6: Obtaining one-tailed probabilities for the t distribution
Author James Hardin, StataCorp

The tprob and invt functions both return values based on a two-tailed approach. If you want the output of tprob based on one tail (the usual cumulative distribution approach) then it depends on whether the statistic is negative or positive:

        . local p1 = 1 - tprob(15,1.6)/2
      
        . di "The value of t(1.6) with 15 degrees of freedom is " 'p1'
        The value of t(1.6) with 15 degrees of freedom is .93477749
      
        . local p2 = tprob(61,-1.96)/2
      
        . di "The value of t(-1.96) with 61 degrees of freedom is " 'p2'
        The value of t(-1.96) with 61 degrees of freedom is .02728415

You can write a function to calculate this using cond as in

        . local t = 1.65
        
        . local df = 22
      
        . local qt = cond('t'<=0,tprob('df','t')/2,1-tprob('df','t')/2)
      
        . di 'qt'
        .94342544

Similarly, when using the invt function you must also make an adjustment in order to calculate the usual quantile function. To get a random sample of values from the t-distribution with 8 degrees of freedom, you could do the following

        . gen u = uniform()
       
        . gen tsamp = cond(u<.5,-invt(8,1-2*u),invt(8,2*u-1))