拓端tecdat|R語言主成分分析PCA譜分解、奇異值分解預(yù)測分析運(yùn)動員表現(xiàn)數(shù)據(jù)和降維可視
原文鏈接:http://tecdat.cn/?p=25067?
原文出處:拓端數(shù)據(jù)部落公眾號
本文描述了如何?使用R執(zhí)行主成分分析?(?PCA?)。您將學(xué)習(xí)如何?使用 PCA預(yù)測?新的個體和變量坐標(biāo)。我們還將提供?PCA 結(jié)果背后的理論。
在 R 中執(zhí)行 PCA 有兩種通用方法:
譜分解?,檢查變量之間的協(xié)方差/相關(guān)性
?檢查個體之間的協(xié)方差/相關(guān)性的奇異值分解
根據(jù) R 的幫助,SVD 的數(shù)值精度稍好一些。
可視化
創(chuàng)建基于 ggplot2 的優(yōu)雅可視化。
演示數(shù)據(jù)集
我們將使用運(yùn)動員在十項全能中的表現(xiàn)數(shù)據(jù)集,這里使用的數(shù)據(jù)描述了運(yùn)動員在兩項體育賽事中的表現(xiàn)?
數(shù)據(jù)描述:
一個數(shù)據(jù)框,包含以下13個變量的27個觀測值。
X100m
一個數(shù)字向量
跳遠(yuǎn)
一個數(shù)字向量
投籃
一個數(shù)字向量
高跳
一個數(shù)字向量
X400m
數(shù)字向量
X110m.hurdle
一個數(shù)字向量
飛碟
一個數(shù)字向量
撐桿跳高
一個數(shù)字向量
繩索
數(shù)字向量
X1500米
數(shù)字向量
級別
與等級相對應(yīng)的數(shù)字向量
點(diǎn)
一個數(shù)字向量,指定獲得的點(diǎn)數(shù)
運(yùn)動會
水平變量 Decastar OlympicG
簡而言之,它包含:
訓(xùn)練個體(第 1 到 23 行)和訓(xùn)練變量(第 1 到 10 列),用于執(zhí)行主成分分析
預(yù)測個體(第 24 至 27 行)和預(yù)測變量(第 11 至 13 列),其坐標(biāo)將使用 PCA 信息和通過訓(xùn)練個體/變量獲得的參數(shù)進(jìn)行預(yù)測。
加載數(shù)據(jù)并僅提取訓(xùn)練的個體和變量:
head(dec)

計算 PCA
在本節(jié)中,我們將可視化 PCA。
進(jìn)行可視化
計算 PCA
prcomp
可視化?特征值?(碎石圖)。顯示每個主成分解釋的方差百分比。

具有相似特征的個人被歸為一組。
viz(res )

變量圖。正相關(guān)變量指向圖的同一側(cè)。負(fù)相關(guān)變量指向圖表的相反兩側(cè)。
vzpca(res )

個體和變量的雙標(biāo)圖
fvbiplot(res )

PCA 結(jié)果
# 特征值
eigva
# 變量的結(jié)果
coord # 坐標(biāo)
contrib # 對PC的貢獻(xiàn)
cos2 # 代表性的質(zhì)量
# 個人的結(jié)果
coord # 坐標(biāo)
contrib # 對PC的貢獻(xiàn)
cos2 # 代表性的質(zhì)量
使用 PCA 進(jìn)行預(yù)測
在本節(jié)中,我們將展示如何僅使用先前執(zhí)行的 PCA 提供的信息來預(yù)測補(bǔ)充個體和變量的坐標(biāo)。
預(yù)測個人
數(shù)據(jù):第 24 到 27 行和第 1 到 10 列。新數(shù)據(jù)必須包含與用于計算 PCA 的活動數(shù)據(jù)具有相同名稱和順序的列(變量)。
# ?預(yù)測個體的數(shù)據(jù)
in <- dec[24:27, 1:10]

預(yù)測新個體數(shù)據(jù)的坐標(biāo)。使用 R 基函數(shù)?predict?():
predict

包括補(bǔ)充個人在內(nèi)的個人圖表:
# 活躍個體的圖譜
fvca_
# 添加補(bǔ)充個體
fdd(p)

個體的預(yù)測坐標(biāo)可以計算如下:
使用 PCA 的中心和比例對新的個人數(shù)據(jù)進(jìn)行中心化和標(biāo)準(zhǔn)化
通過將標(biāo)準(zhǔn)化值與主成分的特征向量(載荷)相乘來計算預(yù)測坐標(biāo)。
可以使用下面的 R 代碼:
# 對補(bǔ)充個體進(jìn)行居中和標(biāo)準(zhǔn)化
ined <- scale
# 個體個體的坐標(biāo)
rtaton
ird <- t(apply)

