Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 21

Міністерство освіти і науки України

Національний університет «Львівська Політехніка»


Інститут комп’ютерних наук та інформаційних технологій
Кафедра інформаційних систем та мереж

ЗВІТ
До лабораторної роботи №6
З дисципліни «Інтелектуальний аналіз даних»

На тему «Аналіз основних компонентів та дослідницький факторний


аналіз (PCA & EFA)»

Виконали:
Команда групи ФЛ-35
Микулинська Марта
Мельник Лоліта
Прийняв:
Андруник В.А.

Львів 2021
Мета роботи: набути практичних навичок роботи з дослідницьким факторним
аналізом та аналізом основних компонентів в середовищі Rstudio.

Хід роботи

1. Ознайомитися з теоретичними відомостями та лекційним матеріалом.

2. Виконати Приклади з посібника "Аналіз та візуалізація даних в R", для


реалізації аналізу подібних компонентів та факторного налізу.

2.1. Вибір необхідного числа компонент

Існує кілька критеріїв для визначення числа компонент в PCA:

• наявний досвід і теоретичні міркування;

• пояснення заданої частки дисперсії вихідних змінних (наприклад, 80%);

• вивчення власних значень матриці кореляцій між всіма змінними.

Всі три способи аналізу власних значень можна застосувати одночасно за


допомогою функції fa.parallel (). Для 11 шкал оцінки (без змінної CONT) необхідний
програмний код буде наступним:

Рис.1 Програмний код без змінної CONT

Рис.2 Візуалізація результату програмного коду


Всі три критерії свідчать про те, що для характеристики цього набору даних
достатньо однієї компоненти. Наступний крок - виділити цю компоненту за
допомогою функції principal ().

2.2. Виділення головних компонент

Аналіз головних компонент для вихідної матриці даних або кореляційної


матриці можна провести за допомогою функції principal (). Формат її застосування
такий: principal (r, nfactors =, rotate =, scores =), де

• r - кореляційна матриця, або вихідна таблиця даних;

• nfactors - визначає число головних компонент, які потрібно виділити (за


замовчуванням одна);

• rotate - вказує, який тип обертання потрібно застосувати (за замовчуванням


варимакс, див. 14.2.3);

• scores - визначає, чи потрібно розраховувати значення головних компонент (за


замовчуванням - немає).

Для виділення першої головної компоненти можна використовувати наведений


нижче програмний код.

Рис.3 Програмний код аналізу головних компонент для даних по рейтингу


американських суддів

Рис.4 Результат програмного коду для виділення першої головної компоненти в


консолі

Тут аналіз головних компонент проводиться для вихідної таблиці даних без
змінної CONT із зазначенням, що повинна бути виділена одна головна компонента
без обертання. Оскільки PCA проводиться на основі кореляційної матриці, перш ніж
вийняти компонент вихідні дані автоматично перетворюються в таку матрицю.

Наступним чином знову потрібно замінити вихідні проміри меншим числом


похідних змінних. Число компонент, які потрібно витягти, можна визначити за
допомогою наступного програмного коду. В даному випадку вам потрібно вказати,
що в якості вихідних даних використовується кореляційна матриця і вказати обсяг
вибірки (n.obs):

Рис.5 Програмний код для вилучення головних компонент

Рис.6 Візуалізація програмного коду для вилучення головних компонент

З діаграми видно, що слід використовувати дві компоненти. як і в першому


прикладі, критерій Кайзера-Харріса, критерій власних значень і паралельний аналіз
дають подібні результати. Так буває не завжди, і може знадобитися витягти різне
число компонент і вибрати рішення, яке здається найбільш корисним. Наступний
програмний код дозволяє витягти дві перші компоненти з кореляційної матриці.

Рис.7 Програмний код аналізу головних компонент для промірів тіла


Рис.8 Результат програмного коду аналізу головних компонент для промірів тіла в
консолі

Якщо уважно переглянути колонки PC1 і PC2 в програмному коді 14.2, то


можна помітити, що перша компонента враховує 58% дисперсії промірів тіла, а друга
компонента - 22%. Разом ці дві компоненти пояснюють 81% загальної дисперсії. Дві
компоненти враховують 88% дисперсії значень зростання.

2.3. Обертання головних компонент

Обертання - це набір математичних прийомів трансформації матриці


навантажень компонент в іншу, більш легкоскриптової. Це робиться шляхом якомога
більшої «очищення» компонент. Найбільш поширений тип ортогонального обертання
- це варимакс (varimax), при якому робиться спроба очистити стовпці матриці
навантажень так, щоб кожна компонента була визначена обмеженим набором
змінних (тобто в кожному стовпці буде лише кілька великих навантажень і багато
дуже малих). Застосувавши таке обертання до даних промірів тіла, можна отримати
результати, які представлені в наступному програмному коді.

Рис.9 Програмний код аналіз головних компонент з обертанням варімакс

Рис.10 Вигляд результату програмного коду аналізу головних компонент з


обертанням варімакс в консол

і
2.4. Обчислення значень головних компонент

У прикладі з рейтингом суддів було витягнуто єдину головну компоненту з


