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

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

作者: 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