У мене є номінальна змінна (різні теми розмови, кодовані як тема0 = 0 тощо) та ряд змінних масштабів (DV), таких як тривалість розмови.
Як я можу отримати кореляції між номінальною та масштабною змінними?
У мене є номінальна змінна (різні теми розмови, кодовані як тема0 = 0 тощо) та ряд змінних масштабів (DV), таких як тривалість розмови.
Як я можу отримати кореляції між номінальною та масштабною змінними?
Відповіді:
Назва цього питання говорить про принципове непорозуміння. Найбільш основна ідея кореляції - "як одна змінна збільшується, чи збільшується інша змінна (позитивна кореляція), зменшується (негативна кореляція) чи залишається такою ж (відсутність кореляції)" зі шкалою, такою, що ідеальна позитивна кореляція дорівнює +1, відсутність кореляції 0, а ідеальна від'ємна кореляція -1. Значення "ідеального" залежить від того, яка міра кореляції використовується: для Пірсонової кореляції це означає, що точки на графіку розкидання лежать прямо на прямій (нахиленій вгору на +1 і вниз на -1), для кореляції Спірмена, що ранги точно погоджуються (або абсолютно не згодні, тому перший сполучається з останнім, для -1), а для тау Кендаллащо всі пари спостережень мають відповідні ранги (або розбіжні для -1). Інтуїцію про те, як це працює на практиці, можна отримати з кореляцій Пірсона для таких сюжетних схем ( зображення зображення ):
Подальше розуміння випливає з розгляду квартету Anscombe, де всі чотири набори даних мають кореляцію Пірсона +0,816, хоча вони йдуть за схемою "зі збільшенням , має тенденцію до збільшення" дуже різними способами ( зображення зображення ):
Якщо ваша незалежна змінна номінальна, то не має сенсу говорити про те, що відбувається, «як зростає». У вашому випадку "Тема розмови" не має числового значення, яке може йти вгору і вниз. Тож ви не можете співвіднести "Тему розмови" з "Тривалістю розмови". Але, як @ttnphns писав у коментарях, ви можете використовувати міри міцності асоціації, які є дещо аналогічними. Ось деякі підроблені дані та супровідний код R:
data.df <- data.frame(
topic = c(rep(c("Gossip", "Sports", "Weather"), each = 4)),
duration = c(6:9, 2:5, 4:7)
)
print(data.df)
boxplot(duration ~ topic, data = data.df, ylab = "Duration of conversation")
Що дає:
> print(data.df)
topic duration
1 Gossip 6
2 Gossip 7
3 Gossip 8
4 Gossip 9
5 Sports 2
6 Sports 3
7 Sports 4
8 Sports 5
9 Weather 4
10 Weather 5
11 Weather 6
12 Weather 7
Використовуючи "Плітки" як опорний рівень для "Теми" та визначаючи бінарні фіктивні змінні для "Спорт" та "Погода", ми можемо здійснити множинні регресії.
> model.lm <- lm(duration ~ topic, data = data.df)
> summary(model.lm)
Call:
lm(formula = duration ~ topic, data = data.df)
Residuals:
Min 1Q Median 3Q Max
-1.50 -0.75 0.00 0.75 1.50
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.5000 0.6455 11.619 1.01e-06 ***
topicSports -4.0000 0.9129 -4.382 0.00177 **
topicWeather -2.0000 0.9129 -2.191 0.05617 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.291 on 9 degrees of freedom
Multiple R-squared: 0.6809, Adjusted R-squared: 0.6099
F-statistic: 9.6 on 2 and 9 DF, p-value: 0.005861
Ми можемо трактувати оцінений перехоплення як надання середньої тривалості розмов пліток як 7,5 хвилин, а розрахункові коефіцієнти для манекенів, що показують, як показ спортивних розмов, в середньому на 4 хвилини коротші, ніж плітки, в той час як розмови про погоду були на 2 хвилини коротші, ніж плітки. Частина виходу - коефіцієнт визначення . Одне трактування цього полягає в тому, що наша модель пояснює 68% розбіжності в тривалості розмови. Інша інтерпретація є те , що з допомогою вилучення квадратного кореня, ми можемо знайти кілька кореляції Коефіцієнт .
> rsq <- summary(model.lm)$r.squared
> rsq
[1] 0.6808511
> sqrt(rsq)
[1] 0.825137
Зауважте, що 0,825 не є співвідношенням тривалості та теми - ми не можемо співвідносити ці дві змінні, оскільки тема є номінальною. Це насправді являє собою співвідношення між спостережуваними тривалістю та тими, які передбачили (підходили) нашою моделлю. Обидві ці змінні є числовими, тому ми можемо їх співвіднести. Насправді встановлені значення - це лише середня тривалість для кожної групи:
> print(model.lm$fitted)
1 2 3 4 5 6 7 8 9 10 11 12
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5
Просто для перевірки, співвідношення Пірсона між спостережуваними та встановленими значеннями:
> cor(data.df$duration, model.lm$fitted)
[1] 0.825137
Ми можемо візуалізувати це на сюжетній схемі:
plot(x = model.lm$fitted, y = data.df$duration,
xlab = "Fitted duration", ylab = "Observed duration")
abline(lm(data.df$duration ~ model.lm$fitted), col="red")
Сила цього взаємозв'язку візуально дуже схожа на силу сюжетів квартету Anscombe, що не дивно, оскільки у всіх співвідношень Пірсона приблизно 0,82.
Ви можете бути здивовані, що з категоричною незалежною змінною я вирішив зробити (багаторазову) регресію, а не односторонню ANOVA . Але насправді це виявляється рівнозначним підходом.
library(heplots) # for eta
model.aov <- aov(duration ~ topic, data = data.df)
summary(model.aov)
Це дає резюме з однаковою статистикою F та p -значення:
Df Sum Sq Mean Sq F value Pr(>F)
topic 2 32 16.000 9.6 0.00586 **
Residuals 9 15 1.667
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Знову ж таки, модель ANOVA підходить для групи, як і регресія:
> print(model.aov$fitted)
1 2 3 4 5 6 7 8 9 10 11 12
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5
Це означає, що кореляція між встановленими та спостережуваними значеннями залежної змінної така ж, як і для моделі множинної регресії. Міра для "множини поясненої дисперсії" для множинної регресії має еквівалент ANOVA, (у квадраті). Ми можемо бачити, що вони відповідають.
> etasq(model.aov, partial = FALSE)
eta^2
topic 0.6808511
Residuals NA
У цьому сенсі найближчим аналогом "кореляції" між номінальною пояснювальною змінною та безперервною відповіддю буде , квадратний корінь , що є еквівалентом множинного коефіцієнта кореляції для регресії. Це пояснює коментар, що "Найприродніший показник асоціації / кореляції між номінальною (прийнятою як IV) та шкалою (прийнятою як DV) змінною є ета". Якщо вас більше цікавить пропорція поясненої дисперсії, тоді ви можете дотримуватися ета-квадрат (або його еквівалент регресії ). Для ANOVA часто трапляється частковеета в квадрат. Оскільки ця ANOVA була односторонньою (існував лише один категоричний предиктор), частковий етап квадрата такий самий, як ета-квадрат, але все змінюється в моделях із більшою кількістю прогнозів.
> etasq(model.aov, partial = TRUE)
Partial eta^2
topic 0.6808511
Residuals NA
Однак цілком можливо, що ні "кореляція", ні "пояснена дисперсія" не є мірою ефекту, який ви хочете використовувати. Наприклад, ваша увага може більше лежати на тому, як засоби відрізняються між групами. Це запитання та відповідь містять більше інформації про етапи квадрата, часткову етажу квадрата та різні альтернативи.