我有以下型号:
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
?< / LI>
网上有一些例子,但要么使用ggplot中的自动功能(我不想使用它),要么运行单变量模型。
答案 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模型的原理。