美文网首页R语言做生信R小推车
R语言之mvpart多元回归分析

R语言之mvpart多元回归分析

作者: Oodelay | 来源:发表于2019-04-07 23:13 被阅读75次
    时间尺度下,比较不同处理下微生物群落抗干扰能力

    示例数据
    提取码:zyxp

    工具包的安装

    mvpart属于比较老的工具包了,2014年之后再无更新,CRAN上已不支持,费了点周折。下面的解决方法很赞。看这里

    #这里会下载一个100M大小的软件,略耗时,稍安勿躁。
    install.packages("devtools")
    devtools::install_github("cran/mvpart")
    devtools::install_github("cran/MVPARTwrap")
    

    数据准备

    library(mvpart)
    otu = read.table('L6.txt', header = T, row.names = 1, sep = '\t')   #物种数据,行为物种,列为样点
    map = read.table('map.txt', header = T, row.names = 1, sep = '\t')  #实验设计,行为样点,列为分组信息
    
    library('dplyr')
    otu = otu[,rownames(map)] %>% .[rowSums(.) != 0,] %>% t() # 数据过滤
    

    多元回归分析。

    详细参数介绍,查看帮助??mvpart()

    fit <- mvpart(as.matrix(otu) ~ map$Week, map, #物种变化对时间进行回归
                  xv="pick", xval=nrow(otu), xvmult=500, #交叉验证系列参数
                  legend=TRUE, margin=0.01, cp=0,which=4, big.pts=T, bars=F) #定义出图效果
    
    自定义分组数量
    多元回归树

    对多元回归结果进行主成分分析,呈现为2维点阵。

    详细参数介绍,查看帮助??rpart.pca()

    rpart.pca(fit)
    rpart.pca(fit,speclabs = F) #不显示物种标签
    
    默认出图效果

    输出默认出图

    # pdf
    pdf(file="rpart.pca.pdf", width=12, height=8)
    rpart.pca(fit,speclabs = F)
    dev.off()
    
    # jpg
    jpeg(file="rpart.pca.jpg", width=4000, height=3000, pointsize=8,units = 'px',res = 600)
    rpart.pca(fit,speclabs = F,cex.lab = 4)
    dev.off()
    

    默认出图模式,操作起来不太友好,很多属性无法自定义设置,故将其中的坐标信息提取出来,使用ggplot2进行绘图

    获取pca结果

    rpart.pca(fit,speclabs = F) -> pts
    
    # 获取物种的坐标
    spec.ord = pts$y %>% data.frame()
    colnames(spec.ord) = paste0('PC',seq(4))
    rownames(spec.ord) = rownames(otu)
    
    # 获取样点坐标
    samp.ord = pts$xx
    colnames(samp.ord) = paste0('PC',seq(4))
    samp.ord = samp.ord %>% 
      cbind(subset(map,select = c(Week)))
    
    # 求组内样点均值坐标
    samp.mean = aggregate(.~ Week, samp.ord, mean)
    

    绘图

    library('ggplot2')
    library('ggalt') #用于将各组样点分别连线
    
    p <- ggplot(samp.ord,aes(PC1,PC2,color = as.factor(Week))) + 
      theme_minimal() +
      geom_point(size = 3) + # 样点
      geom_point(data = samp.mean,size = 5) + # 组内样点均值
      geom_encircle(s_shape = 1, expand = 0, lwd =1, fill = NA, show.legend = FALSE) + # 分组轮廓线
      geom_segment(data = spec.ord, aes(x=0, y=0, xend=PC1, yend=PC2),color = 'grey') + # 物种
      labs(x = 'Dim1 58.29%', y = 'Dim2 23.93%', color = 'Week') + #坐标轴和图例标题
      theme(axis.title = element_text(size = 15,color = 'black'), 
            axis.text = element_blank(),
            panel.grid = element_blank())
    
    ggplot2出图效果

    注意

    -1. 使用ggplot2和原图有些不同,各组均值之间的联系不太清楚怎么连接的,但貌似也没啥用。
    -3. ggplot2可以比较自由的设置图的属性,原图就比较受限制
    -3. 所以,用原图还是ggplot2,随意

    相关文章

      网友评论

        本文标题:R语言之mvpart多元回归分析

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