[ R ] glm() 함수 , formula 인자식 작성법 , logistic regression 해석
glm()
GLM(Generalized Linear Model)?
GLM은 문자 그대로 선형적이지 않은 대상(비선형)을 선형적으로 '일반화' 시킨 모형.
선형화 시키는 이유
- 가장 대표적으로 선형모형에서만 사용할 수 있는 모형의 해석, 확장, 수정 등의 방법을 사용하기 위함.
- 비선형모형의 경우는 모형을 다루는 방법이 많이 제한될 뿐만 아니라 새로운 데이터에 민감하기 때문에 선형모형에 비해 덜 선호되는 경향이 있다.
arguments
glm(formula, family = gaussian, data, weights, subset, na.action, start = NULL, etastart, mustart, offset, control = list(…), model = TRUE, method = "glm.fit", x = FALSE, y = TRUE, singular.ok = TRUE, contrasts = NULL, …)
formula : 이 인자값에는 약속에 의해 정해진 기호(operator)를 이용하여 모델의 뼈대를 설정할 수 있다.
- "~" 기호 : 기본적으로 formula 인자값의 입력은 종속변수를 앞에 쓰고 독립변수를 뒤에 쓰게 되는데 종속변수와 독립변수를 구분 짓는 기호는 "~" 이다.
(e.g. (formula =종속변수 ~ 독립변수1 )) -> 단순 선형 회귀
- "+" 기호 : 독립변수 하나 뿐만 아니라 여러 개의 변수까지 고려하는 다중회귀분석을 하고 싶다면 "+" 기호를 이용해 고려대상이 되는 변수를 추가시킬 수 있다.
(e.g. (formula =종속변수 ~ 독립변수1 + 독립변수2 + 독립변수3 ...)) -> 다중회귀적합
- "." 기호 : "전부" 의 의미를 가진다.
(e.g. (formula = mpg ~ ., data = mtcars)
위의 코드는 종속변수로 이미 배정된 mpg 이외의 모든 변수를 독립변수로 고려하라 라는 의미
- "-" 기호 : "+" 기호의 반대는 "-" 이다. 의미 역시 반대이다.
(e.g. (formula = mpg ~ . - cyl, data = mtcars)
고려대상에서 추가하는 "+" 와 다르게 "-" 는 고려대상에서 제외시킨다.
"." 기호를 통해 모든 독립변수를 배정했는데, 여기서 cyl 변수만은 독립변수에서 제외하고 싶을 경우
참고 : https://lovetoken.github.io/r/2016/12/06/formula_usage.html
family : binomial() , 일반화 선형 모형에서는 다양한 분포의 종속 변수에 적용하기 때문에, 종속 변수가 어떤 분포를 따르고 있는지 옵션을 주는 것. Logistic regression 의 종속변수는 이항 변수이므로 이항 분포를 따르고 있다. 그러므로 binomial()을 설정해준다.
data : 모델의 변수를 포함하는 dataframe
https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/glm
GRE, GPA, RANK이 입학(admission)에 어떤 영향을 주는지 로지스틱 회귀분석을 통해 분석
library(aod)
library(ggplot2)
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
# view the first few rows of the data
head(mydata)
# 데이터의 대략적인 분포 확인
summary(mydata)
# 데이터 구조 확인
str(mydata)
# 변수별 표준편차 확인
sapply(mydata, sd)
# contingency table : xtabs(~ x + y, data)
xtabs(~admit+rank, data=mydata)
# categorical variable
mydata$rank <- factor(mydata$rank)
# logistic regression
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(mylogit)
--------------------------------------------------------------------------------------
Call:
glm(formula = admit ~ gre + gpa + rank, family = "binomial",
data = mydata)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6268 -0.8662 -0.6388 1.1490 2.0790
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.989979 1.139951 -3.500 0.000465 ***
gre 0.002264 0.001094 2.070 0.038465 *
gpa 0.804038 0.331819 2.423 0.015388 *
rank2 -0.675443 0.316490 -2.134 0.032829 *
rank3 -1.340204 0.345306 -3.881 0.000104 ***
rank4 -1.551464 0.417832 -3.713 0.000205 ***
---
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: 458.52 on 394 degrees of freedom
AIC: 470.52
Number of Fisher Scoring iterations: 4
- Call : 구축한 모형에 대한 요약
- Deviance Residuals
: Deviance residual에 대한 정보. model fitting이 잘 되었는지에 대한 measure. 모델이 잘 적합됐는지를 평가할 수 있다.
- Coefficient ( Estimate / Std. Error / z value / Pr(>|z|) )
: 회귀계수와 그것들의 표준편차, z-statistics(wals's z-statistics), p-value를 나타낸다.
* 회귀계수
로지스틱 회귀모형에서는 회귀계수가 변수가 한 단위 증가했을 때 log(odds)의 증가량으로 해석할 수 있다.
- 연속형 : 1 단위 씩 증가할 때마다 확률 값이 증가하는 비율
- 명목형 : 기준 카테고리 대비 비율
- 양수(+) : (Y=1) 의 가능성이 높은 것.
- 음수(-) : (Y=1) 의 가능성이 낮은 것.
- 더미변수의 경우 : 예를 들어 rank2의 회귀계수 -0.67은 rank1에서 rank2로 바뀌었을 때, log(odds)의 변화
-> exp(Estimate) 로 log 를 제거하고 오즈비로 변환하여 해석.
exp(0.002264) = 1.002267 ; gre 가 1 증가하면 입학률은 1.002267 배 증가
'빅데이터 > RRRR' 카테고리의 다른 글
[ R ] factor() , R의 categorical variable (0) | 2020.06.07 |
---|---|
[ R ] seq() / seq_along() (0) | 2020.06.07 |