'ANOVA on multiple models stored in a tibble

It is possible to use anova on multible models stored in a tibble without listing them manually.

An example prediction of wage from age in Wage dataset from the ISLR2 library. I have a tibble a column for polynomial degrees in one column, GLM models in another and CV errors in the third column.

I can use anova through do.call but it does not show p-values without passing test = 'F' as an argument.

library(ISLR2) 
library(tidyverse)
library(boot)
GLM <- function(n) {
  result <- glm(wage ~ poly(age, n), data = Wage)
  return(result)
}
CV <- function(n) {
  glm_fit <- glm(wage ~ poly(age, n), data = Wage)
  result <- cv.glm(Wage, glm_fit, K = 10)$delta[1]
  return(result)
}

set.seed(1)
models <- tibble(polynom_degrees = 1:10) %>% 
  mutate(linear_model = map(polynom_degrees, GLM)) %>% 
  mutate(CV_error = map(polynom_degrees, CV)) %>% 
  mutate(CV_error = unlist(CV_error))

do.call(anova, models$linear_model)


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source