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