Description Usage Arguments Value Author(s) See Also Examples
View source: R/weightedMultipleLm.R
weightedMultipleLm solves the weighted multiple linear regression model via matrix operation
1 | weightedMultipleLm(x, y, w = rep(1, nrow(x))/nrow(x))
|
x |
a matrix of numeric values in the size of genes x featureA |
y |
a matrix of numeric values in the size of genes x featureB |
w |
a vector of numeric values indicating the weights of genes |
a matrix of numeric values in the size of featureA*featureB, indicating the weighted multiple regression coefficients
Shijia Zhu, shijia.zhu@mssm.edu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # load data
data(heart.metaXcan)
gene <- heart.metaXcan$gene_name
# extract the imputed Z-score of gene differential expression, which follows
# the normal distribution
fc <- heart.metaXcan$zscore
# use as weights the prediction R^2 and the fraction of imputation-used SNPs
usedFrac <- heart.metaXcan$n_snps_used / heart.metaXcan$n_snps_in_cov
r2 <- heart.metaXcan$pred_perf_r2
weights <- usedFrac*r2
# build a new data frame for the following weighted linear regression-based
# enrichment analysis
data <- data.frame(gene,fc,weights)
head(data)
net <- MSigDB.KEGG.Pathway$net
# intersect the permuated genes with the gene sets of interest
data2 <- orderedIntersect( x = data , by.x = data$gene ,
by.y = rownames(net) )
net2 <- orderedIntersect( x = net , by.x = rownames(net) ,
by.y = data$gene )
all( rownames(net2) == as.character(data2$gene) )
# perform the weighted multiple linear regression
observedTstats = weightedMultipleLm( x=net2 , y=data2$fc, w=data2$weights )
# calculate the p values of the weighted multiple regression coefficients
observedPval = 2 * pt(abs(observedTstats), df=sum(weights>0,na.rm=TRUE)-2,
lower.tail=FALSE)
res = data.frame( observedTstats , observedPval )
head(res)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.