Last chance! 50% off unlimited learning
Sale ends in
lmPerGene
fits the same, user-specified linear model.
It returns the estimates of the model parameters and their variances
for each fitted model. The function uses matrix algebra so it is much
faster than repeated calls to lm
.
lmPerGene(eSet, formula, na.rm=TRUE,pooled=FALSE)
ExpressionSet
object.formula
(or one that can be coerced to
that class), specifying only the right-hand side starting with
the '~' symbol. The LHS is automatically set as the expression
levels provided in eSet
. The names of all predictors must
exist in the phenotypic data of eSet
.ExpressionSet
used in the model fitting.p
by G
containing the estimated model parameters.n - p
.p
by G
containing
the estimated variances for the model parameters, for each regression.coefficients
,
containing the $t$-statistics for each model estimate. This is simply
coefficients
divided by the square root of coef.var
,
and is provided for convenience.G
genes, on n
samples, and that there are p
variables in
the regression equation. So the result is that G
different regressions
are computed, and various summary statistics are returned. Since the independent variables are the same in each model fitting,
instead of repeatedly fitting linear model for each gene,
lmPerGene
accelarates the fitting process by calculating the
hat matrix $X(X'X)^(-1)X'$ first. Then matrix multiplication, and
solve
are to compute estimates of the model parameters.
Leaving the formula blank (the default) will calculate an intercept-only model, useful for generic pattern and outlier identification.
getResidPerGene
to extract row-by-row residuals; gsealmPerm
for
code that utilizes 'lmPerGene' for gene-set-enrichment analysis (GSEA); and CooksDPerGene
for diagnostic functions on
an object produced by 'lmPerGene'. Applying a by-gene regression in
the manner performed here is a special case of a more generic
linear-model framework available in the GlobalAncova
package; our assumption here is equivalent to a diagonal covariance structure
between genes, with unequal variances.data(sample.ExpressionSet)
layout(1)
lm1 = lmPerGene(sample.ExpressionSet,~sex)
qqnorm(lm1$coefficients[2,]/sqrt(lm1$coef.var[2,]),main="Sample Dataset: Sex Effect by Gene",ylab="Individual Gene t-statistic",xlab="Normal Quantile")
abline(0,1,col=2)
lm2 = lmPerGene(sample.ExpressionSet,~type+sex)
qqnorm(lm2$coefficients[2,]/sqrt(lm2$coef.var[2,]),main="Sample Dataset: Case vs. Control Effect by Gene, Adjusted for Sex",ylab="Individual Gene t-statistic",xlab="Normal Quantile")
abline(0,1,col=2)
Run the code above in your browser using DataLab