#r #regression #logistic-regression
Вопрос:
Я только начал входить в R для анализа данных (ранее я просто использовал SPSS или Excel).
В настоящее время я пытаюсь запустить логистическую регрессию с одним зависимым и 5 независимыми, контролируя при этом 3 переменные.
Моя нынешняя попытка заключается в:
reg_model <- glm(formula = Dependent ~ Independent1 Independent2 Independent3 Independent4 Independent5, family = binomial(), data = df)
Я не уверен, как (или где) вставить 3 управляющие переменные в модель, потому что простое добавление 3 управляющих переменных в качестве независимых переменных в модель кажется мне неправильным (или я ошибаюсь здесь?).
Комментарии:
1. Вы можете управлять ковариатами, либо помещая их в правую часть формулы в качестве независимых переменных, либо вы можете заранее создать другую линейную модель, а затем работать с остатками. Формула отражает вопрос, на который вы хотите ответить, в частности.
2. Вы имеете в виду вот так:
reg_model <- glm(formula = Dependent ~ Independent1 Independent2 Independent3 Independent4 Independent5 Control1 Control2 Control3, family = binomial(), data = df)
?
Ответ №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
Создано 2021-10-01 пакетом reprex (v2.0.1)