fitfdist: Moment Estimation of Scaled F-Distribution

Description Usage Arguments Details Value Note Author(s) References See Also Examples


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.


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



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


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


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


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


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


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.


fitFDist produces a list with the following components:


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


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

fitFDistRobustly returns the following components as well:


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


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


the second degrees of freedom associated with extreme outlier cases.


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.


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.


Gordon Smyth and Belinda Phipson


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.

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.

See Also

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

This function calls trigammaInverse.


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

Example output

[1] 0.9770214

[1] 17.14126

limma documentation built on Nov. 8, 2020, 8:28 p.m.