首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从回归直线方程中删除不需要的字符

从回归直线方程中删除不需要的字符
EN

Stack Overflow用户
提问于 2019-04-12 23:37:30
回答 2查看 232关注 0票数 1

在我以前使用的R/R-Studio版本中,当将回归公式应用于ggplot时,我会得到一个正确呈现回归方程的图。但是,现在我已经切换到Rv3.5.3,我在回归行中获得了额外的字符。我已经修改了前面的一个问题(Adding Regression Line Equation and R2 on SEPARATE LINES graph)作为示例:

代码语言:javascript
复制
library(ggplot2)
set.seed(5)
df <- data.frame(x = c(1:50))
df$y <- df$x + rnorm(50, sd=5)

lm_eqn <- function(df){
  m <- lm(y~x, df)
  eq <- substitute(italic(hat(y)) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
                   list(a = format(coef(m)[1], digits=3),
                        b = format(coef(m)[2], digits=3),
                        r2 = format(summary(m)$r.squared, digits=3)))
  as.character(as.expression(eq))}

ggplot(data=df, aes(x=x, y=y))+
  geom_smooth(method="lm", se=FALSE, color="black", formula=y~x)+
  geom_point()+
  geom_text(x=10, y=50, label=lm_eqn(df), parse=TRUE)

我希望回归行文本是

y^=-0.162+1.02.x,r²=0.886

然而,出现的是

y^=c(-0.162)+c(1.02)·x,r²=0.886

有没有办法删除c(),这在前面的ggplot中没有显示,或者这是一个bug?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-16 03:50:39

谢谢杰克的回答。我希望保留lm_eqn函数的格式,使其具有yhat和斜体,但您的响应让我重新考虑了原始代码。在尝试了更多之后,我将代码修改为:

代码语言:javascript
复制
lm_eqn <- function(df){
  m <- lm(y~x, df)
  eq <- substitute(italic(hat(y)) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
                   list(a = signif(m$coef[[1]], 3),
                        b = signif(m$coef[[2]], 3),
                        r2 = signif(summary(m)$r.squared, 3)))
  as.character(as.expression(eq))}

这有一个幸运的结果,情节现在呈现为:

因此,从去年开始,在系数周围额外包含一组[]是必要的。再次感谢您为我指明了解决方案!

票数 1
EN

Stack Overflow用户

发布于 2019-04-13 00:02:45

然而,这里是一个开始,在你觉得有必要的时候调整数学文本的格式:

代码语言:javascript
复制
library(ggplot2)

set.seed(5)
df <- data.frame(x = c(1:50))
df$y <- df$x + rnorm(50, sd=5)


mod <- lm(y~x, df)

label <- paste('y = ', round(mod$coefficients[[1]],2), ' + ', round(mod$coefficients[[2]],2),
               'x', ',   r^2 = ', round(summary(mod)$adj.r.squared,2), sep='')


ggplot(data=df, aes(x=x, y=y))+
  geom_smooth(method="lm", se=FALSE, color="black", formula=y~x)+
  geom_point()+
  geom_text(x=10, y=50, label=label)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55655129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档