zoukankan      html  css  js  c++  java
  • 拓端数据tecdat|R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图

    原文链接:http://tecdat.cn/?p=22492 

    原文出处:拓端数据部落公众号

     

    我们将使用葡萄酒数据集进行主成分分析。

    数据

    数据包含177个样本和13个变量的数据框;vintages包含类标签。这些数据是对生长在意大利同一地区但来自三个不同栽培品种的葡萄酒进行化学分析的结果:内比奥罗、巴贝拉和格里格诺葡萄。来自内比奥罗葡萄的葡萄酒被称为巴罗洛。

    这些数据包含在三种类型的葡萄酒中各自发现的几种成分的数量。

    1.  
      # 看一下数据
    2.  
      head(no)

    输出

    转换和标准化数据

    对数转换和标准化,将所有变量设置在同一尺度上。

    1.  
      # 对数转换
    2.  
      no_log <- log(no)
    3.  
       
    4.  
      # 标准化
    5.  
      log_scale <- scale(no_log)
    6.  
      head(log_scale)

    主成分分析(PCA)

    使用奇异值分解算法进行主成分分析

    1.  
      prcomp(log_scale, center=FALSE)
    2.  
      summary(PCA)

    基本图形(默认设置)

    带有基础图形的主成分得分和载荷图

    1.  
       
    2.  
      plot(scores[,1:2], # x和y数据
    3.  
      pch=21, # 点形状
    4.  
      cex=1.5, # 点的大小
    5.  
       
    6.  
      legend("topright", # legend的位置
    7.  
      legend=levels(vint), # 图例显示
    8.  
       
    9.  
      plot(loadings[,1:2], # x和y数据
    10.  
      pch=21, # 点的形状
    11.  
       
    12.  
      text(loadings[,1:2], # 设置标签的位置

    此外,我们还可以在分数图中的组别上添加95%的置信度椭圆。

    置信度椭圆图函数

    1.  
      ## 椭圆曲线图
    2.  
      elev=0.95, # 椭圆概率水平
    3.  
      pcol=NULL, # 手工添加颜色,必须满足长度的因素
    4.  
      cexsize=1, # 点大小
    5.  
      ppch=21, # 点类型,必须满足因素的长度
    6.  
      legcexsize=2, # 图例字体大小
    7.  
      legptsize=2, # 图例点尺寸
    8.  
       
    9.  
      ## 设定因子水平
    10.  
      if(is.factor(factr) {
    11.  
      f <- factr
    12.  
      } else {
    13.  
      f <- factor(factr, levels=unique(as.character(factr)))
    14.  
      }
    15.  
      intfactr <- as.integer(f) # 设置与因子水平相匹配的整数向量
    16.  
       
    17.  
      ## 获取椭圆的数据
    18.  
      edf <- data.frame(LV1 = x, LV2=y, factr = f) # 用数据和因子创建数据框
    19.  
      ellipses <- dlply(edf, .(factr), function(x) {
    20.  
       
    21.  
      Ellipse(LV1, LV2, levels=elev, robust=TRUE, draw=FALSE) #从dataEllipse()函数中按因子水平获取置信度椭圆点
    22.  
      })
    23.  
      ## 获取X和Y数据的范围
    24.  
      xrange <- plotat(range(c(as.vector(sapply(ellipses, function(x) x[,1])), min(x), max(x))))
    25.  
      ## 为图块设置颜色
    26.  
      if(is.null(pcol) != TRUE) { # 如果颜色是由用户提供的
    27.  
      pgcol <- paste(pcol, "7e", sep="") # 增加不透明度
    28.  
       
    29.  
      # 绘图图形
    30.  
      plot(x,y, type="n", xlab="", ylab="", main=""
    31.  
      abline(h=0, v=0, col="gray", lty=2) #在0添加线条
    32.  
      legpch <- c() # 收集图例数据的矢量
    33.  
      legcol <- c() # 收集图例col数据的向量
    34.  
      ## 添加点、椭圆,并确定图例的颜色
    35.  
      ## 图例
    36.  
      legend(x=legpos, legend=levels(f), pch=legpch,
    37.  
      ## 使用prcomp()函数的PCA输出的轴图示
    38.  
      pcavar <- round((sdev^2)/sum((sdev^2))

    基础图形

    绘制主成分得分图,使用基本默认值绘制载荷图

    1.  
      plot(scores[,1], # X轴的数据
    2.  
      scores[,2], # Y轴的数据
    3.  
      vint, # 有类的因素
    4.  
      pcol=c(), # 用于绘图的颜色(必须与因素的数量相匹配)
    5.  
      pbgcol=FALSE, #点的边框是黑色的?
    6.  
      cexsize=1.5, # 点的大小
    7.  
      ppch=c(21:23), # 点的形状(必须与因子的数量相匹配)
    8.  
      legpos="bottom right", # 图例的位置
    9.  
      legcexsize=1.5, # 图例文字大小
    10.  
      legptsize=1.5, # 图例点的大小
    11.  
      axissize=1.5, # 设置轴的文字大小
    12.  
      linewidth=1.5 # 设置轴线尺寸
    13.  
      )
    14.  
      title(xlab=explain[["PC1"]], # PC1上解释的方差百分比
    15.  
      ylab=explain[["PC2"]], # PC2解释的方差百分比
    16.  
      main="Scores", # 标题
    17.  
      cex.lab=1.5, # 标签文字的大小
    18.  
      cex.main=1.5 # 标题文字的大小
    19.  
       
    20.  
      plot(loadings[,1:2], # x和y数据
    21.  
      pch=21, # 点的形状
    22.  
      cex=1.5, # 点的大小
    23.  
      # type="n", # 不绘制点数
    24.  
      axes=FALSE, # 不打印坐标轴
    25.  
      xlab="", # 删除x标签
    26.  
      ylab="" # 删除y标签
    27.  
      )
    28.  
      pointLabel(loadings[,1:2], #设置标签的位置
    29.  
      labels=rownames(PCAloadings), # 输出标签
    30.  
      cex=1.5 # 设置标签的大小
    31.  
      ) # pointLabel将尝试将文本放在点的周围
    32.  
      axis(1, # 显示x轴
    33.  
      cex.axis=1.5, # 设置文本的大小
    34.  
      lwd=1.5 # 设置轴线的大小
    35.  
      )
    36.  
      axis(2, # 显示y轴
    37.  
      las=2, # 参数设置文本的方向,2是垂直的
    38.  
      cex.axis=1.5, # 设置文本的大小
    39.  
      lwd=1.5 # 设置轴线的大小
    40.  
      )
    41.  
      title(xlab=explain[["PC1"]], # PC1所解释的方差百分比
    42.  
      ylab=explain[["PC2"]], # PC2解释的方差百分比
    43.  
       
    44.  
      cex.lab=1.5, # 标签文字的大小
    45.  
      cex.main=1.5 # 标题文字的大小
    46.  
      )


    最受欢迎的见解

    1.matlab偏最小二乘回归(PLSR)和主成分回归(PCR)

    2.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析

    3.主成分分析(PCA)基本原理及分析实例

    4.基于R语言实现LASSO回归分析

    5.使用LASSO回归预测股票收益数据分析

    6.r语言中对lasso回归,ridge岭回归和elastic-net模型

    7.r语言中的偏最小二乘回归pls-da数据分析

    8.r语言中的偏最小二乘pls回归算法

    9.R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

    ▍关注我们 【大数据部落】第三方数据服务提供商,提供全面的统计分析与数据挖掘咨询服务,为客户定制个性化的数据解决方案与行业报告等。 ▍咨询链接:http://y0.cn/teradat ▍联系邮箱:3025393450@qq.com
  • 相关阅读:
    IOS使用正则表达式去掉html中的标签元素,获得纯文本
    iOS 拨打电话的三种方式总结
    iOS中Block的基础用法
    如何避免在Block里用self造成循环引用
    对MAC自带的SVN进行升级
    IOS开发之记录用户登陆状态
    Xcode7 添加PCH文件
    mysql upgrade
    Ubuntu下更改用户名和主机名
    mysql 查询的时候没有区分大小写的解决方案
  • 原文地址:https://www.cnblogs.com/tecdat/p/14847385.html
Copyright © 2011-2022 走看看