首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >构造函数给出线性回归方程

构造函数给出线性回归方程
EN

Stack Overflow用户
提问于 2017-02-04 10:54:47
回答 1查看 67关注 0票数 0

因此,在我的助教的帮助下,我们能够构建这个函数:

代码语言:javascript
运行
复制
lm_eqn <- function(model){mod_frame <- broom::tidy(model)
eqn_string <- sprintf("The response is equal to %.2f ", mod_frame$estimate[1])
    model_terms <- function(i){
        if(i == 1){return(",")}
      paste(sprintf("+ %.2f %s", mod_frame$estimate[i], mod_frame$term[i]), model_terms(i-1))
  }
  r2 <- format(summary(model)$r.squared, digits = 3)  
  print(paste(eqn_string, model_terms(nrow(mod_frame)), "R2 =", r2))
}

问题是,它以预测变量类别的逆序和它们在任何模型中列出的逆序推出回归方程。

例如:

代码语言:javascript
运行
复制
lmod <- lm(mpg ~ cyl + hp + disp, data = mtcars)
lm_eqn(lmod)
The response is equal to 34.18  + -0.02 disp + -0.01 hp + -1.23 cyl , R2 = 0.768"

另外,有没有办法为$R^2$添加一个上标?

EN

回答 1

Stack Overflow用户

发布于 2017-02-04 16:23:54

您可以使用coef获得回归系数,而不必深入挖掘模型对象的内部。然后使用矢量化的paste从系数及其名称的向量构建字符串。

代码语言:javascript
运行
复制
lm_eqn <- function(model)
{
    b <- coef(model)
    names(b)[1] <- ""  # default name for intercept term is '(Intercept)'
    eqn <- paste(format(b, digits=3), names(b), collapse=" + ")
    rsq <- format(summary(model)$r.squared, digits=3)
    cat("The response is equal to", eqn, ", Rsquare =", rsq, "\n")
    invisible(model)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42037462

复制
相关文章

相似问题

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