如何解决更改最佳拟合线的计算方法
在使用 R 的 lm()
函数计算最适合我的数据的线时,我遇到了一个问题:我的数据集中的一两个主要异常值迫使该线位于它不适合的地方不能帮助我理解我的数据。
我的目标是改变 lm()
用于计算从残差平方和到残差绝对值总和的直线。
有人知道怎么做吗?
解决方法
我将推荐一种替代方法,鲁棒线性模型;这些不使用绝对偏差的平均值(或总和),而是降低异常值的影响。 MASS::rlm
的语法与 lm
基本相同:这里我在 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,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")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。