如何根据glm模型绘制变量的预测概率

时间:2014-08-28 08:55:49

标签: r loops plot glm

我想绘制属于glm模型的每个变量,其中y轴是预测概率,x轴是变量水平或值。 这是我尝试的代码:

数据:

dat <- read.table(text = "target apcalc    admit   num
     0        0        0         21
     0        0        1         24
     0        1        0         55
     0        1        1         72
     1        0        0         5
     1        0        1         31
     1        1        0         11
     1        1        1         3",  header = TRUE)

glm模型:

f<-glm(target ~ apcalc + admit +num, data = dat,family=binomial(link='logit'))

提供所需图表的循环:

for(i in 1:length(f$var.names)){
          plot(predict(f,i.var.names=i,newdata=dat,type='response'))
      }

我得到一个奇怪的情节作为输出(x轴上的“索引”和y轴中的“预测(f,i.var.names = i,newdata = dat,type ='response')”。我可以修复我的代码以获得所需的结果吗? (为了在这里提出,我还没有声誉)

2 个答案:

答案 0 :(得分:1)

下图用预测的概率绘制所有变量,

f<-glm(target ~ apcalc + admit +num, data=dat,family=binomial(link="logit"))

PredProb=predict(f,type='response') #predicting probabilities

par(mfrow=c(2,2))
for(i in names(dat)){
  plot(dat[,i],PredProb,xlab=i)
}

答案 1 :(得分:0)

在运行f&lt; -glm(.....)部分时,f $ var.names给出NULL作为输出。那里肯定有一些错误。

f<-glm(target ~ apcalc + admit +num, data=dat,family=binomial("logit"))

f

Call:  glm(formula = target ~ apcalc + admit + num, family = binomial("logit"), 
    data = dat)

Coefficients:
(Intercept)       apcalc        admit          num  
     2.2690       3.1742       2.4406      -0.1721  

Degrees of Freedom: 7 Total (i.e. Null);  4 Residual
Null Deviance:      11.09 
Residual Deviance: 5.172        AIC: 13.17

f$var.names
NULL