【问题标题】:R - Logistic Regression with Control VariablesR - 带有控制变量的逻辑回归
【发布时间】:2021-11-23 01:46:08
【问题描述】:

我刚开始接触 R 进行数据分析(之前我只使用 SPSS 或 Excel)。

目前,我正在尝试在控制 3 个变量的同时运行一个具有一个依赖和 5 个独立的逻辑回归。

我目前的尝试是:

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

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

【问题讨论】:

  • 您可以通过将协变量放在公式的右侧作为自变量来控制协变量,或者您可以事先进行另一个线性模型,然后使用残差。该公式反映了您特别想回答的问题。
  • 你的意思是这样的:reg_model &lt;- glm(formula = Dependent ~ Independent1 + Independent2 + Independent3 + Independent4 + Independent5 + Control1 + Control2 + Control3, family = binomial(), data = df)?

标签: r regression logistic-regression


【解决方案1】:

您可以通过将它们作为自变量添加到公式右侧的模型中来控制潜在的混杂因素。 请注意,在控制与 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 创建于 2021-10-01 (v2.0.1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2016-06-30
    • 2017-03-27
    • 2018-01-26
    • 2020-08-19
    相关资源
    最近更新 更多