Извлечь остаточное отклонение из анова (glm) в R

Я установил модель glm в R и взял таблицу Anova. Мне нужно извлечь столбец «Остаточное отклонение». Но выдает ошибку. Вот коды:

Создание данных:

counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)

Установка GLM:

glm.D93 <- glm(counts ~ outcome + treatment, family = quasipoisson(link = "log"))

Таблица анова:

av.1=anova(glm.D93)
av.1
Analysis of Deviance Table

Model: quasipoisson, link: log

Response: counts

Terms added sequentially (first to last)


          Df Deviance Resid. Df Resid. Dev
NULL                          8    10.5814
outcome    2   5.4523         6     5.1291
treatment  2   0.0000         4     5.1291

Теперь мне нужно извлечь столбец «Resid. Dev». Итак, я попробовал str

> str(av.1)
Classes ‘anova’ and 'data.frame':       3 obs. of  4 variables:
 $ Df        : int  NA 2 2
 $ Deviance  : num  NA 5.45 0
 $ Resid. Df : int  8 6 4
 $ Resid. Dev: num  10.58 5.13 5.13
 - attr(*, "heading")= chr "Analysis of Deviance Table\n\nModel: quasipoisson, link: log\n\nResponse: counts\n\nTerms added sequentially (first to last)\n\"| __truncated__

Наконец я извлек Resid. Dev, но выдает ошибку:

> av.1$Resid. Dev
Error: unexpected symbol in "av.1$Resid. Dev"

person Stat    schedule 17.10.2013    source источник


Ответы (3)


Используйте кавычки

> av.1$"Resid. Dev"
[1] 10.581446  5.129141  5.129141

Эквивалентно

av.1[["Resid. Dev"]]
person Jilber Urbina    schedule 17.10.2013

Используйте оператор [ для доступа к четвертому столбцу:

av.1[,4]

Или, если вы хотите использовать $, укажите имя столбца:

av.1$`Resid. Dev`
av.1$"Resid. Dev"
person EDi    schedule 17.10.2013
comment
или av.1[,"Resid. Dev."] (я предпочитаю доступ по имени везде, где это возможно) - person Ben Bolker; 17.10.2013

Вы не можете использовать пробелы без кавычек с $, поэтому вместо этого используйте [:

>av.1["Resid. Dev"]
          Resid. Dev
NULL      10.5814459
outcome    5.1291411
treatment  5.1291411
person Neal Fultz    schedule 17.10.2013
comment
да, хотя вместо этого вы можете захотеть av.1[["Resid. Dev"]] (т. е. использовать двойные скобки, чтобы получить вектор, а не фрейм данных с одним столбцом; последнее может сбивать с толку). - person Ben Bolker; 17.10.2013
comment
И вы можете использовать пробелы с $, если вы заключаете имя объекта в кавычки: av.1$`Resid. Dev` - person Gavin Simpson; 17.10.2013