分享

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

 汉无为 2021-12-13

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

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

对比和测试模型

「样例一」:

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()

多个模型同时比较:

compare_performance(model1, model2, model3) %>%
  print_md()
result of three model performance()

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

plot(compare_performance(model1, model2, model3))
Example Of compare_performance()

「样例二」:测试模型

test_performance(model1, model2, model3) %>%
  print_md()
Result of test_performance

检查模型假设

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

library(lme4)
model <- glm(vs ~ wt + mpg, data = mtcars, family = 'binomial')
binned_residuals(model)
Example01 Of binned_residuals()

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

mod <- glm(am ~ mpg + vs + cyl, data = mtcars, family = 'binomial')
binned_residuals(mod)
Example02 Of binned_residuals()

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

m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars)
result <- check_collinearity(m)
Result of check_collinearity()

可视化展示如下:

plot(result)
Example Of check_collinearity()

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

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
plot(result, type = 'dots')
Example01 Of check_outliers()
  • 方式二:bars indicating influential observations
plot(result, type = 'bars')
Example02 Of check_outliers()

检查同质性

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).

可视化结果如下:

plot(result)
Example Of check_homogeneity()

后验预测检查

model <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars)
pp_check(model)
Example Of pp_check()

模型和变量属性

「样例一」:

model <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
result <- check_distribution(model)
Result of check_distribution()

可视化效果如下:

plot(result)
Example Of check_distribution()

「样例二」:

vec <- bayestestR::distribution_poisson(n = 500, lambda = 2.5)
result <- check_distribution(vec)
Result02 Of check_distribution

可视化效果如下:

plot(result)
Example02 Of check_distribution()

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

总结

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多