更改计算最佳拟合线的方法

Posted

技术标签:

【中文标题】更改计算最佳拟合线的方法【英文标题】:Changing the method of calculating the line of best fit 【发布时间】:2021-05-24 14:36:02 【问题描述】:

在使用 R 的 lm() 函数计算最适合我的数据的线时,我遇到了一个问题:我的数据集中的一两个主要异常值迫使该线位于不适合的地方帮助我了解我的数据。

我的目标是更改lm() 用于计算从残差平方和到残差绝对值之和的线的方法。

有人知道怎么做吗?

【问题讨论】:

查看 quantreg 包以及 Robust CRAN Task View cran.r-project.org/web/views/Robust.html 如果您提供数据集和分析的可重现代码,解决您的问题会更容易。 我认为这里的一般做法是去除异常值,因为它严重影响线性模型的泛化。 【参考方案1】:

我将建议一种替代方法,稳健的线性模型;这些不使用绝对偏差的平均值(或总和),而是降低异常值的影响。 MASS::rlmlm 具有基本相同的语法:这里我在 ggplot 上下文中说明它。

您也可以使用robustbase::lmrob() 来实现相同方法的不同实现,或者(如 G. Grothendieck 所建议的)quantreg::rq() 来拟合中位数的直线模型(这基本上对应于您所要求的首先是 MAD 回归)。

library(MASS)
set.seed(101)
## generate correlated data (positive slope)
dd <- as.data.frame(MASS::mvrnorm(20, mu=c(0,0), 
                    Sigma=matrix(c(1,0.95,0.95,1),2)))  
dd <- rbind(dd, c(5,-5))  ## add an outlier
library(ggplot2); theme_set(theme_classic())
ggplot(dd, aes(V1,V2)) + 
     geom_point() + geom_smooth(method="lm") + 
     geom_smooth(method="rlm", colour="red")

【讨论】:

以上是关于更改计算最佳拟合线的方法的主要内容,如果未能解决你的问题,请参考以下文章

数据可视化实例: 带线性回归最佳拟合线的散点图(matplotlib,pandas)

数据可视化实例: 带线性回归最佳拟合线的散点图(matplotlib,pandas)

如何在 Python 中测量最佳拟合线的质量? [复制]

SQL 中的线性回归置信区间

excel曲线拟合中的决定系数R平方是如何求出来的?

如何使用 Python 和 Numpy 计算 r 平方?