将函数叠加到R中的散点图上

eufgjt7s  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(116)

我想加上一条红线:

我试图添加一个函数来覆盖我已经做好的散点图,理想的情况是有一个类似于图片中的输出,上面有一条红色的线。我如何能够在我的散点图中添加一个函数(比如一个y=C/ln(x)的形式)?我将调整常数,尝试让它匹配类似于图像中粗略绘制的休息线。
下面是我当前的代码,其中x和y值来自收集的数据表-

View(DataCollection)
plot(x=DataCollection$`x`, y= DataCollection$`y`,
     xlab = "x",
     ylab = "y",
     xlim = c(0, 2000),
     ylim = c(0, 100),
     pch=20,
     cex=0.2,
     main = "y against x",
)
wnavrhmk

wnavrhmk1#

下面的代码将估计适当的C项,因为y=C/log(x)y=C*(1/log(x))相同,您可以使用OLS进行估计。

library(ggplot2)
set.seed(519)
x <- c(runif(90, 10,100), runif(10, 100, 2000))
y <- 2/log(x) + rnorm(100, 0, .05)
dat <- data.frame(x=x, y=y)
ggplot(dat, aes(x=x, y=y)) + 
  geom_point() + 
  geom_smooth(method="lm", formula = y ~ I(1/log(x))-1, col="red", se=FALSE) + 
  theme_classic()

reprex package(v2.0.1)于2022年12月31日创建
如果您想直接设置C的值,您可以通过设置const来完成以下操作:

library(ggplot2)
const <- 2
set.seed(519)
x <- c(runif(90, 10,100), runif(10, 100, 2000))
y <- 2/log(x) + rnorm(100, 0, .05)
dat <- data.frame(x=x, y=y)
dat <- dat[order(dat$x), ]
ggplot(dat, aes(x=x, y=y)) + 
  geom_point() + 
  geom_function(fun = ~const/log(.x), col="red") + 
  theme_classic()

reprex package(v2.0.1)于2022年12月31日创建

相关问题