Я ищу, как (визуально) объяснить простую линейную корреляцию для студентов первого курса.
Классический способ визуализации - построить график рассеяния 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)