블로그 이미지
잡다구리구리 민둉

카테고리

분류 전체보기 (23)
빅데이터 (3)
뚝딱뚝딱 (6)
욤뇸뇸뇸 (1)
요기죠기 (0)
기억조각 (1)
세번째눈 (1)
마음양식 (1)
나의하루 (9)
Total
Today
Yesterday

'로지스틱회귀분석'에 해당되는 글 1건

  1. 2020.06.07 [ 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
Posted by 민둉
, |

최근에 달린 댓글

글 보관함