基础图gl中的多元Logistic回归

时间:2017-03-13 15:52:44

标签: r plot logistic-regression

我有以下型号:

model_ <- glm( response ~ var_1 + var_2, family = "binomial" )

给了我以下结果:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.07418    0.05484 -56.053   <2e-16 ***
var_1        0.19238    0.13547   1.420    0.156    
var_2        2.07090    0.23579   8.783   <2e-16 ***
---

我弄清楚如何使用基本图形函数绘制两条概率曲线的唯一方法是运行两个不同的模型:

model_1 <- glm( response ~ var_1, family = "binomial" )
model_2 <- glm( response ~ var_2, family = "binomial" )

并创建两条预测曲线:

curve( predict( mod_1, data.frame( var_1=x ), type="resp" ))
curve( predict( mod_2, data.frame( var_2=x ), type="resp" ))

曾经绘制的图如下图所示:

plots_logreg

但当然系数与我的初始model_不一样。

          coef(model_)    coef(model_1)    coef(model_2)
var_1         0.192            0.165           ---
var_2         2.071***          ---           2.065***

我想绘制与多变量模型model_中的每个变量对应的两条概率曲线,而不是两个子模型model_1model_2

  • 是否有一种或多或少的简单方法可以直接从model_显示这两条曲线,而不必运行其他提供稍微不同系数的子模型?
  • 如何处理与变量var_1var_2var_3var_4对应的4条概率曲线,其公式为response ~ var_1 + var_2 + var_3 + var_4?< / LI>

网上有一些例子,但要么使用ggplot中的自动功能(我不想使用它),要么运行单变量模型。

1 个答案:

答案 0 :(得分:0)

昨晚我出来了:

# intercept & beta coefficients  
intercept <- as.numeric( coef( model )[1] )
beta_var_1 <- as.numeric( coef( model )[2] )
beta_var_2 <- as.numeric( coef( model )[3] )
...

# range of variables
range <- seq( 0, 10, .01 )

# log odds
logodds_var_1 <- intercept + beta_var_1 * range
logodds_var_2 <- intercept + beta_var_2 * range
...

# probabilities 
prob_var_1 <- exp(logodds_var_1) / (1+exp(logodds_var_1))
prob_var_2 <- exp(logodds_var_2) / (1+exp(logodds_var_2))
...

# curves
plot( x=range, y=prob_var_1, type="l" )
plot( x=range, y=prob_var_2, type="l" )
...

这会生成两条(或更多条)曲线,这些曲线看起来与我正在寻找的内容更加一致。我希望我不会误解这种logit模型的原理。