取代plot()中的图例并从lm()添加调整后的R2

时间:2017-08-21 05:19:50

标签: r plot lm

如何在“调整后的R2 =”中标注2并从summary()导入值?

举个例子:

#Multiple linear regression model
nitrate<-SSwells[,6]
predictors<-SSwells[,9:31]
linear<-lm(nitrate~.,data=predictors)
summary(linear)

#Obs vs. predicted
obs <-nitrate
pred <-linear$fitted.values
obs.pred <- lm(obs~pred)
plot(obs~pred, main="Observed vs. Predicted \nMultiple Linear 
Regression", xlim=c(0,14), ylim=c(0,14), ylab="Predicted Nitrate [mg L-1 
NO3-N]", xlab="Observed Nitrate [mg L-1 NO3-N]")
abline(obs.pred)

通过一些搜索,我发现:

lgd <- bquote(R^2 == .(round(summary(obs.pred)$r.squared,3)))
legend("bottomright", legend=lgd)

给我一​​个R2上标2的图例,但当我将其修改为:

lgd <- bquote("Adjusted" R^2 == .(round(summary(obs.pred)$adj.r.squared,3)))
legend("bottomright", legend=lgd)

这样它可以说调整后的R2为新值我得到错误

Error: unexpected symbol in "lgd <- bquote("Adjusted" R"

我试过从调整后的引号中取出引号,不起作用。我试过在它前面放一个单引号,不起作用。我已经阅读了帮助文件和示例,我无法弄明白。

然后我尝试了:

text(2,12,expression(paste("Adjusted ", R^2, " =", sep = "")))

这是有效的,除了我无法弄清楚如何从摘要(obs.pred)$ adj.r.squared导入调整后的R2来超越=,如果我这样做:

text(2,12,expression(paste("Adjusted ", R^2, " =", 
round(summary(actpred)$r.squared,3), sep = "")))

它只打印文本而不是实际值。

有一种简单的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我同意@ jruf003,

lgd <- bquote(Adjusted~R^2 == .(round(summary(obs.pred)$r.squared,3)))

  

注意:不要引用&#34;调整&#34;在bquote(...)表达式

然后,您可以将其添加到剧情的主标题中 plot(1:10, main=lgd)

输出 snap1