2011-05-19 92 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"]