检查两个变量之间的关联时,SD 线相对于回归线的附加值是多少?

机器算法验证 标准差 描述性统计 关联度量
2022-04-09 00:23:02

在探索新数据集时,我正在尝试采用不同的做法。特别是,如何检查两个变量之间的关联。

例如步骤(不一定按顺序):

  1. 绘制原始数据的 y x x 散点图以直观地查看关系。
  2. 计算每个变量的汇总统计数据(平均值和标准差)
  3. 计算相关系数r
  4. 绘制 OLS 回归线,计算其斜率和截距
  5. ETC....

我在弗里德曼的统计书中遇到了“SD线”,它被定义为:

“穿过平均点并以每个水平 SD 的一个垂直 SD 的速率上升的线”Freedman, D., Pisani, R., & Purves, R. (2007)。统计(第 4 版)。

由于这本书(“统计学”)是一本规范的教科书,我认为选择讨论 SD 线是为了表明该线的重要性。然而,一个简单的谷歌搜索“SD line”这个词并没有产生那么多独立的结果。其中大部分直接来自弗里德曼的书。这告诉我它不是一般双变量分析的中心概念。

将 SD 与 OLS 回归线进行比较时,回归线似乎比 SD 线更能从 x 预测 y。因此,我想知道绘制 SD 线是否有任何好处或附加值,而我在绘制回归线时不会有这些好处或附加值。

使用数据集的示例mtcars,重点关注权重mpg之间的关联

data(mtcars)

## calculate means
mean_wt <- mean(mtcars$wt)
mean_mpg <- mean(mtcars$mpg)

## calculate standard deviations
sd_wt <- sd(mtcars$wt)
sd_mpg <- sd(mtcars$mpg)

## scatter plot
plot(x = mtcars$wt, y = mtcars$mpg)

## add the "point of averages"
points(mean_wt, mean_mpg, col = "red", cex = 1.5, pch = 16)

## calculate the slope of the sd line
slope <- -1*sd_mpg/sd_wt

## plot the sd line
curve(expr = x*slope + (mean_mpg - slope*mean_wt), add = TRUE, col = 'blue', lwd = 2, type = "l", lty = 2)

## plot the regression line
model <- lm(mpg ~ wt, data = mtcars)
abline(model, col = "orange", lwd = 2)

## legend
legend("topright",
       legend = c("Regression line", "SD line"),
       col = c("orange", "blue"),
       lty = c(1, 2),
       lwd = c(2, 2))

在此处输入图像描述

因此,我的问题是:SD 线如何增加人们对两个变量之间关系的理解,以增加或补充回归线已经说明的内容?

1个回答

SD 线是一种教学和视觉辅助工具,可帮助查看常规回归线的斜率关系。

slope regression =rxyσyσx=rxyslope SD line

给出或多或少的陡峭或平坦的线σyσx

回归线的斜率始终小于 SD 线(您可能会将其与回归均值联系起来)。小多少取决于相关性。SD 线将有助于查看和获得回归线的视图/解释。

越高,模型对数据方差的解释越多,回归线越接近 SD 线。R2


下图可以说明 SD 线如何帮助/工作。对于但具有不同相关性的数据,绘制 SD 线和回归线。请注意,对于较大的相关性,回归线更接近于 te SD 线(但仍然始终具有较小的斜率)。σx=σy=1

例子

# random data
set.seed(1)
x <- rnorm(100,0,1)
y <- rnorm(100,0,1)

#normalizing
x <- (x-mean(x))/sd(x)
y <- (y-mean(y))/sd(y)

#making x and y uncorrelated
x <- x-cor(x,y)*y
cor(x,y)
x <- x/sd(x)

# plotting cases with sd_x=sd_y=1 and different correlations
for (rho in c(0.1,0.3,0.5,0.7)) {
  b <- sqrt(1/(1-rho^2)-1)
  z <- (y+b*x)/sqrt(1+b^2)
  plot(x,z,
       xlim = c(-5,5),ylim=c(-5,5),
       pch=21,col=1,bg=1,cex=0.7 )
  title(bquote(rho == .(rho)),line = 1)
  lines(c(-10,10),c(-10,10),lty=2)
  lines(c(-10,10),c(-10,10)*rho)
  if (rho == 0.1) {
    legend(-5,5,c("sd line","regression line"),lty=c(2,1),cex=0.9)
  }
}

类似的描述

有关的