Как представить выигрыш в объясненной дисперсии благодаря соотношению Y и X?

11

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

Классический способ визуализации - построить график рассеяния Y ~ X с прямой линией регрессии.

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

Вот пример такой визуализации: альтернативный текст

И код 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();
  • Я нахожу более информативным, чтобы показать график плотности и или коробчатый график, рискуя вызвать идею предположения о би-нормальности, которая не имеет смысла в этом контексте;YИксY
  • В дополнение к линии регрессии, стоит показать непараметрическую оценку тренда, такую ​​как лесс (это хорошая практика и очень информативная информация о возможных локальных нелинейностях);
  • Точки могут быть выделены (с изменяющимся цветом или размером) в соответствии с эффектом Левереджа или расстояниями Кука, т. Е. Любым из тех показателей, которые показывают, насколько влиятельные отдельные значения находятся на предполагаемой линии регрессии. Я буду вторым комментарием @ DWin, и я думаю, что лучше выделить, как отдельные точки «ухудшают» пригодность или приводят к некоторому отклонению от предположения о линейности.

Следует отметить, что этот график предполагает, что X и Y являются непарными данными, в противном случае я бы придерживался графика Бланда-Альтмана ( против ) в дополнение к диаграмме рассеяния.( X + Y ) / 2(Икс-Y)(Икс+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)

альтернативный текст

Ответ @Gavin Simpson и @ bill_080 также включает в себя хорошие графики корреляции в той же теме.

daroczig
источник
1

У меня было бы два двухпанельных графика, оба имели бы график xy слева и гистограмму справа. На первом графике горизонтальная линия размещается в среднем по y, и линии проходят от этого до каждой точки, представляя остатки значений y от среднего. Гистограмма с этим просто отображает эти остатки. Затем в следующей паре график xy содержит линию, представляющую линейное приближение, и снова вертикальные линии, представляющие остатки, которые представлены в гистограмме справа. Держите ось х гистограмм постоянной, чтобы выделить сдвиг к более низким значениям в линейной подгонке относительно среднего значения «подгонка».

Майк Лоуренс
источник
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 против x, r2 против x и r3 против x. Я использую «r», чтобы указать остатки от подгонки, используя y1, y2 и y3 соответственно.

Мои R-навыки в построении графиков совершенно безнадежны, поэтому я не могу предложить большую помощь здесь.

probabilityislogic
источник