По-перше, існують різні способи побудови так званих біплотів у разі аналізу кореспонденції. У всіх випадках основна ідея полягає у пошуку способу показати найкраще 2D-наближення "відстаней" між клітинками рядків та комірками стовпців. Іншими словами, ми шукаємо ієрархію (ми також говоримо про "ординацію") взаємозв'язків між рядками та стовпцями таблиці обставин.
Дуже коротко, CA розбиває статистику хі-квадрата, пов'язану з двосторонньою таблицею, на ортогональні коефіцієнти, що дозволяють максимально розділити між балами рядків і стовпців (тобто частоти, обчислені з таблиці профілів). Тут ви бачите, що існує деякий зв'язок з PCA, але мірою дисперсії (або метрикою), збереженою в CA, є , що залежить тільки від профілів стовпців (оскільки це має тенденцію надавати більше значення модальностям, які мають великі розміри граничні значення, ми також можемо переоцінити початкові дані, але це вже інша історія).χ2
Ось більш детальна відповідь. Реалізація, що пропонується у corresp()
функції (in MASS
), випливає з розгляду CA як розкладання SVD матричних кодованих матриць, що представляють рядки та стовпці (такі, що , - загальна вибірка). Про це свідчить канонічний кореляційний аналіз. На відміну від цього, французька школа аналізу даних розглядає CA як варіант PCA, де ви шукаєте напрямки, які максимально збільшують "інерцію" у хмарі даних. Це робиться шляхом діагоналізації інерційної матриці, обчисленої з центрированої та масштабованої (за маргінальними частотами) двосторонньої таблиці, та вираження профілів рядків та стовпців у цій новій системі координат.RтС= NN
Якщо ви вважаєте таблицю з стовпцями рядки та , кожен рядок зважується відповідною граничною сумою, яка дає ряд умовних частот, пов'язаних з кожним рядком: . Граничний стовпчик називається середнім профілем (для рядків). Це дає нам вектор координат, який також називають профілем (за рядком). Для стовпця маємо . В обох випадках профілі рядків (пов'язані з їх масою ) будемо розглядати як особи в просторі стовпців, а також профілі стовпців (пов'язані з їхньою вагоюi = 1 , … , Ij = 1 , … , Jfj | i= ni j/ нi ⋅fя | j= ni j/ н⋅ jIfi⋅Jf⋅j ) як особи в просторі рядків. Метрик, який використовується для обчислення близькості між будь-якими двома особами, - це відстань . Наприклад, між двома рядами і нас єχ2ii′
d2χ2(i,i′)=∑j=1Jnn⋅j(nijni⋅−ni′jni′⋅)2
Ви також можете побачити зв'язок зі статистикою , зазначивши, що це просто відстань між спостережуваними та очікуваними підрахунками, де очікувані підрахунки (під , незалежність двох змінних) обчислюються як для кожної комірки . Якби дві змінні мали бути незалежними, профілі рядків були б рівними та однаковими відповідному граничному профілю. Іншими словами, коли існує незалежність, ваша таблиця надзвичайних ситуацій повністю визначається її межами.H 0 n i ⋅ × n ⋅ j / n ( i , j )χ2H0ni⋅×n⋅j/n(i,j)
Якщо ви реалізуєте PCA на профілях рядків (розглядається як особи), замінюючи евклідову відстань наcos 2 i j χ 2χ2відстань, то ви отримуєте свій CA. Перша головна вісь - це лінія, яка є найближчою до всіх точок, а відповідне власне значення - це інерція, пояснена цим виміром. Можна зробити те ж саме з профілями стовпців. Можна показати, що між двома підходами існує симетрія, а точніше, що основні компоненти (ПК) для профілів стовпців пов'язані з тими ж власними значеннями, що й ПК для профілів рядків. На біплоті показано координати індивідів у цій новій системі координат, хоча індивіди представлені в окремому просторі. За умови, що кожен індивід / модальність добре представлений у своєму факторіальному просторі (ви можете подивитися наcos2модальності з 1-ою головною віссю, яка є мірою кореляції / асоціації), ви навіть можете інтерпретувати близькість між елементами та вашої таблиці непередбачених ситуацій (як це можна зробити, переглянувши залишки вашого тест на незалежність, наприклад ).ijχ2chisq.test(tab)$expected-chisq.test(tab)$observed
Загальна інерція вашої СА (= сума власних значень) є статистикою поділеною на (що є Пірсоном ). n ϕ 2χ2nϕ2
На насправді, є кілька пакетів , які можуть надати вам розширений УЦ по порівнянні з функцією , доступною в MASS
упаковці: ade4 , FactoMineR , Anacor і ки .
Останній є той , який був використаний для конкретної ілюстрації, і документ був опублікований в журналі статистичного програмного забезпечення , який пояснює більшість його functionnalities: Аналіз відповідності в R з Дво- і тривимірна графіка: В ча пакета .
Отже, ваш приклад щодо кольорів очей / волосся можна відтворити багатьма способами:
data(HairEyeColor)
tab <- apply(HairEyeColor, c(1, 2), sum) # aggregate on gender
tab
library(MASS)
plot(corresp(tab, nf=2))
corresp(tab, nf=2)
library(ca)
plot(ca(tab))
summary(ca(tab, nd=2))
library(FactoMineR)
CA(tab)
CA(tab, graph=FALSE)$eig # == summary(ca(tab))$scree[,"values"]
CA(tab, graph=FALSE)$row$contrib
library(ade4)
scatter(dudi.coa(tab, scannf=FALSE, nf=2))
У всіх випадках те, що ми читаємо в отриманому біплоті, в основному (я обмежую свою інтерпретацію першою віссю, яка пояснювала більшу частину інерції):
- перша вісь підкреслює чітке протиставлення між світлим і темним кольором волосся, а також між блакитними та карими очима;
- люди зі світлим волоссям, як правило, також мають блакитні очі, а люди з чорним волоссям, як правило, мають карі очі.
Існує багато додаткових ресурсів для аналізу даних у лабораторії біоінформатики з Ліона, у Франції. Це здебільшого французькою мовою, але я думаю, це не було б для вас занадто великою проблемою. Наступні два подачки повинні бути цікавими для початку:
Нарешті, коли ви розглядаєте повне некон'єктивне (фіктивне) кодування змінних, ви отримуєте аналіз множинної відповідності .k