"구독자는 평균 2.8개월 만에 떠납니다." 이런 문장이 리포트에 올라오면 한 번 의심해 봐야 합니다. 이 평균에는 이미 떠난 사람만 들어 있고, 아직 남아 있는 사람은 빠져 있을 가능성이 큽니다. 오래 남은 사람을 빼고 계산하면 이탈 시점은 실제보다 항상 빨라 보입니다.
이 글은 사용자가 언제 떠나는지 정직하게 계산하는 방법인 생존곡선(카플란-마이어 추정)을, 손으로 따라 할 수 있는 10명 예시로 정리합니다. 구독 해지뿐 아니라 첫 구매 이후 재구매가 끊기는 시점, 핵심 기능 사용이 멈추는 시점에도 같은 방법을 씁니다.
평균 이탈 기간이 틀리는 이유: 아직 떠나지 않은 사람
10명의 구독 기록이 있다고 하겠습니다. 오늘 기준으로 5명은 해지했고 5명은 아직 구독 중입니다.
| 사용자 | 지금까지 유지한 기간 | 상태 |
|---|---|---|
| 1 | 1개월 | 해지 |
| 2, 3 | 2개월 | 해지 |
| 4 | 3개월 | 구독 중 |
| 5 | 4개월 | 해지 |
| 6 | 4개월 | 구독 중 |
| 7 | 5개월 | 해지 |
| 8, 9, 10 | 6개월 | 구독 중 |
해지한 5명의 유지 기간을 평균하면 (1 + 2 + 2 + 4 + 5) ÷ 5 = 2.8개월입니다. 처음 문장의 "평균 2.8개월"이 이렇게 나옵니다. 그런데 6개월째 아직 남아 있는 3명은 이 계산에 들어가지 않았습니다. 10명 모두의 유지 기간을 평균해도 3.9개월인데, 남은 5명은 앞으로 더 유지할 것이므로 이 값도 짧게 잡힌 숫자입니다.
아직 떠나지 않은 사람은 "관측이 끝난 시점까지 남아 있었다"는 정보만 줍니다. 이를 중도절단이라고 부릅니다. 이 정보를 버리지도, 해지로 바꾸지도 않고 그대로 쓰는 계산이 생존곡선입니다.
생존곡선은 이렇게 계산합니다
매달 "그 달을 시작할 때 남아 있던 사람 중 몇 명이 그 달에 떠났는가"를 봅니다. 그리고 남은 비율을 앞 달의 생존 비율에 곱해 나갑니다.
| 개월 | 그 달을 시작한 인원 | 그 달 해지 | 그 달 이탈 위험 | 생존 비율 |
|---|---|---|---|---|
| 1 | 10 | 1 | 10% | 90.0% |
| 2 | 9 | 2 | 22% | 70.0% |
| 3 | 7 | 0 | 0% | 70.0% |
| 4 | 6 | 1 | 17% | 58.3% |
| 5 | 4 | 1 | 25% | 43.8% |
| 6 | 3 | 0 | 0% | 43.8% |
3개월째에 1명(사용자 4)이 "구독 중"으로 관측이 끝났습니다. 이 사람은 떠난 사람으로 세지 않고, 4개월째부터 분모에서만 빠집니다. 그래서 4개월째 분모가 6명입니다.
생존 비율이 처음으로 50% 아래로 내려가는 때는 5개월째입니다. 즉 생존기간 중앙값은 5개월입니다. 해지자만 평균한 2.8개월과 비교하면 거의 두 배 차이가 납니다.
이탈 위험이 높아지는 시점을 찾으세요
생존곡선이 "얼마나 남아 있나"를 보여 준다면, 표의 "그 달 이탈 위험"은 "지금까지 남아 있던 사람이 이번 달에 떠날 확률"을 보여 줍니다. 이 값이 이탈 위험(해저드)입니다. 위 예시에서는 2개월째(22%)와 5개월째(25%)에 위험이 높았습니다.
이 차이는 행동으로 이어집니다. 2개월째에 위험이 몰린다면 첫 결제 이후 두 번째 결제 직전이 고비입니다. 5개월째라면 장기 사용자가 흥미를 잃는 시점입니다. 리마인드 메시지, 혜택, 기능 안내를 보낼 때는 위험이 치솟는 달보다 한 발 앞서 보내야 효과를 확인할 기회가 생깁니다.
D1·D7·D30 리텐션 표와 무엇이 다른가요
D1·D7·D30 코호트 리텐션은 "가입 후 정해진 날에 다시 왔는가"를 봅니다. 가입일을 기준으로 줄을 세우기 때문에 최근 가입자는 D30 칸이 비어 있고, 그 칸은 계산에서 빠집니다.
생존곡선은 "처음 멈춘 시점"을 봅니다. 가입 시기가 달라 관찰 기간이 서로 다른 사람도 각자 관측된 만큼 계산에 들어갑니다. 그래서 출시한 지 얼마 안 된 기능이나 최근에 연 구독 상품처럼 오래 지켜본 사용자가 적을 때 특히 쓸모가 있습니다.
| 비교 항목 | 코호트 리텐션 | 생존곡선 |
|---|---|---|
| 묻는 질문 | 정해진 날에 돌아왔나 | 언제 처음 멈췄나 |
| 아직 관찰이 덜 된 사람 | 해당 칸에서 빠짐 | 관측된 기간까지 계산에 포함 |
| 잘 맞는 데이터 | 방문·활동 로그 | 구독 해지, 재구매 중단, 기능 사용 중단 |
결과를 행동으로 옮기는 순서
- 먼저 전체 생존곡선의 중앙값과 위험이 높은 달을 확인합니다.
- 채널이나 첫 행동 유형별로 곡선을 나눠 봅니다. 곡선 사이의 차이가 우연인지는 로그순위 검정으로 확인합니다.
- 일정 기간(예: 6개월) 안에서 평균적으로 몇 개월 유지했는지를 같이 적습니다. 위 예시라면 6개월 안에서 평균 4.3개월입니다. 이 값은 남은 사람이 많아 중앙값을 구할 수 없을 때도 비교에 쓸 수 있습니다.
채널별 유지 기간이 다르게 나오면 획득 단가만으로 채널을 고르면 안 된다는 뜻입니다. 유지 기간을 획득 비용과 함께 놓고 보는 방법은 CAC 회수기간 계산법과 LTV:CAC 비율 계산을 참고하세요.
이렇게 쓰면 결과가 틀어집니다
- 관측 종료일을 하나로 정하지 않으면 "구독 중"이 언제까지의 상태인지 흐려집니다. 데이터를 뽑은 날짜를 함께 기록하세요.
- 중도절단은 이탈과 상관이 없어야 합니다. 결제 실패로 계정이 정지된 사람을 "구독 중"으로 두면 생존이 과대평가됩니다.
- 곡선 끝부분은 남은 인원이 적어 크게 흔들립니다. 위 예시의 6개월째는 3명뿐이라 그 구간의 숫자로 결론을 내리면 안 됩니다.
- 채널별 생존 차이는 채널이 만든 차이가 아닐 수 있습니다. 채널마다 들어온 사용자 특성이 다르기 때문입니다. 원인을 확인하려면 광고 증분 측정처럼 대조군이 있는 설계가 필요합니다.
다음 달 리포트에서는 "평균 이탈 기간" 대신 생존기간 중앙값과 이탈 위험이 높은 달을 함께 적어 보세요. 아직 남아 있는 사람이 많다면 "관측 6개월까지 절반 이상 유지"처럼 관찰 범위를 같이 쓰면 됩니다.