вихідних даних, що описують рейтинг суддів по 11 шкалами. Значення похідної
змінної для кожного учасника легко отримати за допомогою команди principal ().

Рис.11 Програмний код обчислення значень компонент для вихідних даних

Рис.12 Результат програмного коду обчислення значень компонент для вихідних


даних в консолі

Дані щодо промірів тіла представляють собою кореляції між цими промірами, але
не було окремих промірів для кожної з 305 дівчат. Коефіцієнти можна отримати за
допомогою наступного програмного коду.

Рис.13 Обчислення коефіцієнтів для головних компонент

Рис.14 Результат обчислення коефіцієнтів для головних компонент в консолі

2.5. Розвідницький факторний аналіз

Хоча моделі PCA і EFA відрізняються, багато кроків є подібними.


Проілюстровано процес, застосувавши EFA до кореляції між результатами шести
психологічних тестів для 112 осіб. Тести були наступними: невербальна оцінка
загального розумового розвитку (general), тест на завершення фігур (picture), тест
блокових конструкцій (blocks), тест з лабіринтом (maze), тест на розуміння
прочитаного (reading) і тест на словниковий запас (vocab) . Коваріаційна матриця для
спостережуваних змінних міститься в наборі даних ability.cov. Її можна перетворити в
кореляційну матрицю за допомогою функції cov2cor ().

Рис.15 набір даних ability.cov

Рис.16 Результат набору даних ability.cov в консолі


Оскільки шукаємо гіпотетичні складові змінні, які пояснюють дані,
потрібно використовувати EFA. Як і в разі PCA, наступне завдання - це вирішити,
скільки факторів потрібно витягти.

2.6 Визначення числа видобутих факторів

Для того щоб вирішити, скільки чинників витягти, треба скористатись функцією
fa.parallel ():

Рис.17 Програмний код використання функції fa.parallel ()

Рис.18 Діаграми власних значень з паралельним аналізом

2.7 Виділення загальних факторів


На відміну від PCA, існує багато способів вилучення загальних факторів:
максимальне правдоподібність (ml), повторні головні осі (iterated principal axis, pa),
зважений найменший квадрат (wls), узагальнені зважені найменші квадрати (gls) і
найменші залишки (minres).

У наведеному прикладі ми виділимо фактори, не обертаючи їх, за допомогою


методу повторних головних осей. Результати наведені в наступному програмному
коді.

Рис.19 Виділення факторів за допомогою методу повторних головних осей без


обертання

Рис.20 Результат виділення факторів за допомогою методу повторних головних


осей без обертання в консолі

2.8 Обертання факторів

Обертати два фактора, отримані в розділі 14.3.3, можна за допомогою


ортогонального або похилого обертання. Варто спробувати обидва способи і
переглянути, чим вони відрізняються. Спочатку проведено ортогональное обертання
(наступний програмний код).

Рис.21 Виділення факторів з ортогональним обертанням


Рис.22 Результат виділення факторів з ортогональним обертанням в консолі

Використання ортогонального обертання «змушує» чинники бути


нескоррелірованнимі. Можна спробувати застосувати похиле обертання, таке як
ПРОМАКС (promax, див. Наступний програмний код).

Рис.23 Виділення факторів з похилим обертанням

Рис.24 Результат виділення факторів з похилим обертанням в консолі

Матриця факторної структури не вираховується. Однак її можна розрахувати за


допомогою формули F = P * Phi, де F - це матриця факторних навантажень, P - це
матриця моделі факторів, а Phi - це матриця кореляцій між факторами. Це можна
зробити за допомогою наступної простої функції:
Рис.25 Програмний код для матриці факторної структури

Рис.26 Результат програмного коду для матриці факторної структури в консолі

Можна графічно зобразити результати ортогонального або похилого обертання


за допомогою команд factor.plot () або fa.diagram ():

Рис.27 Двофакторна діаграма для результатів психологічних тестів з набору даних


ability.cov.

Команда fa.diagram (fa.promax, simple = FALSE) створює діаграму, показану на


рисунку нижче. Якщо ви використовуєте опцію simple = TRUE, для кожного об'єкта
буде показано тільки найбільше навантаження. На цій діаграмі зображені
навантаження для кожного фактора, а також кореляції між факторами. Така діаграма
корисна, коли є кілька факторів.
Рис.28 Програмний код команди fa.diagram

Рис.29 Діаграма для візуалізації похилого обертання двох факторів для результатів
психологічних тестів з набору даних ability.cov

2.9 Значення факторів

Для набору даних ability.cov можна обчислити бета-коефіцієнти для розрахунку


значень двох виділених факторів після похилого обертання за допомогою наступної
команди:

Рис.30 Команда для розрахунку значень двох виділених факторів

Рис.31 Результат команди для розрахунку значень двох виділених факторів в консолі
3. Виконати Приклад з методичного посібника для аналізу подібних компонентів
та розвідувального факторного налізу. В якості прикладу використовуються дані про
валовий державний продукт від Латтіна, Керролла та Гріна (2003) (Lattin, Carroll, and
Green). Дані наведені для 50 спостережень (штати США) та 13 категорій (сільське
господарство, гірничодобувна промисловість, торгівля тощо) для валового
державного продукту, вираженого у частках. Завантажуємо датасет з Гугл диску:
pca_gsp.csv.

