美文网首页
R: wilxocon Z-score

R: wilxocon Z-score

作者: 胡童远 | 来源:发表于2022-05-02 21:18 被阅读0次

    rcompanion包中的wilcoxonZ函数提供计算两组wilcoxon检验Z-score计算方法,sign函数可以返回值的正负,-1或1,wilcox.test则进行检验获得p value。

    R文档:https://rdrr.io/cran/rcompanion/man/wilcoxonZ.html

    wilcoxonZ参数:


    wilcox.test参数:

    exact: a logical indicating whether an exact p-value should be computed.
    correct: a logical indicating whether to apply continuity correction in the normal approximation for the p-value.
    

    使用
    两组wilcoxon比较计算z-score和p value

    setwd("analysis_ding/06.FunctionPrediction/03_wilcoxon/")
    
    df = read.table("t_input.txt", header=T, sep="\t", row.names=1)
    # z-score数据标准化
    # df = cbind(data.frame(Group=df$Group), scale(df[, 2:ncol(df)]))
    # 抽提
    BC = df[which(df$Group=="BC"), c(2:ncol(df))]
    JZ = df[which(df$Group=="JZ"), c(2:ncol(df))]
    KC = df[which(df$Group=="KC"), c(2:ncol(df))]
    SAP = df[which(df$Group=="SAP"), c(2:ncol(df))]
    # control
    CK = df[which(df$Group=="CK"), c(2:ncol(df))]
    
    # wilcoxon比较
    # 函数,计算z-score,wilcoxon p value
    library("rcompanion")
    fun_zp <- function(v1, v2)
    {
        z = as.numeric(wilcoxonZ(v1, v2, exact=FALSE, correct=FALSE))
        wil = wilcox.test(v1, v2, exact=FALSE, correct=FALSE)
        return(c(z, wil$p.value))
    }
    
    # analysis
    length = ncol(BC)
    #3.1 BC_CK
    #fun_zp(BC[,1], CK[,1])
    data = BC
    mark = c()
    zscore = c()
    pvalue = c()
    for(i in 1:length)
    {
        res = fun_zp(data[,i], CK[,i])
        mark = c(mark, colnames(CK)[i])
        zscore = c(zscore, res[1])
        pvalue = c(pvalue, res[2])
    }
    res_BC = data.frame(mark=mark,zscore=zscore,pvalue=pvalue)
    #3.2 JZ_CK
    data = JZ
    mark = c()
    zscore = c()
    pvalue = c()
    for(i in 1:length)
    {
        res = fun_zp(data[,i], CK[,i])
        mark = c(mark, colnames(CK)[i])
        zscore = c(zscore, res[1])
        pvalue = c(pvalue, res[2])
    }
    res_JZ = data.frame(mark=mark,zscore=zscore,pvalue=pvalue)
    #3.3 KC_CK
    data = KC
    mark = c()
    zscore = c()
    pvalue = c()
    for(i in 1:length)
    {
        res = fun_zp(data[,i], CK[,i])
        mark = c(mark, colnames(CK)[i])
        zscore = c(zscore, res[1])
        pvalue = c(pvalue, res[2])
    }
    res_KC = data.frame(mark=mark,zscore=zscore,pvalue=pvalue)
    #3.4 SAP_CK
    data = SAP
    mark = c()
    zscore = c()
    pvalue = c()
    for(i in 1:length)
    {
        res = fun_zp(data[,i], CK[,i])
        mark = c(mark, colnames(CK)[i])
        zscore = c(zscore, res[1])
        pvalue = c(pvalue, res[2])
    }
    res_SAP = data.frame(mark=mark,zscore=zscore,pvalue=pvalue)
    
    ## 整理结果数据
    res_BC
    res_JZ
    res_KC
    res_SAP
    
    markdown = c()
    signif = res_BC[which(res_BC$pvalue <= 0.05),]
    markdown = c(markdown, signif$mark)
    signif = res_BC[which(res_JZ$pvalue <= 0.05),]
    markdown = c(markdown, signif$mark)
    signif = res_BC[which(res_KC$pvalue <= 0.05),]
    markdown = c(markdown, signif$mark)
    signif = res_BC[which(res_SAP$pvalue <= 0.05),]
    markdown = c(markdown, signif$mark)
    
    # 各组比较都显著的target
    out = data.frame(table(markdown))
    out = out[which(out$Freq==4),]
    target = as.character(out$mark)
    
    # 提取target的zscore和pvalue绘图
    res_BC
    res_JZ
    res_KC
    res_SAP
    
    input_BC = res_BC[which(res_BC$mark%in%target),]
    input_JZ = res_JZ[which(res_JZ$mark%in%target),]
    input_KC = res_KC[which(res_KC$mark%in%target),]
    input_SAP = res_SAP[which(res_SAP$mark%in%target),]
    
    input = input_BC
    input = input_JZ
    input = input_KC
    input = input_SAP
    #
    input$sign = as.character(sign(input$zscore))
    
    #library("ggplot2")
    p=
    ggplot(input, aes(x=mark, y=zscore, fill=sign)) +
      geom_col(color=NA, width=0.3) +
      scale_fill_manual(
          values = c("-1" = "deepskyblue3", "1" = "indianred3")) +
      labs(x="", y="Z-score") +
      theme_classic() +
      theme(axis.title = element_text(size = 18),
            axis.text = element_text(size = 12),
            axis.line = element_line(size = 1),
            axis.ticks = element_line(size = 1)) +
      coord_flip() +
      scale_y_continuous(limits = c(-8, 8), 
                         expand = c(0, 0), 
                         breaks = c(-4, -2, 0, 2, 4)) +
      geom_hline(yintercept = -1.96, size=0.8, linetype="dashed") +
      geom_hline(yintercept = 1.96, size=0.8, linetype="dashed") +
      geom_hline(yintercept = 0, size=0.8)
    #
    ggsave(p, file="wilcoxon_BC.pdf", width=14)
    ggsave(p, file="wilcoxon_JZ.pdf", width=14)
    ggsave(p, file="wilcoxon_KC.pdf", width=14)
    ggsave(p, file="wilcoxon_SAP.pdf", width=14)
    

    更多
    How to get the z- score in Wilcox test in R
    揭著业 NC 冠心病META 2017

    相关文章

      网友评论

          本文标题:R: wilxocon Z-score

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