R 로지스틱회귀분석

  다른 뜻에 대해서는 R 로지스틱회귀분석 문서를 참조하십시오.
  다른 뜻에 대해서는 R 로지스틱회귀분석 (분류) 문서를 참조하십시오.

1 개요[ | ]

R 로지스틱회귀분석

2 독립변수 1개[ | ]

2.1 예시: 공부시간과 합격확률[ | ]

df = data.frame(
  Hours = c(0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50),
  Pass = c(0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1)
)
model = glm(Pass ~ Hours, df, family=binomial)
summary(model)

# 결정계수 계산
nullmodel = glm(Pass ~ 1, df, family=binomial)
cat("결정계수 R²=", 1-logLik(model)/logLik(nullmodel))

# 시각화
plot(df$Hours, df$Pass)
x = seq(min(df$Hours),max(df$Hours),0.1)
predicted = predict(model, list(Hours=x),type="response")
lines(x,predicted)
→ 회귀식(확률): [math]\displaystyle{ p = \dfrac{1}{1 + \exp\big(-(-4.0777+1.5046 x_1)\big)} }[/math]
→ 회귀식(로짓): [math]\displaystyle{ \operatorname{logit}(p) = -4.0777+1.5046 x_1 }[/math]
→ 공부시간이 1시간 증가하면 승산(odds)[math]\displaystyle{ e^{1.5046}=4.502352329 }[/math]배 증가한다.
공부시간 합격
로그-승산 승산 (합격)확률
1 −2.57 0.076 7%
2 −1.07 0.34 26%
3 0.44 1.55 61%
4 1.94 6.96 87%
5 3.45 31.4 97%

2.2 예시: iris 자료[ | ]

df = iris
df = df[df$Species %in% c("setosa","versicolor"),]
model = glm(Species ~ Sepal.Length, df, family=binomial)
summary(model)

# 결정계수 계산
nullmodel <- glm(Species ~ 1, df, family=binomial)
cat("결정계수 R²=", 1-logLik(model)/logLik(nullmodel))

# 시각화
plot(df$Sepal.Length, df$Species)
x = seq(min(df$Sepal.Length),max(df$Sepal.Length),0.1)
predicted = predict(model, list(Sepal.Length=x),type="response") + 1 # setosa=1, versicolor=2
lines(x,predicted)
p-value가 3.28e-07 =[math]\displaystyle{ 3.28 × 10^{-7} }[/math] 으로 Sepal.Length는 Species 예측에 매우 유의한 변수이다.
→ 회귀식(확률): [math]\displaystyle{ p = \dfrac{1}{1 + \exp\big(-(-27.831 + 5.140 x_1)\big)} }[/math]
→ 회귀식(로짓): [math]\displaystyle{ \operatorname{logit}(p) = -27.831 + 5.140 x_1 }[/math]

3 독립변수 2개 이상[ | ]

3.1 예시: mtcars[ | ]

model = glm(vs ~ mpg + am, mtcars, family=binomial)
summary(model)

# 결정계수 계산
nullmodel = glm(vs ~ 1, mtcars, family=binomial)
cat("결정계수 R²=", 1-logLik(model)/logLik(nullmodel))
→ 회귀식(확률): [math]\displaystyle{ p = \dfrac{1}{1 + \exp\big(-(-12.7051 + 0.6809 x_1 + -3.0073 x_2 )\big)} }[/math]
→ 회귀식(로짓): [math]\displaystyle{ \operatorname{logit}(p) = -12.7051 + 0.6809 x_1 + -3.0073 x_2 }[/math]

3.2 예시: 스페셜 판매확률[ | ]

df <- read.csv('https://raw.githubusercontent.com/jmnote/ds/main/logistic-regression/special-sales.csv')
df
model <- glm(special_sales ~ busy_day + high_temperature, df, family=binomial)
summary(model)
# 결정계수 계산
nullmodel <- glm(special_sales ~ 1, df, family=binomial)
cat("결정계수 R²=", 1-logLik(model)/logLik(nullmodel))
→ 회귀식(확률): [math]\displaystyle{ p = \dfrac{1}{1 + \exp\big(-( -15.2035 + 2.4426 x_1 + 0.5445 x_2 )\big)} }[/math]
→ 회귀식(로짓): [math]\displaystyle{ \operatorname{logit}(p) = -15.2035 + 2.4426 x_1 + 0.5445 x_2 }[/math]

4 같이 보기[ | ]