【问题标题】:How can I extract slope, intercept and R squared如何提取斜率、截距和 R 平方
【发布时间】:2021-10-22 07:32:29
【问题描述】:

这是一个玩具数据。

field <- c('t1','t1','t1', 't2', 't2','t2', 't3', 't3','t3')
predictor <- c(4.2, 5.3, 5.4,6, 7,8.5,9, 10.1,11)
response <- c(5.1, 5.1, 2.4,6.1, 7.7,5.5,1.99, 5.42,2.5)
my_df <- data.frame(field, predictor, response, stringsAsFactors = F)

我想根据变量字段对这些数据进行分组,并使用 lm() 拟合回归线,并以数据框格式提取截距、方程斜率、R^2 和其他统计数据。

my_df %>%
group_by(field) %>%
do(glance(lm(predictor ~ response, data = .)))

我尝试了扫帚包中的glance()。但是它不会返回斜率和截距。知道如何解决这个问题吗?

谢谢,

【问题讨论】:

  • 你需要tidy 而不是glance do(tidy(lm(predictor ~ response, data = .)))

标签: r dataframe linear-regression lm broom


【解决方案1】:

另一种方式可以是:

my_df %>%
   group_by(field) %>%
   summarise(model = list(lm(predictor ~ response, data = cur_data())),
             coef = list(coef(model[[1]])),
             Rsqrd = summary(model[[1]])$r.sq)%>%
   unnest_wider(coef, names_repair = 'unique')

# A tibble: 3 x 5
  field model  `(Intercept)` response  Rsqrd
  <chr> <list>         <dbl>    <dbl>  <dbl>
1 t1    <lm>            5.98   -0.241 0.318 
2 t2    <lm>            9.82   -0.412 0.139 
3 t3    <lm>            9.69    0.105 0.0379

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多