在r中的散点图中添加中间“最佳拟合线”

问题描述 投票:1回答:2

我想在散点图中添加最佳拟合的经验线,该散点图基于x的范围的中值y,例如在x = 0.105时,x的中值y的y线在0.100到0.110的范围内,在x = 0.115时,x的中值y的y线在0.110到0.120的范围内等。这些y线点将连接起来。这些x只是为了说明,我想在他们的选择上灵活。 (我不想要参数拟合,谢谢)

这模拟了一些数据:

x<-0.1+runif(n=1000,min=0,max=1)
y<-1/x+runif(n=1000,min=0,max=1)*(1-x)*5
plot(x,y)

这是橙色中线的模拟。

mock up of desired plot

r curve-fitting scatter-plot
2个回答
2
投票

我会将lowess平滑视为选项。查看关于你希望它如何“平滑”的f选项。我在下面复制了一些文档。

选项f更平滑的范围。这给出了图中点的比例,其影响每个值的平滑。值越大,平滑度越高。

x<-0.1+runif(n=1000,min=0,max=1)
    y<-1/x+runif(n=1000,min=0,max=1)*(1-x)*5    
    plot(x, y)
    lines(lowess(x, y), col=2)
    lines(lowess(x, y, f=.2), col=3)

1
投票

在你的plot()功能之后,尝试以下方法:

lines( x = lowess( x = x, y = y ), col = "darkgoldenrod2", lwd = 4 )

来自?lowess

lowess返回一个包含组件x和y的列表,它们给出了平滑的坐标。可以使用函数lines()将平滑点添加到原始点的图中。

© www.soinside.com 2019 - 2024. All rights reserved.