美文网首页
数据聚类结果不好怎么办?

数据聚类结果不好怎么办?

作者: KK_f2d5 | 来源:发表于2019-06-19 12:00 被阅读0次

最近一直在处理蛋白质组的数据。遇到一个比较棘手的问题。
一共有3个处理,每个里面有3个重复。我们scale后聚类,发现相同处理的重复不能聚在一起。说明样本数据需要处理一下。
怎么处理呢?
首先我们要明确:

  1. 产生的原因可能是加样量不准。
  2. 一般来说不同处理之间,每个样品只有10%-20%的蛋白量是变化的。剩余80%不变。
  3. 一个样品内部的蛋白量应该服从正态分布。
    所以,我们希望使用均值调整的方式来使得数据ok。采用以下方式:
    1.每个样本内部,计算sd,删除前20%sd的数据,重新计算均值。(其实均值差异不会很大,但我们还是做一下)
  4. 调整样本均值,也就是拉成同一个值。如果log过了,就加减,没log过,乘除。
  5. 之后,我们用了anova,limma,ttest分别计算。取前200画热图。(差异大才好聚类呀)
#t test find differently expressed genes between CAL and KO

ttest_fun<-function(x)
{
  
  factor_ttest = c(rep("cal",3),rep("ko",3))
  data.ttest=data.frame(y=x,group=factor(factor_aov))   
  fit<-t.test(x~group,data=data.ttest)
  pval<-fit$p.value
}

ttest_pvalues<-apply(data_all_recal[,1:6],1,ttest_fun)
data_draw_ttest<-data_all_recal[order(ttest_pvalues,decreasing = FALSE)[1:200],]
heatmap.2(as.matrix(data_draw_ttest), col="redblue", scale="row",tracecol="blue",dendrogram ="column",trace = "none",density.info = "none")
dev.off()


#limma
library(limma)
factors<-c(rep("cal",3),rep("ko",3))
design<-model.matrix(~0+factors)
colnames(design)<-gsub("factors","",colnames(design))
contr.matrix<-makeContrasts(
  calvsko=cal-ko,
  levels=colnames(design)
)

vfit<-lmFit(data_all_recal[,1:6],design)
vfit<-contrasts.fit(vfit,contrasts = contr.matrix)
efit<-eBayes(vfit)
plotSA(efit)
limma_pvalues<-efit$p.value
data_draw_limma<-data_all_recal[order(limma_pvalues,decreasing = FALSE)[1:200],]
heatmap.2(as.matrix(data_draw_limma), col="redblue", scale="row",tracecol="blue",dendrogram ="column",trace = "none",density.info = "none")
dev.off()

#anova
anova_fun<-function(x)
{
  
  factor_aov = c(rep("cal",3),rep("ko",3),rep("neg",3))
  data.anova=data.frame(y=x,group=factor(factor_aov))   
  fit<-(aov(x~group,data=data.anova))
  fit_summary<-summary(fit)
  res1<-fit_summary[[1]]$`Pr(>F)`[1]
  #T_posthoc<-TukeyHSD(fit)
  
}
anova_pvalue<-apply(data_all_recal,1,anova_fun)
write.csv(anova_pvalue,file = "pvalues.csv")


#anova_pvalue<-apply(data_all_recal,1,anova_fun)
data_draw<-data_all_recal[order(anova_pvalue,decreasing = FALSE)[1:300],]
heatmap.2(as.matrix(data_draw), col="redblue", scale="row",tracecol="blue",dendrogram ="column",trace = "none",density.info = "none")
dev.off()

相关文章

网友评论

      本文标题:数据聚类结果不好怎么办?

      本文链接:https://www.haomeiwen.com/subject/hdvhqctx.html