具有低r平方值的非线性回归问题

具有低r平方值的非线性回归问题,r,ggplot2,linear-regression,R,Ggplot2,Linear Regression,我试图在数据集上拟合一条非线性回归线,但拟合线看起来很奇怪,因为它从y轴的中间开始,因此R平方值也很低(蓝线r2=50)。我想如果我能把它改成红线,可能会得到更好的r平方。是这样吗 数据: x <- c(72925.54, 1169812.77, 62098.7, 567929.36, 46506.39, 275755.22, 31651.06, 17552.06, 6065.29, 52617.75, 32729.35, 50706.11, 6169.27, 4360.01,

我试图在数据集上拟合一条非线性回归线,但拟合线看起来很奇怪,因为它从y轴的中间开始,因此R平方值也很低(蓝线r2=50)。我想如果我能把它改成红线,可能会得到更好的r平方。是这样吗

数据:

    x <- c(72925.54, 1169812.77, 62098.7, 567929.36, 46506.39, 275755.22, 
31651.06, 17552.06, 6065.29, 52617.75, 32729.35, 50706.11, 6169.27, 
4360.01, 26799.12, 20747.9, 15518.09, 26800.22, 67470.81, 613530.49, 
4813.84, 17286.46, 1537712.05, 1466311.98, 18952.34, 49014.31, 
1408119.34, 160026.59, 17802.44, 447694.5, 18220.26, 13113.15, 
10206.27, 415138.24, 1572750.08, 140690.08, 16414.01, 51985.79, 
2025197.14)

    y <- c(30.66, 48.66, 49.92, 14.63, 7.77, 35.79, 25.1, 4.59, 8.26, 
8.99, 33.49, 15.94, 6.32, 11.78, 10.77, 28.08, 9.33, 37.26, 53.99, 
25.72, 40.54, 44.26, 48.62, 26.07, 28.32, 36.21, 53.59, 33.42, 
39.2, 70.21, 39.16, 34.65, 36.5, 55.87, 47.59, 46.09, 34.38, 
29.79, 53.1)

#my df
df <- data.frame(x,y)
library(ggplot2)
p2 <- df %>%
  ggplot(aes(x, y)) +
  xlab("x axis") + ylab("y axis") +
  geom_point(color = 'black', alpha = 0.5, size=2) +
  geom_smooth(se = FALSE, method = "lm", formula = y ~ (log(x)), colour = 'blue', size = 2)+
  theme_tq() +
  labs(title = "Plot 1")

p2

#calculating r-squared
yy <- predict(lm(y ~ log(x), data = df))
r2 <- cor(y, yy)^2

x我的方程搜索找到了两个参数的方程“y=a+b*ln(x)”,参数a=-1.6833016837382591E+01和b=4.4249791262770692E+00,得出RMSE=14.1和R平方=0.241


我不认为你是对的,但我建议你先在对数刻度上画出来。这不是一个非线性回归。还有,你是如何适应红线的?如果你有另一个模型,计算它的r平方?红线只是一个假设。我现在已经按照@Roland的建议在对数刻度上绘制了这张图,我不认为我可以改进它,但我看到了什么!:(看起来很棒!你能不能也把代码添加到这个图表中,这样我也能接受它作为正确答案?