2011-05-19 94 views
2

可能非常容易,但我想知道,如何在使用zeroinfl命令時獲取係數?如何在估計零膨脹模型時獲取R係數

treatment <- factor(rep(c(1, 2), c(43, 41)), 
    levels = c(1, 2),labels = c("placebo", "treated")) 
improved <- factor(rep(c(1, 2, 3, 1, 2, 3), c(29, 7, 7, 13, 7, 21)), 
    levels = c(1, 2, 3),labels = c("none", "some", "marked")) 

numberofdrugs <- rpois(84, 2) 
healthvalue <- rpois(84,0.5) 
y <- data.frame(healthvalue,numberofdrugs, treatment, improved) 

require(pscl) 
ZIP<-zeroinfl(healthvalue~numberofdrugs+treatment+improved, y) 

summary(ZIP) 

我通常使用ZIP$coef[1]搶係數,但不幸的是在這裏你抓一大堆。那麼我怎樣才能從ZIP模型中獲取一個單一的係數?

+1

這是使用訪問器方法通常更好的一個原因(即'coef()'而不是'$ coef' – 2011-05-19 14:40:52

回答

5

使用coef提取功能列出所有係數在一個長的矢量,然後你可以使用一個索引符號來選擇它們:

coef(ZIP)[1] 

count_(Intercept) 
     0.1128742 

另外,你需要選擇你想要得到的,其模型從第一系數:

ZIP$coef$count[1] 

(Intercept) 
    0.1128742 

ZIP$coef[[1]][1] 

(Intercept) 
    0.1128742 
1

如果你想獲得看上你可以在係數分成列表:

clist <- function(m) { 
    cc <- coef(m) 
    ptype <- gsub("_.+$","",names(cc)) 
    ss <- split(cc,ptype) 
    lapply(ss, function(x) names(x) <- gsub("^.*_","",names(x))) 
} 
> clist(ZIP) 
$count 
    (Intercept) numberofdrugs treatmenttreated  improvedsome 
    -1.16112045  0.16126724  -0.07200549  -0.34807344 
    improvedmarked 
     0.23593220 

$zero 
    (Intercept) numberofdrugs treatmenttreated  improvedsome 
     7.509235  -14.449669  -58.644743  -8.060501 
    improvedmarked 
     58.034805 


c1 <- clist(ZIP) 
c1$count["numberofdrugs"]