타당성 점검: 외적 타당성

Python으로 배우는 A/B Testing

Moe Lotfy, PhD

Principal Data Science Manager

심슨의 역설

심슨의 역설: 전체 집단을 분할하면 변수 간 추세가 나타나거나 사라지거나 반전되는 통계적 현상입니다.

print(simp_imbalanced.groupby('Variant').mean())
Variant     Conversion
A              0.80
B              0.64
print(simp_imbalanced.groupby(['Variant','Device']).mean())
Variant Device   Conversion
A       Phone        0.875
        Tablet       0.500
B       Phone        0.900
        Tablet       0.575
Python으로 배우는 A/B Testing

심슨의 역설

simp_imbalanced.groupby(['Variant','Device'])\
                            ['Device'].count()
Variant  Device
A        Phone     40
         Tablet    10
B        Phone     10
         Tablet    40

심슨의 역설 예시 표

Python으로 배우는 A/B Testing

심슨의 역설

simp_balanced.groupby(['Variant','Device'])\
                        ['Device'].count()
Variant  Device
A        Phone     40
         Tablet    10
B        Phone     40
         Tablet    10
print(simp_balanced.groupby('Variant').mean())
Variant     Conversion
A              0.70
B              0.52
print(simp_balanced.groupby(['Variant','Device']).mean())
Variant Device     Conversion
A       Phone        0.750
        Tablet       0.500
B       Phone        0.575
        Tablet       0.300
Python으로 배우는 A/B Testing

신규성 효과

  • 신규성 효과
    • 새 기능에 대한 호기심으로 지표가 일시적으로 개선되는 현상.
  • 변화 회피
    • 신규성 효과의 반대.
    • 기존 익숙함 때문에 새 기능 시도를 피함.
Python으로 배우는 A/B Testing

신규성 효과 시각 점검

# Plot Lift in CTR vs test days
novelty.plot('date', 'CTR_lift')
plt.ylim([0, 0,09])
plt.title('Lift in CTR vs Test Duration')
plt.show()

신규성 효과: 실험 일수 대비 CTR 선형 그래프 시각화

Python으로 배우는 A/B Testing

신규성 효과 보정

  • 테스트 기간을 늘리기
    • 효과가 안정화된 이후의 데이터부터 포함합니다.
  • 신규/재방문 사용자 코호트 검토
    • 신규 사용자는 신규성 효과의 영향이 상대적으로 적습니다.
    • 기존 사용자는 이전 경험과 비교합니다.
Python으로 배우는 A/B Testing

연습해 봅시다!

Python으로 배우는 A/B Testing

Preparing Video For Download...