Проверка отношения правдоподобия при использовании lrtest () и ANOVA () - PullRequest
0 голосов
/ 04 мая 2020

Могу ли я иметь ваши минуты на мой вопрос ниже? Я делал линейную регрессию и хочу сравнить мои модели с тестом отношения правдоподобия. Однако 1. Тест отношения правдоподобия lrtest(), похоже, не работает для меня. Я имею в виду, что я набрал ?lrtest и не смог получить никакой документации на R.

Затем я перешел на ANOVA (модель1, модель2, тест = "LRT"). Однако, это дало мне ошибку. «Ошибка в UseMethod (« anova »): нет применимого метода для« anova », примененного к объекту класса« list ». Я использовал набор данных радужной оболочки следующим образом.

data <- data.frame(B = c("m","m","m","m","m", "m", "f","f","f","f","f"),
           G = c("s","s","s","u","u", "u", "k","k","k","r","r"),
           ZN =c(78,82,34,67,98,56,37,45,27,18,34),
           GFR=c(120,100,90,60,100,110,100,90,95,87,96),
           g1 = c(35, 2, 3, 4, 5, 6, 7, 10, 12, 41, 76), 
           g2 = c(20, 2, 7, 2, 8, 5, 5, 3, 7, 2, 12), 
           g3 = c(5, 0, 4, 5, 2, 4, 8, 9, 20, 1, 11),
           g4 = c(1,3,4,5,7,3,1,5,7,3,10),
           g5 = c(20,23, 27, 35, 12, 10, 17, 24, 21, 15, 16),
           g6 = c(13,13,115,17,14,12,19,6,7,8,4),
           g7 = c(5, 0, 4, 5, 2, 4, 8, 9, 20, 1, 11),
           g8 = c(1,3,4,5,7,3,1,5,7,3,10),
           g9 = c(20,23, 27, 35, 12, 10, 17, 24, 21, 15, 16),
           g10 =c(13,13,115,17,14,12,19,6,7,8,4)); 

zn12 <- lapply(data[,-c(1,2,4)], function(x) lm(GFR ~ x + ZN, data = data))
zn13 <- lm(GFR ~ ZN, data = data)
anova(zn12,zn13, test="LRT")

любые предложения будут полезны Спасибо!

1 Ответ

0 голосов
/ 04 мая 2020

Вы можете использовать подход, представленный в комментариях, или использовать tidyverse

library(tidyverse)
data %>% 
  gather(EP, value, -B:-GFR) %>% 
  split(.$EP)  %>% 
  map(~anova(lm(GFR ~ ZN, data =.),
             lm(GFR ~ value + ZN, data =.),
             test="LRT"))

Когда вы для p.values, попробуйте

data %>% 
  gather(Fac, value, -B:-GFR) %>% 
  split(.$Fac)  %>% 
  map(~anova(lm(GFR ~ ZN, data =.),
             lm(GFR ~ value + ZN, data =.),
             test="LRT") %>%  
        broom::tidy(.) %>% 
        select(p.value) %>% 
        slice(2)) %>% 
  bind_rows(.id = "Factor")
# A tibble: 10 x 2
   Factor p.value
   <chr>    <dbl>
 1 g1     0.467  
 2 g10    0.797  
 3 g2     0.0323 
 4 g3     0.783  
 5 g4     0.403  
 6 g5     0.00556
 7 g6     0.797  
 8 g7     0.783  
 9 g8     0.403  
10 g9     0.00556
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...