weightedPearsonCorr: weightedPearsonCorr

Description Usage Arguments Value Author(s) See Also Examples

View source: R/weightedPearsonCorr.R

Description

weightedPearsonCorr caculates the weighted Pearson correlation

Usage

1
weightedPearsonCorr(x, y, w = rep(1, nrow(x))/nrow(x))

Arguments

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

Value

a matrix of numeric values in the size of featureA*featureB, indicating the weighted Pearson correlation coefficients

Author(s)

Shijia Zhu, shijia.zhu@mssm.edu

See Also

orderedIntersect; matrixPval;

Examples

 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
# 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 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 simple linear 
# regression-based enrichment analysis
data <- data.frame(gene,fc,weights)
head(data)

net <- MSigDB.KEGG.Pathway$net

# intersect the imputed 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) )

# calculate the weighted Pearson correlation
observedCorr = weightedPearsonCorr( x=net2 , y=data2$fc, w=data2$weights )

# calculate the p values of the weighted Pearson correlation
observedPval = matrixPval( observedCorr, df=sum(weights>0,na.rm=TRUE)-2 )

res = data.frame( observedCorr , observedPval )
head(res)

GIGSEA documentation built on Nov. 8, 2020, 7:02 p.m.