R: 主成分分析 (PCA)
- rioclu0729vet
- 2024年11月6日
- 読了時間: 2分
更新日:2024年12月10日
骨形態を測定してPCAを実施し、LocomotionとTaxon毎にプロットするコードです。
データの前処理 (体サイズ除去 etc.)は必須です。
#R package "ggplot2"をインストール
library(ggplot2) #"ggplot2"を読み込み
#dataに対してPCAを実行
pca <- prcomp(data, scale. = TRUE, center = TRUE)
#scale: 平均が0で標準偏差が1になるように標準化。事前にscale関数で標準化していない場合基本的にTRUE。
#center: 平均値を0にして中心化。単位が異なる場合はTRUE。
#PCAの結果をデータフレームに変換
pca_df <- data.frame(pca $ x)
#dataからカテゴリーデータ"Locomotion"と"Taxon"をpca_dfに追加
pca_df $ Locomotion <- data $ Locomotion
pca_df $ Taxon <- data $ Taxon
#LocomotionのPCAをプロット
ggplot2::ggplot(pca_df, ggplot2::aes(x = PC1, y = PC2, shape = Locomotion)) +
ggplot2::geom_point(size = 3) +
ggplot2::labs(title = "PCA",
x = "Principal Component 1", y = "Principal Component 2") +
ggplot2::theme_minimal()
#Taxonにする場合はshape = Taxon
#shapeを指定したい場合:ggplot2::scale_shape_manual(values = c(0:25))
0:25で全てのshapeを指定
#shapeをcolorに変えると色で分ける
#エリプスの追加: ggplot2::stat_ellipse(aes(fill = Locomotion), alpha = 0.2)
#主成分負荷量
loadings <- pca $ rotation
#固有値
eigenvalues_radius <- pca $ sdev^2
#寄与率と累積寄与率
variance_explained <- eigenvalues / sum(eigenvalues)
cumulative_variance_explained <- cumsum(variance_explained)
#主成分負荷量、固有値、寄与率、累積寄与率のサマリー
pca_summary <- data.frame(Principal_Component
= paste0("PC", 1:length(eigenvalues)),
Eigenvalue = eigenvalues,
Variance_Explained = variance_explained,
Cumulative_Variance_Explained =
cumulative_variance_explained)
####指定の測定項目に対してPCAを行う場合####
#PCAの対象となる項目をdataから選択してpartに入れる
part <- data[, c("指定の測定項目")]
#partをprcomp関数に入れる
線形計測値を想定しているのでprcomp()関数を用いましたが、2D/3D幾何形態morphometricsを扱う場合には、geomorphパッケージを推奨します。
コメント