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
  • 相关阅读:
    <数据结构基础学习>(四)链表 Part 2
    <Android基础> (四) Fragment Part 2
    swagger忽略方法里参数的方法
    ActiveMq
    Tomcat日志归档
    java代理的实现
    包装类型和基础类型是如何比较的
    hashmap
    可达性分析中,可以作为GcRoots的对象
    使用Navicat 连接oracle出现 “ORA-03135: Connection Lost Contact”
  • 原文地址:https://www.cnblogs.com/tecdat/p/14847385.html
Copyright © 2011-2022 走看看