美文网首页gwas
数据分析:数据预处理--缺失值处理(三)

数据分析:数据预处理--缺失值处理(三)

作者: 生信学习者2 | 来源:发表于2021-11-29 17:12 被阅读0次

    前言

    上一篇数据分析:数据预处理--标准化方法优劣了解(二)讲了两类常用标准化方法,但没涉及到如何处理缺失数据。更多知识分享请到 https://zouhua.top/

    标准化

    全局校正(global adjustment)标准化是蛋白质组学中常用的方法之一,它将log化的intensity数据的中心转换成一个常数,这个常数可以是mean、median或者其它数学测量指标。比如Zscore就是将数据中心的mean转换成常数0,且standard variation为1的标准化方法。虽然不全局校正标准化能够有效校正样本间的差异,但不能处理如非线性的偏差。

    Robust scatter plot smoothing 或 lowess regression是另一类标准化方法,limma包的voom函数就使用了该方法。通过线性回归的残差拟合曲线,然后计算每个feature对应的权重值,这作为标准化结果。

    Missing value存在的理由

    蛋白质组的质谱数据的特点是缺失值特别多,产生缺失值的原因有好多:

    1. 蛋白质确实以某个丰度值存在,但检测仪器没有检测出来或者错误检测;

    2. 蛋白质确实以某个丰度值存在,但该丰度值在检测仪的下限之下;

    3. 蛋白质没有存在。

    处理的缺失值的策略有:

    1. 基于第1种情况,可用现有观测值补缺(若缺失率不高,忽略不计也是可以接受的);

    2. 第2, 3种情况补缺失值是需要谨慎的,可能补充的值是不合理的。

    补缺值的方法

    缺失值分类:

    1. missing completely at random (MCAR): 完全随机缺失,检测仪器缺陷等因素导致无法检测。可以通过先验概率分布补缺,比如log2转化的数据一般服从正态分布,可以通过观测值的正态分布的均值和方差imputing missing value。
    1. abundance-dependent missing values:丰度依赖缺失值,在一些样本内能检测到,但其他样本却不可以。截尾数据(censored data)是一个更复杂的问题,因为观测值不是一个很好的估算基础。下图使用最小观测值补充结尾数据。

    缺失值到底是符合MCAR还是censored data呢,可以通过概率模型判断。可阅读文献A statistical framework for protein quantitation in bottom-up MS-based proteomicsBayesian analysis of iTRAQ data with nonrandom missingness: identification of differentially expressed proteins

    R补缺实现

    1. 最近邻方法knn,该方法原理是计算离缺失值最近的k个变量的Euclidean metric欧几里得距离,然后用这k个变量的平均值average value作为缺失值的替代。
    library(missForest)
    library(impute)
    library(dplyr)
    
    iris.mis <- prodNA(iris, noNA = 0.1)
    
    iris.mis.impute.fit <- impute.knn(t(iris.mis[, -5]), k = 10, rowmax = 0.5, colmax = 0.8, maxp = 1500, rng.seed=123)
    iris.mis.impute <- t(iris.mis.impute.fit$data) %>% data.frame() %>% mutate(Species=iris.mis$Species)
    
    summary(iris)
    summary(iris.mis)
    summary(iris.mis.impute)
    

    **Notes: ** 从1st和3rd分位数能看出KNN的补缺效果还不错,但也看到Sepal.Length的最小值补缺前后差距较大。

    1. 其他方法参考Reference 2

    systemic information

    sessionInfo()
    
    R version 4.0.2 (2020-06-22)
    Platform: x86_64-conda_cos6-linux-gnu (64-bit)
    Running under: CentOS Linux 8 (Core)
    
    Matrix products: default
    BLAS/LAPACK: /disk/share/anaconda3/lib/libopenblasp-r0.3.10.so
    
    locale:
     [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
     [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
     [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
    
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    
    other attached packages:
    [1] PTXQC_1.0.12 tibble_3.1.5 dplyr_1.0.7 
    
    loaded via a namespace (and not attached):
     [1] tinytex_0.32       tidyselect_1.1.1   xfun_0.24          bslib_0.2.5.1      reshape2_1.4.4     purrr_0.3.4       
     [7] colorspace_2.0-2   vctrs_0.3.8        generics_0.1.0     viridisLite_0.4.0  htmltools_0.5.1.1  yaml_2.2.1        
    [13] utf8_1.2.1         rlang_0.4.11       jquerylib_0.1.4    pillar_1.6.4       glue_1.4.2         DBI_1.1.1         
    [19] gdtools_0.2.2      RColorBrewer_1.1-2 lifecycle_1.0.0    plyr_1.8.6         stringr_1.4.0      munsell_0.5.0     
    [25] gtable_0.3.0       rvest_0.3.6        kableExtra_1.3.4   evaluate_0.14      knitr_1.33         UpSetR_1.4.0      
    [31] fansi_0.5.0        Rcpp_1.0.7         scales_1.1.1       webshot_0.5.2      jsonlite_1.7.2     systemfonts_0.3.2 
    [37] gridExtra_2.3      ggplot2_3.3.5      digest_0.6.27      stringi_1.4.6      ade4_1.7-18        cowplot_1.1.0     
    [43] grid_4.0.2         tools_4.0.2        magrittr_2.0.1     sass_0.4.0         ggdendro_0.1.22    R6P_0.2.2         
    [49] seqinr_4.2-4       crayon_1.4.1       tidyr_1.1.4        pkgconfig_2.0.3    ellipsis_0.3.2     MASS_7.3-54       
    [55] data.table_1.14.0  xml2_1.3.2         assertthat_0.2.1   rmarkdown_2.9      svglite_1.2.3.2    httr_1.4.2        
    [61] rstudioapi_0.13    R6_2.5.0           compiler_4.0.2  
    

    Reference

    1. Normalization and missing value imputation for label-free LC-MS analysis

    2. Dealing with Missing Data using R

    3. impute-knn

    参考文章如引起任何侵权问题,可以与我联系,谢谢。

    相关文章

      网友评论

        本文标题:数据分析:数据预处理--缺失值处理(三)

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