FDist {stats} | R Documentation |
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
).
df(x, df1, df2, log = FALSE) pf(q, df1, df2, ncp=0, lower.tail = TRUE, log.p = FALSE) qf(p, df1, df2, lower.tail = TRUE, log.p = FALSE) rf(n, df1, df2)
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. |
log, log.p |
logical; if TRUE, probabilities p are given as log(p). |
lower.tail |
logical; if TRUE (default), probabilities are P[X <= x], otherwise, P[X > x]. |
The F distribution with df1 =
n1 and df2 =
n2 degrees of freedom has density
f(x) = Gamma((n1 + n2)/2) / (Gamma(n1/2) Gamma(n2/2)) (n1/n2)^(n1/2) x^(n1/2 - 1) (1 + (n1/n2) x)^-(n1 + n2)/2
for x > 0.
It is the distribution of the ratio of the mean squares of n1 and n2 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.
df
gives the density,
pf
gives the distribution function
qf
gives the quantile function, and
rf
generates random deviates.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
dchisq
for chi-squared and dt
for Student's
t distributions.
## 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} x <- seq(0.001, 5, len=100) 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)))) quantile(rel.err(qf(2*p - 1, df1=1, df2=df), qt(p, df)^2), .90)# ~= 7e-9