Я ищу, как (визуально) объяснить простую линейную корреляцию для студентов первого курса.
Классический способ визуализации - построить график рассеяния 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). Другой вариант - выделить одну точку и показать, как она «лучше». объяснил "благодаря линии регрессии. Любой вклад будет оценен.
источник
require(mlbench) ; cor( mlbench.smiley()$x ); plot(mlbench.smiley()$x)
Ответы:
Вот несколько предложений (о вашем графике, а не о том, как я бы проиллюстрировал анализ корреляции / регрессии):
rug()
;Следует отметить, что этот график предполагает, что X и Y являются непарными данными, в противном случае я бы придерживался графика Бланда-Альтмана ( против ) в дополнение к диаграмме рассеяния.( X + Y ) / 2( Х- Y) ( Х+ Y) / 2
источник
Не отвечая на ваш точный вопрос, но следующие могут быть интересны, визуализируя одну возможную ловушку линейных корреляций, основанную на ответе от stackoveflow :
Ответ @Gavin Simpson и @ bill_080 также включает в себя хорошие графики корреляции в той же теме.
источник
У меня было бы два двухпанельных графика, оба имели бы график xy слева и гистограмму справа. На первом графике горизонтальная линия размещается в среднем по y, и линии проходят от этого до каждой точки, представляя остатки значений y от среднего. Гистограмма с этим просто отображает эти остатки. Затем в следующей паре график xy содержит линию, представляющую линейное приближение, и снова вертикальные линии, представляющие остатки, которые представлены в гистограмме справа. Держите ось х гистограмм постоянной, чтобы выделить сдвиг к более низким значениям в линейной подгонке относительно среднего значения «подгонка».
источник
Я думаю, что вы предлагаете хорошо, но я бы сделал это в трех разных примерах
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-навыки в построении графиков совершенно безнадежны, поэтому я не могу предложить большую помощь здесь.
источник