如何使用R将RMSE,斜率,截距和r ^ 2添加到绘图中?我附加了一个带有样本数据的脚本,这个格式与我的真实数据集类似 - 不幸的是,我处于静止状态。是否有更简单的方法将这些统计数据添加到图表中,而不是从等式创建对象并将其插入text()
?理想情况下,我希望将统计信息显示在图表上。我怎么能做到这一点?
## Generate Sample Data
x = c(2,4,6,8,9,4,5,7,8,9,10)
y = c(4,7,6,5,8,9,5,6,7,9,10)
# Create a dataframe to resemble existing data
mydata = data.frame(x,y)
#Plot the data
plot(mydata$x,mydata$y)
abline(fit <- lm(y~x))
# Calculate RMSE
model = sqrt(deviance(fit)/df.residual(fit))
# Add RMSE value to plot
text(3,9,model)
答案 0 :(得分:17)
这是一个使用基本图形和?plotmath
绘制图并注释它的版本
## Generate Sample Data
x = c(2,4,6,8,9,4,5,7,8,9,10)
y = c(4,7,6,5,8,9,5,6,7,9,10)
## Create a dataframe to resemble existing data
mydata = data.frame(x,y)
## fit model
fit <- lm(y~x, data = mydata)
接下来,计算要在注释中显示的值。我更喜欢bquote()
,.(foo)
中标记的任何内容都将替换为对象foo
的值。答案@mnel指出你在评论中使用substitute()
来实现同样的目的,但通过不同的方式。因此,我在工作区中为您希望在注释中显示的每个值创建对象:
## Calculate RMSE and other values
rmse <- round(sqrt(mean(resid(fit)^2)), 2)
coefs <- coef(fit)
b0 <- round(coefs[1], 2)
b1 <- round(coefs[2],2)
r2 <- round(summary(fit)$r.squared, 2)
现在使用?plotmath
中描述的构造来构建等式:
eqn <- bquote(italic(y) == .(b0) + .(b1)*italic(x) * "," ~~
r^2 == .(r2) * "," ~~ RMSE == .(rmse))
完成后,您可以绘制情节并用表达式
进行注释## Plot the data
plot(y ~ x, data = mydata)
abline(fit)
text(2, 10, eqn, pos = 4)
给出了: