首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >模型拟合好不好!?可视化展示一下

模型拟合好不好!?可视化展示一下

作者头像
DataCharm
发布2021-12-09 14:54:39
发布2021-12-09 14:54:39
1.1K0
举报

构建回归模型的一个关键方面是评估模型拟合的效果,模型对数据的拟合程度以及要报告的拟合指数等都对模型的好坏至关重要。今天小编就介绍下easystats体系中的performance包,该包可以评估不同类型模型的模型质量,提供r平方(R2)、均方根误差(RMSE) 或类内相关系数 (ICC) 等指标,还包括检查(混合)模型是否存在过度分散、零膨胀、收敛或奇异性的功能。performance包的工作流程如下图:

接下来,小编详细介绍下该包,如下:

对比和测试模型

「样例一」:

代码语言:javascript
复制
library(performance)
library(tidyverse)
library(see)
library(ggtext)
library(hrbrthemes)

## 样例一
model1 <- lm(Sepal.Length ~ Petal.Length, data = iris)
model2 <- lm(Sepal.Length ~ Petal.Width, data = iris)
model3 <- lm(Sepal.Length ~ Sepal.Width, data = iris)
# 测试model1
performance(model1) %>%
  print_md()

result of one model performance()

多个模型同时比较:

代码语言:javascript
复制
compare_performance(model1, model2, model3) %>%
  print_md()

result of three model performance()

当然,你还可以通过可视化的方式展示不同模型各个指标的表现情况,如下:

代码语言:javascript
复制
plot(compare_performance(model1, model2, model3))

Example Of compare_performance()

「样例二」:测试模型

代码语言:javascript
复制
test_performance(model1, model2, model3) %>%
  print_md()

检查模型假设

「样例一」:分箱残差(Binned Residuals)

代码语言:javascript
复制
library(lme4)
model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial")
binned_residuals(model)

Example01 Of binned_residuals()

接下来看一个拟合较好的模型:

代码语言:javascript
复制
mod <- glm(am ~ mpg + vs + cyl, data = mtcars, family = "binomial")
binned_residuals(mod)

Example02 Of binned_residuals()

「样例二」:检查多重共线性-方差膨胀因子

代码语言:javascript
复制
m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars)
result <- check_collinearity(m)

Result of check_collinearity()

可视化展示如下:

代码语言:javascript
复制
plot(result)

Example Of check_collinearity()

「样例三」:检查异常值(Check for Outliers)

代码语言:javascript
复制
mt1 <- mtcars[, c(1, 3, 4)]
# create some fake outliers and attach outliers to main df
mt2 <- rbind(mt1, data.frame(mpg = c(37, 40), disp = c(300, 400), hp = c(110, 120)))
# fit model with outliers
model <- lm(disp ~ mpg + hp, data = mt2)
result <- check_outliers(model)
#Warning: 2 outliers detected (cases 31, 34).

你可以通过以下方式进行异常点可视化展示:

  • 方式一:dot-plot with contour lines
代码语言:javascript
复制
plot(result, type = "dots")

Example01 Of check_outliers()

  • 方式二:bars indicating influential observations
代码语言:javascript
复制
plot(result, type = "bars")

Example02 Of check_outliers()

检查同质性

代码语言:javascript
复制
model <- lm(len ~ supp + dose, data = ToothGrowth)
result <- check_homogeneity(model)
#OK: Variances in each of the groups are the same (Bartlett Test, p = 0.226).

可视化结果如下:

代码语言:javascript
复制
plot(result)

Example Of check_homogeneity()

后验预测检查

代码语言:javascript
复制
model <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars)
pp_check(model)

Example Of pp_check()

模型和变量属性

「样例一」:

代码语言:javascript
复制
model <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
result <- check_distribution(model)

Result of check_distribution()

可视化效果如下:

代码语言:javascript
复制
plot(result)

Example Of check_distribution()

「样例二」:

代码语言:javascript
复制
vec <- bayestestR::distribution_poisson(n = 500, lambda = 2.5)
result <- check_distribution(vec)

Result02 Of check_distribution

可视化效果如下:

代码语言:javascript
复制
plot(result)

Example02 Of check_distribution()

以上即使小编简单的对R-performance包主要函数的一个简单介绍,更多详细内容可参考:R-performance[1]和R-performance结果可视化[2]

总结

今天这篇推文小编又介绍一个强大的统计分析包-R-performance,可以帮助你更好对比你所构建的模型,希望喜欢统计分析和感兴趣的同学可以看下~~

再小的技能,也应该被认真对待。

参考资料

[1]R-performance官网: https://easystats.github.io/performance/index.html。

[2]R-performance结果可视化: https://easystats.github.io/see/articles/performance.html。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对比和测试模型
  • 检查模型假设
  • 检查同质性
  • 后验预测检查
  • 模型和变量属性
  • 总结
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档