로지스틱 회귀(Logistic Regression)

ddoddo·2023년 1월 11일
0

데이터분석 with R

목록 보기
13/21

로지스틱 회귀

로지스틱 회귀(Logistic Regression)는 독립변수의 선형 결합을 이용해 사건 발생 가능성을 예측하는 데 사용되는 기법이다. 종속변수가 이산형(0 또는 1)일 경우 사용하며, 종속변수가 2개 이상의 범주를 갖는 경우에도 사용할 수 있다.

Data Load

3개의 변수와 60개의 행으로 구성되어 있다.

> df <- read.csv('ch6-1.csv', header=TRUE)
> head(df)
  wing_length tail_length gender
1          44           9      m
2          42           9      m
3          43           8      m
4          40          10      m
5          44           8      m
6          43           8      m
> str(df)
'data.frame':	60 obs. of  3 variables:
 $ wing_length: int  44 42 43 40 44 43 42 43 41 43 ...
 $ tail_length: int  9 9 8 10 8 8 8 8 10 8 ...
 $ gender     : chr  "m" "m" "m" "m" ...

로지스틱 회귀

로지스틱 회귀분석은 glm() 함수를 사용한다.
아래와 같은 오류를 해결하기 위해서는 두 가지 방법이 있다.

Error in eval(family$initialize) : 
  y 값들은 반드시 0 이상 1 이하이어야 합니다
  • df <- read.csv('ch6-1.csv', header=TRUE, stringsAsFactors=TRUE) : 데이터 불러올 때 설정
  • df$gender <- as.factor(df$gender) : factor형으로 변환

> df$gender <- as.factor(df$gender)
> df_glm <- glm(gender ~ wing_length + tail_length, data=df, family=binomial)
> summary(df_glm)

Call:
glm(formula = gender ~ wing_length + tail_length, family = binomial, 
    data = df)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-1.64364  -0.13454   0.00002   0.09015   2.63544  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)  70.1955    23.4091   2.999  0.00271 **
wing_length  -1.0531     0.5045  -2.087  0.03685 * 
tail_length  -2.3859     0.9692  -2.462  0.01382 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 83.178  on 59  degrees of freedom
Residual deviance: 16.466  on 57  degrees of freedom
AIC: 22.466

Number of Fisher Scoring iterations: 7

개별 독립변수의 통계적 유의성

wing_length와 tail_length 모두 p-value가 0.03685, 0.01382이므로 유의수준 5% 하에서 통계적으로 유의하다.

모델 수식

  • x1 : wing_length
  • x2 : tail_length

P(Y=1x)=1/(1+e1.0531x1+2.3859x270.1955)P(Y=1|x)=1/(1+e^{1.0531x1+2.3859x2-70.1955})

0개의 댓글