2014-01-21 31 views
4

我有一個示例數據框如下。更新R中的零點模型

data.df = data.frame(Y=c(0,0,0,0,0,0,0,0,0,0,1,2,3),X1=c(3,5,3,2,5,6,3,5,1,3,1,7,8),X2=c(6,2,1,6,7,1,1,4,2,6,7,2,3)) 

創建和更新,泊松分佈,我會做以下

model.poi = glm(Y~X1+X2,data=data.df,family="poisson") 
summary(model.poi) 
model.poi.2 = update(model.poi,~. -X2) 
summary(model.poi.2) 

我可以通過以下操作

require(pscl) 
model.zip = zeroinfl(Y~X1+X2|X1+X2,data=data.df,dist="poisson") 
summary(model.zip) 

創建零膨脹泊松模型我怎麼會去以與泊松glm相同的方式更新零膨脹模型?

回答

2

沒有爲"zeroinfl"類沒有update方式,但我們可以定義一個:

library(Formula) 
update.zeroinfl <- function(object, new, ...) { 
    call <- object$call 
    call$formula <- update(as.Formula(formula(object)), new) 
    eval.parent(call) 
} 

現在我們測試一下:

> update(model.zip, . ~ . - X2 | . - X2) 

Call: 
zeroinfl(formula = Y ~ X1 | X1, data = data.df, dist = "poisson") 

Count model coefficients (poisson with log link): 
(Intercept)   X1 
    -4.0538  0.6139 

Zero-inflation model coefficients (binomial with logit link): 
(Intercept)   X1 
    -6.50595  -0.06057 
+0

非常感謝你這一點。 – Corey

+0

當我嘗試下面的內容時,第二個模型出現錯誤,導致我無法更新第二個模型以提供第三個模型。 model.zip = zeroinfl(Y〜X1 + X2 | X1 + X2,data = data.df,dist =「poisson」) > model.zip.2 = update(model.zip,。〜。-X1 |。) > model.zip.3 = update(model.zip.2,。〜。|。-X1) – Corey

+1

現在應該修復。嘗試修訂版本。 –