回复 第1楼 的 djgylyf:
这个 qf 是 R 的 Internal 命令。
具体的要看代码,是 C 写的,你真的想看么?
src/nmath/qf.c
src/nmath/qchisq.c
src/nmath/qbeta.c
src/nmath/qgamma.c
个人觉得看这些,不如看统计学的教材。因为你看到的可能是这样的:
</p>
<p> /* calculate the initial approximation */</p>
<p> /* y := {fast approximation of} qnorm(1 - a) :*/<br />
r = sqrt(-2 * log(a));<br />
y = r - (const1 + const2 * r) / (1. + (const3 + const4 * r) * r);<br />
if (pp > 1 && qq > 1) {<br />
r = (y * y - 3.) / 6.;<br />
s = 1. / (pp + pp - 1.);<br />
t = 1. / (qq + qq - 1.);<br />
h = 2. / (s + t);<br />
w = y * sqrt(h + r) / h - (t - s) * (r + 5. / 6. - 2. / (3. * h));<br />
xinbta = pp / (pp + qq * exp(w + w));<br />
} else {<br />
r = qq + qq;<br />
t = 1. / (9. * qq);<br />
t = r * pow(1. - t + y * sqrt(t), 3.0);<br />
if (t <= 0.)<br />
xinbta = 1. - exp((log1p(-a)+ log(qq) + logbeta) / qq);<br />
else {<br />
t = (4. * pp + r - 2.) / t;<br />
if (t <= 1.)<br />
xinbta = exp((log(a * pp) + logbeta) / pp);<br />
else<br />
xinbta = 1. - 2. / (t + 1.);<br />
}<br />
}</p>
<p>
</p>