2012-08-06 95 views
0

简单的问题我想不通。我试图从包含交互的模型中生成条件预测概率。例如,我希望能够比较x2 == 1和x3 == 0的预测概率与x2 == 0和x3 == 1的预测概率。使用glm的条件预测概率

我试图做到这一点,如下所示:

model <- glm(y~x1 + x2 * x3, family=binomial(link="logit"), data=data) 
predprob1 <- predict(model, type="response", newdata=(x1=mean(x1) & x2==1 & x3==0)) 
predprob2 <- predict(model, type="response", newdata=(x1=mean(x1) & x2==0 & x3==1)) 
probdiff<-predprob1-predprob2 

在那之后,我需要计算95CI为probdiff。我相信这对你来说很简单。感谢您的帮助!

+0

正如所提出的,该问题承认没有可能的解决方案,因为glm与默认的高斯分布不会产生概率估计。由于您没有在'newdata'参数中包含所有预测值(并且您已将其错误地命名),因此您也可能因此得到原始数据(或错误)的估计值。 – 2012-08-06 18:10:47

+0

嗨,我在补充我认为应该帮助的补充内容?我试图将X1设置为平均值,但也许代码也是错误的。 – roody 2012-08-06 18:13:37

+0

您仍然不提供'newdata'数据框对象,并且即使您提供了正确的类,您也不会为其分配mean(x1)名称(即'x1')的结果。 – 2012-08-06 18:26:23

回答

0

也许(在没有工作实施例的未测试):

model <- glm(y~x1 + x2 * x3, family=binomial(link="logit"), data=data) 
predprob1 <- predict(model, type="response", 
        newdata=with(data, data.frame(x1=mean(x1) & x2=1 & x3=0)) 
predprob2 <- predict(model, type="response", 
        newdata=with(data, data.frame(x1=mean(x1) & x2=0 & x3=1)) 
probdiff <- predprob1-predprob2 

其他R-误差是使用 '==' 用于分配。这是为了逻辑测试。