2016-10-13 5 views
1

두 데이터 프레임이 있는데이 두 데이터 프레임 (유전자 대 단백질)의 행 사이의 상관 관계를 그래픽으로 (분산 형 플롯) 표시하여 각 행이 연관되어 있는지 확인하고 싶습니다. 따라서 다음 두 가지 전략을 사용할 수 있습니다. 1. 데이터 프레임 간 선형 회귀 (방법 모름) 2. 열 간의 평균 (및 표준 편차)을 사용하는 두 사람 간의 상관 관계.여러 열이있는 두 데이터 프레임 간의 관계 또는 상관 관계

그래프를 디자인하는 데 도움이 될만한 사람이 있습니까?

genes <- "gene sample1 sample2 sample3 sample4 
gene1 1863.4 1972.94 1603.96 1185.6 
gene2 213.88 247.14 189.02 208.793 
gene3 8.06 9.25 9.59 7.33 
gene4 22.36 3.76 10.64 19.17" 
genes<-read.table(text=genes,header=T) 

protein <- "protein sample1 sample2 sample3 sample4 
protein1 314.2871797 426.8856595 405.7971059 334.1369651 
protein2 4747.866647 3070.916824 2780.352062 2990.085431 
protein3 1621.566329 1290.470104 1554.27426 1601.357345 
pretein4 8832.210499 7796.675008 8461.733171 9500.429355" 
protein<-read.table(text=protein,header=T) 

이 열 중 하나 개 세트의 당신에게

+0

출발점 : 데이터 <- cbind (유전자, 단백질) 플롯 (데이터를) – AidanGawronski

답변

1

나는 나에 의해 긍정적으로 득점 한 답변을 주셔서 감사합니다, 또한 다음과 같은 트릭을 해결하기 위해 나를 도와 :

#using the exemple data 


#getting the individuals average: 
mRNA_expression<- data.frame(genes=genes[,1], Means=rowMeans(genes[,-1])) 
Protein_abundance<- data.frame(protein=protein[,1], Means=rowMeans(protein[,-1])) 

#merging both to do the correlation graph 
mean_corr <- data.frame(mRNA_expression[,2],Protein_abundance[,2]) 
names(mean_corr) <- c("mRNA_expression","Protein_abundance") 

#deleting NA lines 
mean_corr <- mean_corr[complete.cases(mean_corr),] 

#appling log10 
mean_corr <- log10 (mean_corr) 

library(ggplot2) 

#to check the distribution 
ggplot(mean_corr, aes(x=Protein_abundance, y=mRNA_expression)) + labs(x = "Protein abundance (log10)", y = "mRNA expression (log10)") + theme(axis.title.y=element_text(margin=margin(0,10,0,0))) + theme(axis.title.x=element_text(margin=margin(10,0,0,0))) + 
    geom_point(shape=1) # Use hollow circles 
#Different kind of plots:: 

ggplot(mean_corr, aes(x=Protein_abundance, y=mRNA_expression)) + labs(x = "Protein abundance (log10)", y = "mRNA expression (log10)") + theme(axis.title.y=element_text(margin=margin(0,10,0,0))) + theme(axis.title.x=element_text(margin=margin(10,0,0,0))) + 
    geom_point(shape=1) + # Use hollow circles 
    geom_smooth(method=lm) # Add linear regression line 
# (by default includes 95% confidence region) 

ggplot(mean_corr, aes(x=Protein_abundance, y=mRNA_expression))+ labs(x = "Protein abundance (log10)", y = "mRNA expression (log10)") + theme(axis.title.y=element_text(margin=margin(0,10,0,0))) + theme(axis.title.x=element_text(margin=margin(10,0,0,0))) + 
    geom_point(shape=1) + # Use hollow circles 
    geom_smooth(method=lm, # Add linear regression line 
       se=FALSE) # Don't add shaded confidence region 

ggplot(mean_corr, aes(x=Protein_abundance, y=mRNA_expression)) + labs(x = "Protein abundance (log10)", y = "mRNA expression (log10)") + theme(axis.title.y=element_text(margin=margin(0,10,0,0))) + theme(axis.title.x=element_text(margin=margin(10,0,0,0))) + 
    geom_point(shape=1) + # Use hollow circles 
    geom_smooth()   # Add a loess smoothed fit curve with confidence region 

#statistics 
#to check the correlation 
cor(mean_corr) 

#linear regression 
#lm(genes_mean ~ protein$mean, data=mean_corr) 
lm(Protein_abundance ~ mRNA_expression, data=mean_corr) 
1

감사 : 여기

내 데이터의 exemple입니다 회귀에 관해서는

data <- data.frame(genes[,2],protein[,2]) 
names(data) <- c("genes_sample1", "protein_sample1") 
plot(data) 
abline(lm(genes_sample1 ~ protein_sample1, data=data)) 

cor(data) 
       genes_sample1 protein_sample1 
genes_sample1  1.0000000  -0.6247528 
protein_sample1 -0.6247528  1.0000000 
1
rownames(protein) <- protein$protein 
protein_t <- as.data.frame(t(as.matrix(protein[, - 1]))) 
rownames(genes) <- genes$gene 
genes_t <- as.data.frame(t(as.matrix(genes[, - 1]))) 
cor(protein_t, genes_t, method = "pearson") 
plot(cbind(protein_t, genes_t)) 

, 나는 당신이 원하는 것 같아요 각 단백질에 대해 모든 유전자에 대한 표현을 연결하는 회귀 (regression)가 있으므로 다음과 같이 진행합니다 :

lapply(protein_t, function(protein) lm(protein ~ ., data = cbind(genes_t, protein = protein)))