如何在R的tidymodels中用summarise()聚合rmse与cor?
解决summarise()中同时计算RMSE和相关系数的问题
错误原因
tidymodels中的rmse()函数属于yardstick包,它要求第一个输入参数是数据框,但在summarise()中直接调用时,会将price和prediction作为向量传入,不符合函数的参数要求,因此触发报错。
两种可行解决方法
方法1:手动计算RMSE
RMSE的本质是均方根误差,直接用公式实现,无需依赖特定函数,可直接在summarise()中与cor()配合使用:
library(tidymodels) price = 1:50 prediction = price * 0.9 My_tibble = tibble(price=price, prediction=prediction) My_tibble %>% summarise( rmse = sqrt(mean((price - prediction)^2)), cor = cor(price, prediction) )
方法2:使用向量版RMSE函数
yardstick包提供了面向向量的rmse_vec()函数,专门用于对向量计算RMSE,完美适配summarise()的场景:
My_tibble %>% summarise( rmse = rmse_vec(truth = price, estimate = prediction), cor = cor(price, prediction) )
补充说明
rmse()是面向数据框的高层接口,返回的是包含指标结果的tibble,适合单独调用查看完整指标信息;rmse_vec()是底层向量接口,直接返回数值结果,适合在summarise()中与其他统计量合并计算。
内容的提问来源于stack exchange,提问作者Yang Yang
相关产品推荐
相关产品推荐

