当我在ggplot中绘制数据并添加回归线时,根据哪个变量定义为x和y,我得到不同的斜率。我预计这些情节只是反映出来,但事实并非如此。我错过了……
你打电话的时候 geom_smooth() ,它计算形式的简单线性回归(或OLS回归)的斜率 y = a + bx 。
geom_smooth()
y = a + bx
OLS就是在努力想出最好的预测 y 变量,给定的值 x 变量。这是一个不同的目标,而不是试图提出最好的预测 x 变量,给定的值 y 变量。
y
x
因此,如果你改变顺序 aes(x = v1, y = v2) 至 aes(x = v2, y = v1) ,你正在使用 geom_smooth() 实现两个不同的,不同的目标。
aes(x = v1, y = v2)
aes(x = v2, y = v1)
想象一下,您有以下数据集:
当你运行OLS回归时 y ~ x ,你想出了以下模型
y ~ x
y = 0.167 + 1.5*x
这优化了预测 y 通过进行以下预测,这些预测具有相关的错误:
OLS回归的预测在最右列中的值的总和(即,平方和)尽可能小的意义上是最优的。
当你运行OLS回归时 x ~ y ,你想出了一个不同的模型:
x ~ y
x = -0.07 + 0.64*y
这通过进行以下预测以及相关错误来优化x的预测。
同样,这是最佳的,因为最右边的列的值总和尽可能小(等于 0.071 )。
0.071
现在,假设您试图反转第一个模型, y = 0.167 + 1.5*x ,使用代数,给你模型 x = -0.11 + 0.67*x 。
x = -0.11 + 0.67*x
这将为您提供以下预测和相关错误:
最右边一列中的值的总和是 0.074 ,它大于你在y上回归x得到的模型的相应和,即 x ~ y 模型。换句话说,“倒置”模型比简单模型做得更糟糕 x ~ y 回归模型。
0.074