2013-10-17 34 views
2

我在R中安裝了glm模型並取出了anova表。我需要提取「殘餘偏差」欄。但它會產生一個錯誤。下面是代碼:從R的anova(glm)中提取殘餘偏差

創建數據:

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 

現在我需要提取 「渣油開發」 列。所以,我想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" 

回答

2

使用引號

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

等價

av.1[["Resid. Dev"]] 
+1

非常感謝。 – Stat

2

使用[操作者進入第四列:

av.1[,4] 

或者,如果你想使用$ qoute列名:

av.1$`Resid. Dev` 
av.1$"Resid. Dev" 
+1

或'av.1 [ ,「殘油。 Dev。「]'(我喜歡儘可能使用名字訪問) –

1

不能使用未加引號的空格與$,所以使用[代替:

>av.1["Resid. Dev"] 
      Resid. Dev 
NULL  10.5814459 
outcome 5.1291411 
treatment 5.1291411 
+1

是的,儘管你可能想要'av.1 [[」Resid。 Dev「]]'而不是(即使用雙括號來獲得一個向量而不是一列數據幀;後者可能會令人困惑) –

+0

只要引用對象名稱:''av.1 $'Resid。Dev''' –

+0

@Gavin:正確編輯我的答案。 –