補(bǔ)充變量
定性/分類變量
數(shù)據(jù)集?在第 13 列包含與比賽類型相對應(yīng)的?補(bǔ)充定性變量?。
定性/分類變量可用于按組為樣本著色。分組變量的長度應(yīng)與活躍個體的數(shù)量相同。
groups <- as.factor
fvnd(res.pca
)

計算分組變量水平的坐標(biāo)。給定組的坐標(biāo)計算為組中個體的平均坐標(biāo)。
library(magrittr) # 管道函數(shù)%>%。
# 1. 單個坐標(biāo)
getind(res)
# 2. 組的坐標(biāo)
coord %>% >
as_data_frame%>%
selec%>%
mutate%>%
group_b %>%

定量變量
數(shù)據(jù):11:12 欄。應(yīng)與活躍個體的數(shù)量相同(此處為 23)
quup <- dec[1:23, 11:12]
head(quup .sup)

給定定量變量的坐標(biāo)被計算為定量變量與主成分之間的相關(guān)性。
# 預(yù)測坐標(biāo)并計算cos2
quaord <- cor
quaos2 <- qord^2
# 變量的圖形,包括補(bǔ)充變量
p <- fviar(reca)
fvdd(p, quord, color ="blue", geom="arrow")
PCA 結(jié)果背后的理論
變量的 PCA 結(jié)果
在這里,我們將展示如何計算變量的 PCA 結(jié)果:坐標(biāo)、cos2 和貢獻(xiàn):
var.coord
?= 載荷 * 分量標(biāo)準(zhǔn)差var.cos2
?= var.coord ^ 2var.contrib
. 變量對給定主成分的貢獻(xiàn)為(百分比):(var.cos2 * 100)/(成分的總 cos2)
# 計算坐標(biāo)
#::::::::::::::::::::::::::::::::::::::::
logs <- rotation
sdev <- sdev
vad <- t(apply)

# 計算 Cos2
#::::::::::::::::::::::::::::::::::::::::
vaos2 <- vard^2
head(vars2[, 1:4])

# 計算貢獻(xiàn)
#::::::::::::::::::::::::::::::::::::::::
comos2 <- apply
cnrib <- function
var.otrb <- t(apply)
head(vaib[, 1:4])

PCA 結(jié)果
ind.coord
?= res.pca$x個人的 Cos2。兩步:
計算每個個體與 PCA 重心之間的平方距離:d2 = [(var1_ind_i - mean_var1)/sd_var1]^2 + …+ [(var10_ind_i - mean_var10)/sd_var10]^2 + …+..
將 cos2 計算為 ind.coord^2/d2
個人對主成分的貢獻(xiàn):100 * (1 / number_of_individuals)*(ind.coord^2 / comp_sdev^2)。請注意,每列所有貢獻(xiàn)的總和為 100
# 個人的坐標(biāo)
#::::::::::::::::::::::::::::::::::
inod <- rpa$x
head(in.c[, 1:4])

# 個人的Cos2
#:::::::::::::::::::::::::::::::::
# 1.個體與#PCA重心之間距離的平方
# PCA重心的平方
ceer<- center
scle<- scale
d <- apply(decaive,1,gnce, center, scale)
# 2. 計算cos2。每一行的總和為1
is2 <- apply(inrd, 2, cs2, d2)
head(is2[, 1:4])

# 個人的貢獻(xiàn)
#:::::::::::::::::::::::::::::::
inib <- t(apply(iord, 1, conib,
sdev, nrow))
head(inib[, 1:4])


最受歡迎的見解
1.matlab偏最小二乘回歸(PLSR)和主成分回歸(PCR)
2.R語言高維數(shù)據(jù)的主成分pca、 t-SNE算法降維與可視化分析
3.主成分分析(PCA)基本原理及分析實(shí)例
4.基于R語言實(shí)現(xiàn)LASSO回歸分析
5.使用LASSO回歸預(yù)測股票收益數(shù)據(jù)分析
6.r語言中對lasso回歸,ridge嶺回歸和elastic-net模型
7.r語言中的偏最小二乘回歸pls-da數(shù)據(jù)分析
8.r語言中的偏最小二乘pls回歸算法
9.R語言線性判別分析(LDA),二次判別分析(QDA)和正則判別分析(RDA)