Як представити виграш у поясненій дисперсії завдяки кореляції Y та X?


11

Я шукаю, як (візуально) пояснити просту лінійну кореляцію для студентів першого курсу.

Класичним способом візуалізації було б дати графік розсіяння Y ~ X прямою регресійною лінією.

Нещодавно мені прийшла ідея розширити цей тип графіки, додавши до сюжету ще 3 зображення, залишивши мене з: графік розкидання y ~ 1, потім y ~ x, остаточний (y ~ x) ~ x і нарешті залишків (y ~ x) ~ 1 (з середнім значенням)

Ось приклад такої візуалізації: alt текст

І код R для його створення:

set.seed(345)
x <- runif(50) * 10
y <- x +rnorm(50)


layout(matrix(c(1,2,2,2,2,3 ,3,3,3,4), 1,10))
plot(y~rep(1, length(y)), axes = F, xlab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)
plot(y~x, ylab = "", )
abline(lm(y~x), col = 2, lwd = 2)

plot(c(residuals(lm(y~x)) + mean(y))~x, ylab = "", ylim = range(y))
abline(h =mean(y), col = 2, lwd = 2)

plot(c(residuals(lm(y~x)) + mean(y))~rep(1, length(y)), axes = F, xlab = "", ylab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)

Що призводить мене до мого запитання: Я буду вдячний за будь-які пропозиції щодо вдосконалення цього графіка (будь-якого тексту, позначок чи будь-якого іншого виду відповідних візуалізацій). Додавання відповідного коду R також буде непоганим.

Один із напрямків - додати деяку інформацію R ^ 2 (або за текстом, або якось додати рядки, що представляють величину дисперсії до і після введення x). Ще одним варіантом є виділити одну точку та показати, як це "краще пояснено "завдяки лінії регресії. Будь-який вклад буде вдячний.


1
У той же час ви показуєте, наскільки хороша лінійна регресія, будь ласка, також покажіть своїй аудиторії, як вона провалюється в ситуаціях, коли відносини не описані прямо прямими лініями:require(mlbench) ; cor( mlbench.smiley()$x ); plot(mlbench.smiley()$x)
DWin

Буде робити Двін ... :-)
Тал Галілі

Відповіді:


4

Ось кілька пропозицій (щодо вашого сюжету, а не про те, як я би проілюстрував кореляційний / регресійний аналіз):

  • Два одноманітні сюжети, показані у правому та лівому краях, можуть бути спрощені за допомогою виклику rug();
  • XY
  • Окрім лінії регресії, варто показати непараметричну оцінку тенденції, як льос (це є хорошою практикою та дуже інформативно про можливі локальні нелінійності);
  • Бали можуть бути виділені (з різними кольорами чи розмірами) відповідно до ефекту важеля або відстані Кука, тобто будь-якого з тих заходів, які показують, як впливають окремі значення на оціночну лінію регресії. Я буду другим коментарем @ DWin, і я думаю, що краще виділити, як окремі пункти "погіршують" доброту придатності або спонукають до якогось відступу від припущення про лінійність.

(XY)(X+Y)/2


1

Не відповідаючи на ваше точне запитання, але наступні моменти можуть бути цікавими, візуалізуючи одну можливу підводну лінійну кореляцію на основі відповіді з stackoveflow :

par(mfrow=c(2,1))

set.seed(1)
x <- rnorm(1000)
y <- rnorm(1000)
plot(y~x, ylab = "", main=paste('1000 random values (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

x <- c(x, 500)
y <- c(y, 500)
cor(x,y)
plot(y~x, ylab = "", main=paste('1000 random values and (500, 500) (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

alt текст

Відповідь @Gavin Simpson та @ bill_080 також включає приємні сюжетні кореляції в тій же темі.


1

У мене було б дві діаграми з двома панелями, на обох - графік xy зліва та гістограма праворуч. У першому сюжеті горизонтальна лінія розміщується на середньому значенні y, а лінії простягаються від цього до кожної точки, представляючи залишки значень y від середнього. Гістограма з цим просто описує ці залишки. Потім у наступній парі графік xy містить лінію, що представляє лінійну підгонку і знову вертикальні лінії, що представляють залишки, які представлені в гістограмі праворуч. Тримайте вісь гістограм x постійною, щоб підсвічувати зсув до нижчих значень у лінійному розмірі відносно середнього значення "fit".


1

Я думаю, що ви пропонуєте це добре, але я би зробив це на трьох різних прикладах

1) X і Y абсолютно не пов'язані між собою. Просто видаліть "x" з коду r, який генерує y (y1 <-rnorm (50))

2) Приклад, який ви розмістили (y2 <- x + rnorm (50))

3) X є Y - однакова змінна. Просто видаліть "rnorm (50)" з коду r, який генерує y (y3 <-x)

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

Таким чином, ви могли порівняти три графіки r1 vs x, r2 vs x та r3 vs x. Я використовую "r" для позначення залишків від пристосування, використовуючи відповідно y1, y2, y3.

Мої навички роботи R в плані є абсолютно безнадійними, тому я не можу запропонувати великої допомоги тут.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.