library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.1     ✔ purrr   1.0.1
## ✔ tibble  3.1.8     ✔ dplyr   1.1.0
## ✔ tidyr   1.3.0     ✔ stringr 1.5.0
## ✔ readr   2.1.4     ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
fat <- read.csv('obesity data.csv')
dat <- fat %>% select(id, fat, bmi)
#visual tương quan
ggplot(dat, aes(bmi, fat))+geom_point()

pca <- princomp(~bmi+fat, data=dat)
summary(pca)
## Importance of components:
##                              Comp.1       Comp.2
## Standard deviation     5212.2564379 1.952239e+00
## Proportion of Variance    0.9999999 1.402860e-07
## Cumulative Proportion     0.9999999 1.000000e+00
#Như vậy comp.1 giải thích 99% không cần comp.2
loadings(pca)
## 
## Loadings:
##     Comp.1 Comp.2
## bmi        1     
## fat 1            
## 
##                Comp.1 Comp.2
## SS loadings       1.0    1.0
## Proportion Var    0.5    0.5
## Cumulative Var    0.5    1.0
#biến tiềm ẩn pc1 giải thích 50%m comp.2 thêm 50%
head(pca$scores)
##       Comp.1     Comp.2
## 1   513.5634 -0.8269529
## 2 -8907.4369  0.7207663
## 3  1932.5638 -0.1667485
## 4   183.5634 -0.6781632
## 5 -9952.4364  1.9919335
## 6 -2384.4371 -1.2203091
#biết bao nhiêu giá trị comp.1 và comp.2
var(pca$scores)
##              Comp.1       Comp.2
## Comp.1 2.718996e+07 1.135369e-11
## Comp.2 1.135369e-11 3.814372e+00