FDist
The F Distribution
Density, distribution function, quantile function and random
generation for the F distribution with df1
and df2
degrees of freedom (and optional non-centrality parameter ncp
).
- Keywords
- distribution
Usage
df(x, df1, df2, ncp, log = FALSE)
pf(q, df1, df2, ncp, lower.tail = TRUE, log.p = FALSE)
qf(p, df1, df2, ncp, lower.tail = TRUE, log.p = FALSE)
rf(n, df1, df2, ncp)
Arguments
- x, q
vector of quantiles.
- p
vector of probabilities.
- n
number of observations. If
length(n) > 1
, the length is taken to be the number required.- df1, df2
degrees of freedom.
Inf
is allowed.- ncp
non-centrality parameter. If omitted the central F is assumed.
- log, log.p
logical; if TRUE, probabilities p are given as log(p).
- lower.tail
logical; if TRUE (default), probabilities are \(P[X \le x]\), otherwise, \(P[X > x]\).
Details
The F distribution with df1 =
\(n_1\) and df2 =
\(n_2\) degrees of freedom has density
$$
f(x) = \frac{\Gamma(n_1/2 + n_2/2)}{\Gamma(n_1/2)\Gamma(n_2/2)}
\left(\frac{n_1}{n_2}\right)^{n_1/2} x^{n_1/2 -1}
\left(1 + \frac{n_1 x}{n_2}\right)^{-(n_1 + n_2) / 2}%
$$
for \(x > 0\).
It is the distribution of the ratio of the mean squares of \(n_1\) and \(n_2\) independent standard normals, and hence of the ratio of two independent chi-squared variates each divided by its degrees of freedom. Since the ratio of a normal and the root mean-square of \(m\) independent normals has a Student's \(t_m\) distribution, the square of a \(t_m\) variate has a F distribution on 1 and \(m\) degrees of freedom.
The non-central F distribution is again the ratio of mean squares of
independent normals of unit variance, but those in the numerator are
allowed to have non-zero means and ncp
is the sum of squares of
the means. See Chisquare for further details on
non-central distributions.
Value
df
gives the density,
pf
gives the distribution function
qf
gives the quantile function, and
rf
generates random deviates.
Invalid arguments will result in return value NaN
, with a warning.
The length of the result is determined by n
for
rf
, and is the maximum of the lengths of the
numerical arguments for the other functions.
The numerical arguments other than n
are recycled to the
length of the result. Only the first elements of the logical
arguments are used.
Note
Supplying ncp = 0
uses the algorithm for the non-central
distribution, which is not the same algorithm used if ncp
is
omitted. This is to give consistent behaviour in extreme cases with
values of ncp
very near zero.
The code for non-zero ncp
is principally intended to be used
for moderate values of ncp
: it will not be highly accurate,
especially in the tails, for large values.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, volume 2, chapters 27 and 30. Wiley, New York.
See Also
Distributions for other standard distributions, including
dchisq
for chi-squared and dt
for Student's
t distributions.
Examples
library(stats)
# NOT RUN {
## Equivalence of pt(.,nu) with pf(.^2, 1,nu):
x <- seq(0.001, 5, len = 100)
nu <- 4
stopifnot(all.equal(2*pt(x,nu) - 1, pf(x^2, 1,nu)),
## upper tails:
all.equal(2*pt(x, nu, lower=FALSE),
pf(x^2, 1,nu, lower=FALSE)))
## the density of the square of a t_m is 2*dt(x, m)/(2*x)
# check this is the same as the density of F_{1,m}
all.equal(df(x^2, 1, 5), dt(x, 5)/x)
## Identity: qf(2*p - 1, 1, df) == qt(p, df)^2 for p >= 1/2
p <- seq(1/2, .99, length = 50); df <- 10
rel.err <- function(x, y) ifelse(x == y, 0, abs(x-y)/mean(abs(c(x,y))))
# }
# NOT RUN {
quantile(rel.err(qf(2*p - 1, df1 = 1, df2 = df), qt(p, df)^2), .90) # ~= 7e-9
# }