如何提取斜率、截距和 R 平方
How can I extract slope, intercept and R squared
这是一个玩具数据。
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 = .)))
我尝试了 broom 包中的 glance()。但是它没有 return 斜率和截距。知道我该如何解决这个问题吗?
谢谢,
另一种方式可以是:
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
这是一个玩具数据。
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 = .)))
我尝试了 broom 包中的 glance()。但是它没有 return 斜率和截距。知道我该如何解决这个问题吗?
谢谢,
另一种方式可以是:
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