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