自由度 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 } }