유비온 마케팅 빅데이터 분석_5일차 R 문제풀이 (2)
5일차에서는 4일차에 풀었던 문제들을 응용해서 마케팅 인사이트를 도출하는 시간을 가졌다.
1. 평균, 분산, 표준편차 : 1회 평균구매액 분포 추정
> mean(df$X1회.평균매출액)
[1] 352102.4
> var(df$X1회.평균매출액)
[1] 97633507075
> sd(df$X1회.평균매출액)
[1] 312463.6
# 결과 분석
고객 ID당 1회 평균매출액은 평균 35만원 정도이며
(분산과) 표준편차의 값이 큼으로 평균으로부터 흩어져 있다고 볼 수 있다.
# 마케팅 인사이트
매출액이 다양하게 분포되어 있어 매출액 범위에 따른 세분화된 전략이 필요하다.
2. t-test : 성별에 따른 1회 평균구매액 차이 검정
> head(df$성별,)
[1] 1 0 0 0 0 0
> df_gender_1<-df[df$성별==1,]
> str(df_gender_1)
$ X1회.평균매출액 : int 225598 657133 278300 286798 720103 108137 332008
$ 성별 : int 1 1 1 1 1 1 1 1 1 1 ...
> df_gender_0<-df[df$성별==0,]
> str(df_gender_0)
'data.frame': 811 obs. of 21 variables:
$ X1회.평균매출액 : int 59777 1242125 308761 443761 2680100 258543 1626633 42923 118056 256890 ...
$ 성별 : int 0 0 0 0 0 0 0 0 0 0 ...
> t.test(df_gender_1$X1회.평균매출액,
+ df_gender_0$X1회.평균매출액)
Welch Two Sample t-test
data: df_gender_1$X1회.평균매출액 and df_gender_0$X1회.평균매출액
t = 1.5675, df = 286.46, p-value = 0.1181
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-9978.736 88042.089
sample estimates:
mean of x mean of y
383757.1 344725.4
> mean(df_gender_1$X1회.평균매출액)
[1] 383757.1
> mean(df_gender_0$X1회.평균매출액)
[1] 344725.4
# 결과 분석
1회평균 구매액은 남성 약 38만원, 여성 약 34만원이며,
두 집단의 평균 차이를 검정한 p-value가 0.1181로 0.05보다 크므로 귀무가설을 채택한다.
# 마케팅 인사이트
성별에 따른 1회 평균구매액(1회평균매출액) 차이가 없기 때문에
성별 집단 간 중요도 차이 없이(어느 한 성별을 주요 타겟으로 잡지 않고) 마케팅한다.
3. ANOVA : 구매금액대(0,1,2)에 따른 방문 빈도 차이 검정
> summary(df$구매금액대)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0 0.0 0.5 0.7 1.0 2.0
> str(df)
'data.frame': 1000 obs. of 21 variables:
$ 구매금액대 : int 1 0 0 0 1 2 1 2 2 0 ...
$ 방문빈도 : int 22 38 2 9 10 4 11 34 6 95 ...
> anova<-aov(방문빈도~구매금액대,data=df)
> summary(anova)
Df Sum Sq Mean Sq F value Pr(>F)
구매금액대 1 63328 63328 210.4 <2e-16 ***
Residuals 998 300437 301
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
$구매금액대
diff lwr.ci upr.ci pval
1-0 8.415333 5.443909 11.38676 1.5e-10 ***
2-0 20.992000 17.587806 24.39619 < 2e-16 ***
2-1 12.576667 8.862386 16.29095 3.6e-15 ***
—
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 결과 분석
F 값은 210으로 매우 크며, p-value가 2e-16 0.0415로 0.05보다 매우 작으므로
구매금액대가 방문빈도에 유의미한 영향을 미친다고 할 수 있다.
사후검정(PostHoc test) 결과로는 모든 구매금액대 간 차이를 분석했을 때(1-0, 2-0, 2-1)
방문빈도가 유의미한 영향을 미치며, 특히 그룹 2가 가장 큰 평균 방문빈도를 가지고 있다(2-1-0 순서).
즉, 구매금액대가 클수록 방문빈도의 평균이 증가한다.
# 마케팅 인사이트
자주 방문할수록 구매금액대가 높기 때문에
오프라인 매장이라면 방문 편의 서비스나 주차 발렛 서비스등을 제공하여 고객 로열티를 높이고,
온라인 커머스라면 푸시 알림이나 출석체크 이벤트를 활용해 방문빈도를 높인다.
4. 카이제곱 검정 (F-Test) : 클레임 접수여부와 고객등급 간의 관계 유무 검정
> chisq.test(df$클레임접수여부,df$고객등급)
Pearson's Chi-squared test with Yates' continuity correction
data: df$클레임접수여부 and df$고객등급
X-squared = 65.12, df = 1, p-value = 7.047e-16
> df_claim_0<-df[df$클레임접수여부==0,]
> df_claim_1<-df[df$클레임접수여부==1,]
> str(df_claim_0)
'data.frame': 650 obs. of 21 variables:
$ 고객등급 : int 1 1 2 2 2 2 2 2 1 1 ...
$ 클레임접수여부 : int 0 0 0 0 0 0 0 0 0 0 ...
> str(df_claim_1)
'data.frame': 350 obs. of 21 variables:
$ 구매유형 : int 2 3 4 3 1 3 3 3 4 4 ...
$ 클레임접수여부 : int 1 1 1 1 1 1 1 1 1 1 ...
> mean(df_claim_0$고객등급)
[1] 1.64
> mean(df_claim_1$고객등급)
[1] 1.371429
# 결과 분석
p-value는 7.047e-16으로 0.05에 비하여 매우 작아 귀무가설을 기각,
즉 클레임 접수여부와 고객의 등급에는 연관성이 있다.
클레임을 접수한 경우 평균 고객등급이 1.64,
클레임을 접수하지 않은 경우 평균 고객등급이 1.37이므로
클레임을 접수한 경우 평균 고객등급이 더 낮다
(고객 등급이 1,2로 나뉘므로, 클레임 접수 고객 중 등급이 낮은 고객 비중이 크다).
# 마케팅 인사이트
고객등급이 낮은 경우 클레임 접수를 더 많이 하기 때문에,
등급이 낮은 고객에게 혜택이나 서비스가 부족한지 점검한다.
5. 상관관계 분석 : 할인권사용횟수와 총할인금액 사이 상관관계 분석
> cor(df$할인권.사용.횟수,df$총.할인.금액,method="pearson")
[1] 0.8486659
> plot(df$총.할인.금액~df$할인권.사용.횟수) # 산포도 그리기
> abline(lm(df$총.할인.금액~df$할인권.사용.횟수),col="blue") # 선이 있는 그래프 그리기
> reg<-lm(총.할인.금액~할인권.사용.횟수,data=df)
> summary(reg)
Call:
lm(formula = 총.할인.금액 ~ 할인권.사용.횟수, data = df)
Residuals:
Min 1Q Median 3Q Max
-329708 -39669 8559 46182 248467
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 109843.8 4059.1 27.06 <2e-16 ***
할인권.사용.횟수 11388.8 224.7 50.69 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 59240 on 998 degrees of freedom
Multiple R-squared: 0.7202, Adjusted R-squared: 0.72
F-statistic: 2569 on 1 and 998 DF, p-value: < 2.2e-16
# 결과 분석
할인권 사용횟수와 총할인금액은 0.85로 강한 양의 상관관계를 가지고 있다.
# 마케팅 인사이트
변수 선택을 잘못했다는 걸 깨닫다...
(고객 ID당 할인권 사용횟수가 많으면 당연히 ID당 총할인금액도 클 수밖에)
6. 다중 회귀분석 : 거래기간, 1회평균매출액, 할인민감여부가 총매출액에 미치는 영향을 분석
> df_cor<-cbind(df$거래기간,df$X1회.평균매출액,df$할인민감여부)
> cor(df_cor)
[,1] [,2] [,3]
[1,] 1.0000000 -0.10197066 0.38077611
[2,] -0.1019707 1.00000000 0.07966759
[3,] 0.3807761 0.07966759 1.00000000
> reg_2<-lm(총매출액~거래기간
+ +X1회.평균매출액
+ +할인민감여부, data=df)
> summary(reg_2)
Call:
lm(formula = 총매출액 ~ 거래기간 + X1회.평균매출액 + 할인민감여부,
data = df)
Residuals:
Min 1Q Median 3Q Max
-13249721 -2502287 -508713 1293688 57371825
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.926e+06 6.723e+05 5.840 7.07e-09 ***
거래기간 -4.428e+02 1.844e+02 -2.401 0.0165 *
X1회.평균매출액 4.627e+00 5.288e-01 8.751 < 2e-16 ***
할인민감여부 4.627e+06 3.627e+05 12.760 < 2e-16 *** # 모든 독립변수가 종속변수에 유의미한 영향
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5152000 on 996 degrees of freedom
Multiple R-squared: 0.2169, Adjusted R-squared: 0.2145
F-statistic: 91.93 on 3 and 996 DF, p-value: < 2.2e-16
# 결과 분석
(1) 거래기간이 긴 고객일수록 총구매액(총매출액)은 작아진다.
(2) 1회평균구매액이 많을수록 총구매액도 많다.
(3) 할인에 민감할수록 총구매액도 많다.
(*R-squared의 값은 0.2169로 낮아 모형의 설명력은 낮다.)
# 마케팅 인사이트
(1) 비활성화 고객을 다시 방문하게 할 방법을 찾는다.
(2) 1회평균구매액이 많을수록 총구매액도 많다.
(3) 할인비용과 마진을 고려해서 할인 프로모션을 늘린다.
7. 다중 로지스틱 회귀분석 : 총할인금액, 1회 평균 매출액, 거래기간으로
클레임접수여부(0,1)를 예측하는 분석
glm(formula = 클레임접수여부 ~ 총.할인.금액 + X1회.평균매출액 +
거래기간, family = "binomial", data = df)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.2635 -0.9891 -0.6923 1.2493 2.4151
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.691e+00 3.851e-01 -6.987 2.81e-12 ***
총.할인.금액 4.657e-07 6.126e-07 0.760 0.44714
X1회.평균매출액 -7.485e-07 2.642e-07 -2.833 0.00462 **
거래기간 6.083e-04 8.494e-05 7.161 7.99e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1294.9 on 999 degrees of freedom
Residual deviance: 1221.1 on 996 degrees of freedom
AIC: 1229.1
Number of Fisher Scoring iterations: 4
# 결과 분석
(1) 총할인금액은 클레임 접수여부에 유의미한 영향을 미치지 않는다.
(2) 1회평균매출액(1회평균구매액)이 높으면 클레임 접수를 적게 한다.
(3) 거래기간이 길면 클레임 접수를 많이 한다.
# 결과 분석
(1) 할인이 고객 만족에 주는 영향이 유의하지 않으므로,
클레임 접수 내용을 자세히 분석해볼 필요가 있다.
(2) 1회평균구매액이 높은 고객들이 우리 브랜드에 만족해서 클레임을 적게 넣는 것인지,
다른 이유가 있는지 분석해볼 필요가 있다.
(3) 클레임을 걸 수 있는 기간이 길었기 때문일 수도 있으므로 추가적인 분석을 수행한다.
(고객ID 당 첫 거래 후 2주 이내 클레임 접수 여부 등)
끗 ~
코드랑 통계기법만 이해할 때보다
어떻게든 마케팅 인사이트랑 연결해보니까 훨씬 재밌다