product-distribution {codep} | R Documentation |
Frequency Distributions for MCA Parametric Testing
Description
Density and distribution functions of the phi statistic, which is the product of two Fisher-Snedecor distributions or the tau statistic, which is the product of two Student's t distributions.
Usage
dphi(x, nu1, nu2, tol = .Machine$double.eps^0.5)
pphi(q, nu1, nu2, lower.tail = TRUE, tol = .Machine$double.eps^0.5)
dtau(x, nu, tol = .Machine$double.eps^0.5)
ptau(q, nu, lower.tail = TRUE, tol = .Machine$double.eps^0.5)
Arguments
x , q |
A vector of quantile. |
nu1 , nu2 , nu |
Degrees of freedom (>0, may be non-integer; |
tol |
The tolerance used during numerical estimation. |
lower.tail |
Logical; if TRUE (default), probabilities are P[X <= x], otherwise, P[X > x]. |
Details
The density distribution of a variable z
that is the product
of two random variables 'x' and 'y' with density distributions f(x) and g(y),
respectively, is the integral f(x) * g(z/x) / abs(x) dx over the intersection
of the domains of 'x' and 'y'.
dphi
estimates density values using numerical integration
(integrate
) the Fisher-Scedecor df
density
distribution function. Following the algebra of Multiscale Codependence
Analysis, f(x) has df1 = nu1 and df2 = nu1 * nu2 degrees of freedom and g(x)
has 'df1 = 1' and 'df2 = nu2' degrees of freedom. Hence, that product
distribution has two parameters.
pphi
integrates dphi
in the interval [0,q] when
lower.tail = TRUE
(the default) and on the interval [q,Inf
]
when lower.tail = FALSE
.
dtau
and ptau
are similar to dphi
and pphi
,
respectively. pphi
integrates dphi
, with f(x) and f(y) being
two Student's t distribution with nu
degrees of freedom. It is called
by functions test.cdp
and permute.cdp
to perform
hypothesis tests for single response variables, in which case unilateral
tests can be performed.
Value
dphi
and dtau
return the density functions, whereas
pphi
and ptau
return the distribution functions.
Functions
-
dphi()
: Probability density function for the phi statistics -
pphi()
: Distribution function for the phi statistics -
dtau()
: Probability density function for the tau statistics -
ptau()
: Distribution function for the tau statistics
Author(s)
Guillaume Guenard and Pierre Legendre, Bertrand Pages Maintainer: Guillaume Guenard <guillaume.guenard@gmail.com>
References
Springer, M. D. 1979. The algebra of random variables. John Wiley and Sons Inc., Hoboken, NJ, USA.
Guénard, G., Legendre, P., Boisclair, D., and Bilodeau, M. 2010. Multiscale codependence analysis: an integrated approach to analyse relationships across scales. Ecology 91: 2952-2964
Guénard, G. Legendre, P. 2018. Bringing multivariate support to multiscale codependence analysis: Assessing the drivers of community structure across spatial scales. Meth. Ecol. Evol. 9: 292-304
See Also
Examples
### Displays the phi probability distribution for five different numbers
### of degrees of freedom:
x <- 10^seq(-4, 0.5, 0.05)
plot(y = dphi(x, 1, 10), x = x, type = "l", col = "black", las = 1,
ylab = "pdf", ylim = c(0, 0.5))
lines(y = dphi(x, 3, 10), x = x, col = "purple")
lines(y = dphi(x, 5, 70), x = x, col = "blue")
lines(y = dphi(x, 12, 23), x = x, col = "green")
lines(y = dphi(x, 35, 140), x = x, col = "red")
### Displays the density distribution function for 10 degrees of freedom.
x <- 10^seq(-4, 0.5, 0.05)
y <- dphi(x, 5, 70)
plot(y = y, x = x, type = "l", col = "black", las = 1, ylab = "Density",
ylim = c(0, 0.5))
polygon(x = c(x[81L:91], x[length(x)], 1), y = c(y[81L:91], 0, 0),
col = "grey")
text(round(pphi(1, 5, 70, lower.tail=FALSE), 3), x = 1.75, y = 0.05)
## Idem for the tau distribution:
x <- c(-(10^seq(0.5, -4, -0.05)), 10^seq(-4, 0.5, 0.05))
plot(y = dtau(x, 1), x = x, type = "l", col = "black", las = 1,
ylab = "pdf", ylim = c(0, 0.5))
lines(y = dtau(x, 2), x = x, col = "purple")
lines(y = dtau(x, 5), x = x, col="blue")
lines(y = dtau(x, 10), x = x, col="green")
lines(y = dtau(x, 100), x = x, col="red")
y <- dtau(x, 10)
plot(y = y, x = x, type = "l", col = "black", las = 1, ylab = "Density",
ylim = c(0, 0.5))
polygon(x = c(x[which(x==1):length(x)], x[length(x)],1),
y = c(y[which(x==1):length(x)], 0, 0), col = "grey")
text(round(ptau(1, 10, lower.tail = FALSE), 3), x = 1.5, y = 0.03)
polygon(x = c(-1, x[1L], x[1L:which(x==-1)]),
y = c(0, 0, y[1L:which(x==-1)]), col="grey")
text(round(ptau(-1, 10), 3), x = -1.5, y = 0.03)