我有两个数据集,我使用R的lm命令绘制.下面的第一个图不是以红线为中心.但是右边的第二张图是以线为中心的.

我的问题是:
我用来绘制数据的代码很简单:
data <-read.table("myfile.txt")
dat1x <- data$x1
dat1y <- data$y1
# plot left figure
dat1_lm <- lm(dat1x ~ dat1y)
plot(dat1x ~ dat1y)
abline(coef(dat1_lm),col="red")
dat1_lm.r2 <- summary(dat1_lm)$adj.r.squared;
# repeat the the same for right figure
dat2x <- data$x2
dat2y <- data$y2
dat2_lm <- lm(dat2x ~ dat2y)
plot(dat2x ~ dat2y)
abline(coef(dat2_lm),col="red")
dat2_lm.r2 <- summary(dat2_lm)$adj.r.squared;
Run Code Online (Sandbox Code Playgroud)
使用RMSE分数更新图表:

我正在寻找一个分数,显示正确的数字比左边更好,基于数据居中的预测线.
R平方给出了线的拟合优度,即由线性模型解释的数据集中的变化百分比.解释R平方的另一种方法是模型比平均模型表现得更好.p值给出拟合的显着性,即线性模型的系数显着不同于零.
要提取这些值:
dat = data.frame(a = runif(100), b = runif(100))
lm_obj = lm(a~b, dat)
rsq = summary(lm_obj)[["r.squared"]]
p_value = summary(lm_obj)[["coefficients"]]["b","Pr(>|t|)"]
Run Code Online (Sandbox Code Playgroud)
或者,您可以计算观测值与线性模型结果之间的RMSE:
rmse = sqrt(mean((dat$a - predict(lm_obj))^2))
Run Code Online (Sandbox Code Playgroud)
请注意,这是RMSE a和线性模型.如果你想要RMSE a和b:
rmse = sqrt(mean((dat$a - dat$b)^2))
Run Code Online (Sandbox Code Playgroud)