自由度 df1, df2 のF分布において,上側確率が p に対するパーセント点を与える関数です。
# F分布のパーセント点を求める。 function pxf(p0, df1, df2, p9, xl, xm, xr, c, temp, ok) { ok = 0 xl = 0 xr = 10 while (xr < 1e30) { p9 = fxp(xr, df1, df2) if (p9 == p0) { return xr } else if (p9 < p0) { ok = 1 break } xl = xr xr *= 10 } if (ok == 0) { if (df1 > df2) { temp = df1 df1 = df2 df2 = temp p0 = 1-p0 ok = 1 } if (df1 == 1) { c = pxt(p0, df2) c = c*c } else { temp = df1-2.0 printf "pxf(1): 近似計算を行いました。" > "/dev/stderr" c = pxx(p0, df1) c = c/df1*(1+ (c-temp)*0.5/df2 + (4*c*c-11*temp*c \ +temp*(7*df1-10))/(24*df2^2)+(2*c^3-10*temp*c*c \ +temp*(17*df1-26)*c-(df1-2)*temp*(9*df1-6))/(48*df2^3)) } return (ok == 1 && c != 0) ? 1/c : c } do { xm = (xl+xr)*0.5 p9 = fxp(xm, df1, df2) if (p9 > p0) { xl = xm } else { xr = xm } } while (abs(xr-xl)/xm > 1e-10) return xm }