fitFDist {limma}R Documentation

Moment Estimation of Scaled F-Distribution

Description

Moment estimation of the parameters of a scaled F-distribution given one of the degrees of freedom. This function is called internally by eBayes and squeezeVar and is not usually called directly by a user.

Usage

fitFDist(x, df1, covariate=NULL)
fitFDistRobustly(x, df1, covariate=NULL, winsor.tail.p=c(0.05,0.1), trace=FALSE)

Arguments

x

numeric vector or array of positive values representing a sample from a scaled F-distribution.

df1

the first degrees of freedom of the F-distribution. Can be a single value, or else a vector of the same length as x.

covariate

if non-NULL, the estimated scale value will depend on this numeric covariate.

winsor.tail.p

numeric vector of length 1 or 2, giving left and right tail proportions of x to Winsorize.

trace

logical value indicating whether a trace of the iteration progress should be printed.

Details

fitFDist implements an algorithm proposed by Smyth (2004) and Phipson et al (2016). It estimates scale and df2 under the assumption that x is distributed as scale times an F-distributed random variable on df1 and df2 degrees of freedom. The parameters are estimated using the method of moments, specifically from the mean and variance of the x values on the log-scale.

When covariate is supplied, a spline curve trend will be estimated for the x values and the estimation will be adjusted for this trend (Phipson et al, 2016).

fitFDistRobustly is similar to fitFDist except that it computes the moments of the Winsorized values of x, making it robust against left and right outliers. Larger values for winsor.tail.p produce more robustness but less efficiency. When covariate is supplied, a loess trend is estimated for the x values. The robust method is described by Phipson et al (2016).

As well as estimating the F-distribution for the bulk of the cases, i.e., with outliers discounted, fitFDistRobustly also returns an estimated F-distribution with reduced df2 that might be appropriate for each outlier case.

Value

fitFDist produces a list with the following components:

scale

scale factor for F-distribution. A vector if covariate is non-NULL, otherwise a scalar.

df2

the second degrees of freedom of the fitted F-distribution.

fitFDistRobustly returns the following components as well:

tail.p.value

right tail probability of the scaled F-distribution for each x value.

prob.outlier

posterior probability that each case is an outlier relative to the scaled F-distribution with degrees of freedom df1 and df2.

df2.outlier

the second degrees of freedom associated with extreme outlier cases.

df2.shrunk

numeric vector of values for the second degrees of freedom, with shrunk values for outliers. Most values are equal to df2, but outliers have reduced values depending on how extreme each case is. All values lie between df2.outlier and df2.

Note

The algorithm used by fitFDistRobustly was revised slightly in limma 3.27.6. The prob.outlier value, which is the lower bound for df2.shrunk, may be slightly smaller than previously.

Author(s)

Gordon Smyth and Belinda Phipson

References

Smyth, G. K. (2004). Linear models and empirical Bayes methods for assessing differential expression in microarray experiments. Statistical Applications in Genetics and Molecular Biology, 3, No. 1, Article 3. http://www.statsci.org/smyth/pubs/ebayes.pdf

Phipson, B, Lee, S, Majewski, IJ, Alexander, WS, and Smyth, GK (2016). Robust hyperparameter estimation protects against hypervariable genes and improves power to detect differential expression. Annals of Applied Statistics 10, 946-963. http://projecteuclid.org/euclid.aoas/1469199900

See Also

This function is called by squeezeVar, which in turn is called by ebayes, eBayes and treat.

This function calls trigammaInverse.

Examples

x <- rf(100,df1=8,df2=16)
fitFDist(x,df1=8)

[Package limma version 3.34.5 Index]