【问题标题】:base plot glm multivariate logistic regression in RR中的基图glm多元逻辑回归
【发布时间】:2017-03-13 15:52:43
【问题描述】:

我有以下型号:

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" ))

曾经绘制如下图:

当然,系数与我最初的model_ 不同。

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

我想绘制对应于多元模型model_而不是两个子模型model_1和model_2的每个变量的两条概率曲线。

  • 是否有一种或多或少简单的方法可以直接从model_ 显示这两条曲线,而无需运行其他系数略有不同的子模型?
  • 如何使用对应于变量var_1、var_2、var_3和var_4的4条概率曲线以及response ~ var_1 + var_2 + var_3 + var_4等公式?

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

【问题讨论】:

  • 你能dput你的样本数据吗?
  • 我的数据是 5 个向量,每个向量有 8800 个观测值。我不能在这里把它们变成 ASCII。
  • 寻求帮助时,您应该包含reproducible example 以及我们可以运行的示例输入和代码。这将使您更容易为您提供帮助。还要清楚你想要这个情节的样子。图一次只有一个 x 和 y 轴。如果您正在寻找可视化建议而不是询问特定的编程问题,您可能想改为在Cross Validated 提问。
  • 有一些包可以帮助你,比如effects包,它可以很容易地给你y ~ x协变量均值的预测。
  • 我上传的情节使用两个子模型(model_1和model_2)运行,每个变量一个用于var_1和var_2。它们给出了不同的系数,就像只有一个多变量模型 (model_)。我想用多元模型而不是两个子模型给出的系数来校正这些曲线。

标签: r plot logistic-regression


【解决方案1】:

我昨晚发现了这个:

# 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 模型的原理。

【讨论】:

    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 2014-06-26
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多