R 关闭散点图并仅打印回归线

R 关闭散点图并仅打印回归线,r,plot,non-linear-regression,R,Plot,Non Linear Regression,我正在尝试将回归曲线拟合到我的数据中。我的代码生成我想要的绘图和曲线,但是,我不需要散点图——只需要直线。如果我注释掉情节,我的代码就会失败。有没有办法(绕过、关闭、隐藏)散点图 最终,我需要比较图表上的多元回归曲线,散点图会让人分心。而且,我的R2显示为空。R2有系数吗 代码如下 # get underlying plot y <- dataset$'Fuel Consumed 24h' x <-dataset$'Performance Speed'

我正在尝试将回归曲线拟合到我的数据中。我的代码生成我想要的绘图和曲线,但是,我不需要散点图——只需要直线。如果我注释掉情节,我的代码就会失败。有没有办法(绕过、关闭、隐藏)散点图

最终,我需要比较图表上的多元回归曲线,散点图会让人分心。而且,我的R2显示为空。R2有系数吗

代码如下

    # get underlying plot
    y <- dataset$'Fuel Consumed 24h'
    x <-dataset$'Performance Speed'
    plot(x, y, xlab = "Performance Speed", ylab = "24h Fuel Consumption")

    # polynomial
    f <- function(x,a,b,d) {(a*x^2) + (b*x) + d}
    fit <- nls(y ~ f(x,a,b,d), start = c(a=1, b=1, d=1)) 
    co <- round(coef(fit), 2)
    r2 <- format(summary(fit)$r.squared, digits = 3)
    curve(f(x, a=co[1], b=co[2], d=co[3]), add = TRUE, col="red", lwd=2) 
    eq <- paste0("Fuel = ", co[1], "PS^2 ", ifelse(sign(co[2]) == 1, " + ", " - "), abs(co[2]), "PS +", co[3],  "   R2 = ", r2)

    # print equation
    mtext(eq, 3, line =-2)
    mylabel = bquote(italic(R)^2 == .(format(r2, digits = 3)))
    text(x = 1, y = 2.5, r2)
#获取基础绘图

y这里是一个cars数据示例

适合:

要添加另一条曲线,请执行以下操作:

f2 = function(x, a, b) {a + b*x}
co2 = coef(lm(dist ~ speed, data = cars))
curve(f2(x, a = co2[1], b = co2[2]), col="blue", lwd=2, add = T)

编辑:根据user20650建议(由于多边形和nls曲线相同,因此实际上不需要nls)

尝试添加
type=“n”
<代码>绘图(x,y,type=“n”,…
,nls不返回r^2,因为它没有意义(尽管我认为有些软件包有意义)。也就是说,您的模型不是非线性的,您可以使用
lm
rmse <- function(error)
{
  sqrt(mean(error^2))
}
error <- predict(fit, cars) - cars$dist
rms  <- rmse(error)

eq <- paste0("Fuel = ", co[1], "PS^2 ", ifelse(sign(co[2]) == 1, " + ", " - "), abs(co[2]), "PS +", co[3],  "   RMSE = ", round(rms, 2))
curve(f(x, a=co[1], b=co[2], d=co[3]), col="red", lwd=2, from = min(cars$speed), to = max(cars$speed)) 
mtext(eq, 3, line =-2)
f2 = function(x, a, b) {a + b*x}
co2 = coef(lm(dist ~ speed, data = cars))
curve(f2(x, a = co2[1], b = co2[2]), col="blue", lwd=2, add = T)
co3 = coef(lm(dist ~ poly(speed, 2, raw=TRUE), data = cars))
curve(f3(x, a = co3[1], b = co3[2], c = co3[3]), col="grey", lty = 2,  lwd=2, add = T)
legend("topleft", legend = c("nls", "lm", "poly"), col = c("red", "blue", "grey"), lty =c(1,1,2))