Cпершу даємо шлях нашому файлу для зчитування та присвоюємо змінні.

mydata<- read.csv("C:/pca_gsp.csv")

attach(mydata)

# Define variables

X <- cbind(Ag, Mining, Constr, Manuf, Manuf_nd, Transp, Comm, Energy, TradeW,
TradeR, RE, Services, Govt)

# Descriptive statistics

Функція summary() показує детальну інформацію про наших даних, а cor ()


дозволяє Функція cor() дозволяє скласти таблицю кореляційних коефіцієнтів Пірсона
обчислюючи всі коефіцієнти

summary(X)

Рис.32
cor(X)

Рис.33

# Principal component analysis

Функція princomp виконує аналіз основних компонентів на заданій числовій


матриці даних і повертає результати як об'єкт класу princomp.

pca1 <- princomp(X, scores=TRUE, cor=TRUE)

summary(pca1)

Рис.34

# Loadings of principal components

Далі у нас йде графік завантаження, щоб визначити, які змінні мають найбільший
вплив на кожен компонент та завантаження основних компонентів та графік власних
значень для факторного аналізу та аналізу головних компонентів. Діаграма
відображає власні значення в кривій донизу, упорядковуючи значення від
найбільших до найменших.
loadings(pca1)

Рис.35

#pca1$loadings

# Scree plot of eigenvalues

plot(pca1)

Рис.36
screeplot(pca1, type="line", main="Scree Plot")

Рис.37

Ми використовуємо Biplot, двовимірну діаграму, яка представляє взаємозв'язок


між рядками та стовпцями таблиці, а також виводимо результати цих відношень.

# Biplot of score variables

biplot(pca1)

Рис.38
# Scores of the components

pca1$scores[1:10,]

Рис.39

Виконуємо обертання, набір математичних прийомів трансформації матриці


навантажень компонент в іншу, більш інтерпретованих. При varimax робиться
спроба очистити стовпці матриці навантажень так, щоб кожна компонента була
визначена обмеженим набором змінних (тобто в кожному стовпці буде лише кілька
великих навантажень і багато дуже малих). Promax - це функція косого обертання,
promax не повідомляє про міжфакторні кореляції. Promax виконує загальні обертання
цілі до довільної цільової матриці. Поворот цілі за замовчуванням призначений для
незалежного рішення кластера

# Rotation

varimax(pca1$loadings[,1:3])

Рис.40
promax(pca1$loadings[,1:3])

Рис.41

Проводимо факторний аналіз, метою якого є зменшення багатьох окремих


предметів до меншої кількості вимірів. Факторний аналіз може бути використаний
для спрощення даних, таких як зменшення кількості змінних у регресійних моделях.
Використовуючи PCA, ми виражали кожен компонент (фактор) як лінійну
комбінацію змінних, тоді як у FA це змінні, які виражаються як лінійні комбінації
факторів (включаючи спільності та компоненти унікальності).

# Factor analysis

fa1 <- factanal(X, factor=3, rotation="none")

fa1

Рис.42
fa2 <- factanal(X, factor=3, rotation="varimax")

fa2

Рис.43

fa3<- factanal(X, factors=3, rotation="varimax", scores="regression")

fa3

Рис.44
fa3$scores

Рис.45

fa4 <- factanal(X, factor=3, rotation="promax")

fa4

Рис.46

Також встановлюємо пакет REdaS, щоб продемонструвати показник адекватності


вибірки KMO, тест для оцінки доцільності використання факторного аналізу на
наборі даних та тест сферичності Бартлетта, для перевірки нульової гіпотези про те,
що змінні в матриці кореляції сукупності є некорельованими.

За результатами KMO-Criterion: 0.07

Значення KMO, близькі до нуля, означають, що існують великі часткові кореляції


порівняно із сумою кореляцій. Іншими словами, існують широко розповсюджені
кореляції, які є великою проблемою для факторного аналізу.

Тест на сферичність Бартлетта перевіряє гіпотезу про те, що матриця кореляції є


матрицею ідентичності, яка вказувала б на те, що змінні не пов'язані між собою і
тому непридатні для виявлення структури. Невеликі значення (менше 0,05) рівня
значущості вказують на те, що факторний аналіз може бути корисним для даних, а
наше значення < 2.22e-16.

# KMO Statistics and Bartlett's Test of Sphericity

#install.packages("REdaS")

library(REdaS)

KMOS(X)

bart_spher(X)

Рис.48

Висновок: під час виконання цієї лабораторної роботи, було набуто практичних
навичок роботи з дослідницьким факторним аналізом та аналізом основних
компонентів в середовищі Rstudio. Також ознайомлено з теоретичними відомостями
та лекційним матеріалом, виконано Приклади з посібника "Аналіз та візуалізація
даних в R", для реалізації аналізу подібних компонентів та факторного налізу та
приклад з методичного посібника для аналізу подібних компонентів та
розвідувального факторного налізу на прикладі даних ВВП США (2003 рік).

You might also like