检查线性回归模型的线性?
数据挖掘
预测建模
线性回归
相关性
共线性
2022-03-08 15:01:53
2个回答
我喜欢带有回归样条的 GAM(广义加法模型):
# Load data
library(ISLR)
a = Auto
# Run GAM with splines
library(gam)
g = gam(mpg~s(displacement,5)+s(horsepower,5),data=a)
plot(g, se=T)
结果(绘图)向您表明,displacement对于较低的值(< 250 左右),可以很好地近似于线性函数。但是,大约 250 处有一个“扭结”,因此总体而言,这里的线性近似不是很好。
有关详细信息,请参阅ISL 第 7 章。还有Python和R实验室,您可以在其中查看代码详细信息。
有关更多详细信息,另请参阅R 中的此示例和模拟数据。
或者,查看回归后的 Q-Q 图,例如在 R 中:
l = lm(mpg~s(displacement,5)+s(horsepower,5),data=a)
plot(l)
确定 2 列是否具有线性关系的一种常用指标是 R-Squared。您可以使用这样的函数来计算值。
rsq <- function(x, y) 摘要(lm(y~x))$r.squared rsq(obs, mod)
值越接近 1,关系越线性。
用于测量 2 个变量(线性或其他)之间相关性的类似指标是 Pearson 相关性 R
cor_p <- 函数 (x, y) cor(x, y) ^ 2
绝对值越接近1(也可以是负数),关系越强。这在许多情况下都很有用。
其他要考虑的指标是 MSE(均方误差)或 RMSE(均方根误差)
如果指标值较低,您还可以查看转换其中一列,看看转换后的列是否比原始列更线性相关。一些常见的转换是 log()、sqrt()、exp() 等。
此外,某些模型通常可以按原样处理数据,无需使用转换。这方面的一个例子是任何随机森林或决策树模型。在任何情况下,仅仅因为数据不具有线性关系而排除数据通常不是最佳解决方案,因为您可能会消除一些方差。删除特征的一些正当理由是与响应的低方差或低相关性、稀疏/缺失等。如果数据无助于改善结果,模型可以选择忽略数据。


