
Last chance! 50% off unlimited learning
Sale ends in
df1
and df2
degrees of freedom (and optional non-centrality parameter ncp
).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)
length(n) > 1
, the length
is taken to be the number required.Inf
is allowed.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.
df1 =
$n_1$ and df2 =
$n_2$ degrees of freedom has density
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.
Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, volume 2, chapters 27 and 30. Wiley, New York.
dchisq
for chi-squared and dt
for Student's
t distributions.## 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))))
quantile(rel.err(qf(2*p - 1, df1 = 1, df2 = df), qt(p, df)^2), .90) # ~= 7e-9
Run the code above in your browser using DataLab