top of page

研究ブログ

更新日: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パッケージを推奨します。

1
bottom of page