fitFDist {limma} | R Documentation |
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)
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 |
covariate |
if non- |
winsor.tail.p |
numeric vector of length 1 or 2, giving left and right tail proportions of |
trace |
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 |
scale factor for F-distribution. A vector if |
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 |
prob.outlier |
posterior probability that each case is an outlier relative to the scaled F-distribution with degrees of freedom |
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 |
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. 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
This function is called by squeezeVar
, which in turn is called by ebayes
, eBayes
and treat
.
This function calls trigammaInverse
.
x <- rf(100,df1=8,df2=16) fitFDist(x,df1=8)