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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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