t分布のパーセント点     Last modified: May 15, 2002

 自由度 df のt分布において,両側確率が p に対するパーセント点を与える関数です。


# t分布のパーセント点を求める。

function pxt(p0, idf,     p9, u, u2, xl, xm, xr, ok)
{
   ok = 0
   
   if (p0 == 1) {
       return 0
   }
   
   xl = 0
   xr = 10
   while (xr < 1e30) {
       p9 = txp(xr, idf)
       if (p9 == p0) {
           return xr
       }
       else if (p9 < p0) {
           ok = 1
           break
       }
       xl = xr
       xr *= 10
   }
   
   if (ok == 0) {
       fprintf "pxt(1): 近似計算を行いました。" > "/dev/stderr"
       u = pxg(p0/2)
       u2 = u*u
       return u + ((u2+1.0)*u)/(4.0*idf)
              + (((5*u2+16)*u2+3)*u)/(96*idf^2)
              + ((((3*u2+19)*u2+17)*u2-15)*u)/(384*idf^3)
   }
   else {
       do {
           xm = (xl+xr)*0.5
           p9 = txp(xm, idf)
           if (p9 > p0) {
               xl = xm
           }
           else {
               xr = xm
           }
       } while (abs(xr-xl)/xm > 1e-10)
       return xm
   }
}

・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI