R - 带控制变量的逻辑回归

R - Logistic Regression with Control Variables

刚开始接触R做数据分析(以前只是用SPSS或者Excel)。

目前,我正在尝试 运行 逻辑回归,其中 1 个相关变量和 5 个独立变量同时控制 3 个变量。

我目前的尝试是:

reg_model <- glm(formula = Dependent ~ Independent1 + Independent2 + Independent3 + Independent4 + Independent5, family = binomial(), data = df)

我不确定如何(或在哪里)将 3 个控制变量插入模型,因为仅将 3 个控制变量作为自变量添加到模型中对我来说似乎是错误的(或者我在这里错了吗?)。

您可以通过将它们作为独立变量添加到公式右侧的模型中来控制潜在的混杂因素。 请注意,在控制与 GRE 相关的平均绩点 (GPA) 后,第二个模型中研究生入学考试 (GRE) 分数的估计值(效应量)较低:

library(readr)

# gre: Graduate Record Exam scores
# gpa: grade point average
data <- read_csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
#> 
#> ── Column specification ────────────────────────────────────────────────────────
#> cols(
#>   admit = col_double(),
#>   gre = col_double(),
#>   gpa = col_double(),
#>   rank = col_double()
#> )
data
#> # A tibble: 400 x 4
#>    admit   gre   gpa  rank
#>    <dbl> <dbl> <dbl> <dbl>
#>  1     0   380  3.61     3
#>  2     1   660  3.67     3
#>  3     1   800  4        1
#>  4     1   640  3.19     4
#>  5     0   520  2.93     4
#>  6     1   760  3        2
#>  7     1   560  2.98     1
#>  8     0   400  3.08     2
#>  9     1   540  3.39     3
#> 10     0   700  3.92     2
#> # … with 390 more rows

model1 <- glm(admit ~ gre, data = data, family = "binomial")
summary(model1)
#> 
#> Call:
#> glm(formula = admit ~ gre, family = "binomial", data = data)
#> 
#> Deviance Residuals: 
#>     Min       1Q   Median       3Q      Max  
#> -1.1623  -0.9052  -0.7547   1.3486   1.9879  
#> 
#> Coefficients:
#>              Estimate Std. Error z value Pr(>|z|)    
#> (Intercept) -2.901344   0.606038  -4.787 1.69e-06 ***
#> gre          0.003582   0.000986   3.633  0.00028 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> (Dispersion parameter for binomial family taken to be 1)
#> 
#>     Null deviance: 499.98  on 399  degrees of freedom
#> Residual deviance: 486.06  on 398  degrees of freedom
#> AIC: 490.06
#> 
#> Number of Fisher Scoring iterations: 4

# gre and gpa are correlated. Lets's control for them!
cor(data)
#>            admit        gre         gpa        rank
#> admit  1.0000000  0.1844343  0.17821225 -0.24251318
#> gre    0.1844343  1.0000000  0.38426588 -0.12344707
#> gpa    0.1782123  0.3842659  1.00000000 -0.05746077
#> rank  -0.2425132 -0.1234471 -0.05746077  1.00000000


model2 <- glm(admit ~ gre + gpa, data = data, family = "binomial")
summary(model2)
#> 
#> Call:
#> glm(formula = admit ~ gre + gpa, family = "binomial", data = data)
#> 
#> Deviance Residuals: 
#>     Min       1Q   Median       3Q      Max  
#> -1.2730  -0.8988  -0.7206   1.3013   2.0620  
#> 
#> Coefficients:
#>              Estimate Std. Error z value Pr(>|z|)    
#> (Intercept) -4.949378   1.075093  -4.604 4.15e-06 ***
#> gre          0.002691   0.001057   2.544   0.0109 *  
#> gpa          0.754687   0.319586   2.361   0.0182 *  
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> (Dispersion parameter for binomial family taken to be 1)
#> 
#>     Null deviance: 499.98  on 399  degrees of freedom
#> Residual deviance: 480.34  on 397  degrees of freedom
#> AIC: 486.34
#> 
#> Number of Fisher Scoring iterations: 4

reprex package (v2.0.1)

于 2021 年 10 月 1 日创建