拓端數據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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM