由于 Y 和 X 的相关性,如何呈现解释方差的增益?

机器算法验证 r 数据可视化 回归 相关性
2022-03-02 01:55:22

我正在寻找如何(直观地)向一年级学生解释简单的线性相关性。

可视化的经典方法是给出带有直线回归线的 Y~X 散点图。

最近,我想到了通过在绘图中添加 3 个更多图像来扩展这种类型的图形的想法,给我留下:y~1 的散点图,然后是 y~x,resid(y~x)~x,最后是残差(y~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 之前和之后的方差大小的行)另一种选择是突出显示一个点并显示它是如何“更好解释“感谢回归线。任何输入将不胜感激。

4个回答

以下是一些建议(关于您的情节,而不是关于我将如何说明相关/回归分析):

  • 您在左右边距中显示的两个单变量图可以通过调用来简化rug()
  • 的密度图或箱线图会提供更多信息,这可能会让人想起在这种情况下毫无意义的双正态假设的想法;XY
  • 除了回归线之外,还值得展示趋势的非参数估计,例如黄土(这是一种很好的做法,并且对可能的局部非线性提供了丰富的信息);
  • 根据杠杆效应或库克距离,可以突出显示点(用不同的颜色或大小),即显示单个值在估计回归线上的影响力的任何度量。我将支持@DWin 的评论,我认为最好强调单个点如何“降低”拟合优度或导致某种偏离线性假设。

值得注意的是,该图假设 X 和 Y 是非配对数据,否则我会坚持使用 Bland-Altman 图(),以及散点图。(XY)(X+Y)/2

没有回答您的确切问题,但是通过根据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 的回答还包括同一主题中的相关图。

我有两个双面板图,左侧都有 xy 图,右侧有直方图。在第一个图中,水平线放置在 y 的平均值处,并且线从该点延伸到每个点,表示 y 值与平均值的残差。直方图只是简单地绘制了这些残差。然后在下一对中,xy 图包含代表线性拟合的线和代表残差的垂直线,它们在右侧的直方图中表示。保持直方图的 x 轴不变,以突出显示线性拟合中相对于平均“拟合”的较低值的转变。

我认为你的建议很好,但我会在三个不同的例子中这样做

1) X 和 Y 完全不相关。只需从生成 y 的 r 代码中删除 "x" (y1<-rnorm(50))

2) 您发布的示例 (y2 <- x+rnorm(50))

3) X 和 Y 是同一个变量。只需从生成 y (y3<-x) 的 r 代码中删除“rnorm(50)”

这将更明确地显示增加相关性如何降低残差的可变性。您只需要确保垂直轴不会随着每个绘图而改变,如果您使用默认缩放比例可能会发生这种情况。

所以你可以比较三个图 r1 vs x、r2 vs x 和 r3 vs x。我使用“r”分别表示使用 y1、y2 和 y3 拟合的残差。

我在绘图方面的 R 技能相当无望,所以在这里我无法提供太多帮助。