콘텐츠로 건너뛰기

로지스틱 회귀 파이썬 연습 예제2 – e-commerce 구매 데이터

이번에는 e-commerce 구매 데이터를 이용하여 로지스틱 회귀를 연습해보자. 로지스틱 회귀의 개념과 수식을 보고 싶다면, 다음 글을 참고해주세요. 만약 아래 코드나 설명이 이해되지 않는다면 로지스틱 회귀 파이썬 연습 예제 1 글을 읽어주세요.

연습할 데이터는 http://r-marketing.r-forge.r-project.org/data/ 에 공유된 “chapter9-sales.csv” 데이터이다. 먼저 head(), describe() 등을 이용해서 데이터를 살펴보자.

835명의 데이터로, 각 변수가 의미하는 바는 다음과 같다.

변수명설명
accAge가입한 개월 수
visitsMonth최근 한 달 동안 사이트 방문 횟수
spendToDate누적 구매액
spendMonth최근 1개월 간의 구매액
satSite사이트 만족도 (1-10)
satQuality제품 품질 만족도 (1-10)
satPrice가격 만족도 (1-10)
satOverall전반적인 만족도 (1-10)
coupon쿠폰 제공의 여부 (더미 변수)
purchase판촉 제품의 구매 여부 (더미 변수)
region고객의 거주 지역 (미국)

■ Q1. 쿠폰을 제공하는 것이 구매 여부에 영향을 미칠까?

먼저 쿠폰 제공을 하면 구매 여부에 영향을 미친다고 가설을 세워보자. 구매 여부는 Yes/No의 이산적 카테고리이므로 로지스틱 회귀를 사용해서 두 변수의 관계를 파악할 수 있다.

import statsmodels.api as sm
model = sm.formula.glm('purchase ~ coupon', data, family = sm.families.Binomial()).fit()
print(model.summary())
print(np.exp(model.params))

일단 p값은 0으로 쿠폰 변수가 통계적으로 유의미하게 양(+)의 영향을 주는 것을 알 수 있다. 오즈비를 확인하면 쿠폰을 주었을 때가 그렇지 않았을 때에 비해 구매할 확률이 약 5.6배 늘어남을 알 수 있다.

■ Q2. 쿠폰의 여부, 지역, 전반적인 만족도, 누적 구매액이 구매 여부에 영향을 미칠까?

위의 모델에 지역, 전반적인 만족도, 누적 구매액을 추가해서 확인해보자.

model2 = sm.formula.glm('purchase ~ coupon + region + satOverall + spendToDate', data, family = sm.families.Binomial()).fit()
print(model2.summary())
print(np.exp(model2.params))

역시 p값부터 보자. 유의 수준이 0.05일 때 통계적으로 유의미한 변수는 쿠폰 여부, 전반적인 만족도뿐임을 알 수 있다.

■ Q3. 쿠폰 여부와 전반적인 만족도에 교호작용(interaction effect)이 있을까?

model3 = sm.formula.glm('purchase ~ coupon + satOverall + coupon:satOverall', data, family = sm.families.Binomial()).fit()
print(model3.summary())
print(np.exp(model3.params))

coupon:staOverall의 p값이 0.961로 0.05보다 크므로 두 변수의 교호작용은 없다. 다시 쿠폰 여부와 전반적인 만족도로만 모델링을 해서 얻은 결과는 다음과 같다.

결과를 해석하면,

  • 쿠폰이 제공되면 그렇지 않을 때보다 구매할 확률이 약 2.7배 증가한다.
  • 전반적인 만족도가 높으면 그렇지 않을 때보다 구매할 확률이 약 1.9배 증가한다.
  • 쿠폰의 여부와 전반적인 만족도 사이의 교호작용 관계는 없다.

이로써 마케팅 매니저는 쿠폰 프로모션을 진행할 명분을 얻고, 만족도를 올릴 방안을 찾아 매출을 증대할 수 있다!