"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 차 시음: A/B 테스트의 통계 분석을 위한 Python 패키지

차 시음: A/B 테스트의 통계 분석을 위한 Python 패키지

2024-11-08에 게시됨
검색:596

tea-tasting: a Python package for the statistical analysis of A/B tests

소개

저는 다음 기능을 갖춘 A/B 테스트의 통계 분석을 위한 Python 패키지인 tea-tasting을 개발했습니다.

  • 학생 t-검정, 부트스트랩, CUPED를 사용한 분산 감소, 검정력 분석, 기타 통계 방법 및 기본 접근 방식.
  • BigQuery, ClickHouse, PostgreSQL/GreenPlum, Snowflake, Spark, Pandas 및 Ibis에서 지원하는 20가지 기타 백엔드 등 광범위한 데이터 백엔드를 지원합니다.
  • 확장 가능한 API: 맞춤형 측정항목을 정의하고 원하는 통계 테스트를 사용하세요.
  • 수작업을 줄여주는 편리한 API이자, 오류를 최소화하는 프레임워크입니다.
  • 자세한 문서입니다.

이 블로그 게시물에서는 실험 분석에서 차 시음을 사용하여 얻을 수 있는 이점을 각각 살펴보겠습니다.

해보고 싶다면 설명서를 확인하세요.

통계적 방법

차 시음에는 실험 분석에 필요한 대부분의 내용을 다루는 통계적 방법과 기술이 포함됩니다.

스튜던트 t-테스트와 Z-테스트를 ​​사용하여 측정항목 평균과 비율을 분석합니다. 또는 부트스트랩을 사용하여 원하는 다른 통계를 분석하세요. 그리고 Bootstrap을 사용하여 분위수를 분석하기 위해 미리 정의된 방법이 있습니다. 차 시음 또한 A/B 테스트의 다양한 변형 샘플 비율에서 불일치를 감지합니다.

차 시음은 평균 비율 분석을 위해 델타 방법을 적용합니다. 예를 들어 세션이 무작위 단위가 아니라고 가정할 때 평균 세션 수당 평균 주문 수입니다.

실험 전 데이터, 측정항목 예측 또는 기타 공변량을 사용하여 분산을 줄이고 실험의 민감도를 높입니다. 이 접근 방식은 CUPED 또는 CUPAC라고도 합니다.

스튜던트 t-검정과 Z-검정의 백분율 변화에 대한 신뢰 구간 계산은 까다로울 수 있습니다. 절대 변화에 대한 신뢰 구간을 취하고 이를 제어 평균으로 나누면 편향된 결과가 생성됩니다. 차 시음은 델타 방법을 적용하여 올바른 간격을 계산합니다.

스튜던트 t-테스트와 Z-테스트에 대한 통계적 검정력을 분석합니다. 세 가지 가능한 옵션이 있습니다:

  • 통계력과 총 관측치 수를 고려하여 효과 크기를 계산합니다.
  • 통계력과 효과 크기를 고려하여 총 관측치 수를 계산합니다.
  • 효과 크기와 총 관측치 수를 고려하여 통계적 검정력을 계산합니다.

자세한 사용자 가이드에서 자세히 알아보세요.

로드맵에는 다음이 포함됩니다.

  • 여러 가설 테스트:
    • 가족별 오류율: Holm–Bonferroni 방법
    • 거짓 발견률: Benjamini-Hochberg 절차.
  • A/A 테스트 및 시뮬레이션을 통해 통계 테스트의 성능을 분석합니다.
  • 더 많은 통계 테스트:
    • 빈도 데이터에 대한 점근적 및 정확한 테스트.
    • Mann–Whitney U 테스트.
  • 순차 테스트: mSPRT를 사용하면 항상 유효한 p-값.

원하는 통계 테스트를 통해 맞춤 측정항목을 정의할 수 있습니다.

데이터 백엔드

실험 데이터를 저장하고 처리하기 위한 다양한 데이터베이스와 엔진이 있습니다. 그리고 대부분의 경우 자세한 실험 데이터를 Python 환경으로 가져오는 것은 효율적이지 않습니다. 스튜던트 t-테스트 또는 Z-테스트와 같은 많은 통계 테스트에서는 분석을 위해 집계된 데이터만 필요합니다.

예를 들어 원시 실험 데이터가 ClickHouse에 저장되어 있는 경우 Python 환경에서 세분화된 데이터를 가져오고 집계를 수행하는 것보다 ClickHouse에서 직접 개수, 평균, 분산, 공분산을 계산하는 것이 더 빠르고 효율적입니다.

필요한 모든 통계를 수동으로 쿼리하는 것은 어렵고 오류가 발생하기 쉬운 작업일 수 있습니다. 예를 들어 CUPED를 사용한 비율 측정항목 분석 및 분산 감소에는 행 수와 분산뿐만 아니라 공분산도 필요합니다. 하지만 걱정하지 마세요. 차 시음 이 모든 것이 효과가 있습니다.

차 시음은 Pandas DataFrame 또는 Ibis 테이블로 데이터를 허용합니다. Ibis는 다양한 데이터 백엔드에 대한 DataFrame API 역할을 하는 Python 패키지입니다. BigQuery, ClickHouse, PostgreSQL/GreenPlum, Snowflake 및 Spark를 포함한 20개의 백엔드를 지원합니다. SQL 쿼리를 작성하고 Ibis 테이블로 래핑한 다음 차 시식에 전달할 수 있습니다.

차 시음은 다음을 가정합니다.

  • 데이터는 개별 사용자와 같은 무작위 단위로 그룹화됩니다.
  • A/B 테스트의 변형을 나타내는 열이 있습니다(일반적으로 A, B 등으로 표시됨).
  • 지표 계산에 필요한 모든 열(예: 주문 수, 수익 등)이 표에 포함되어 있습니다.

부트스트랩과 같은 일부 통계 방법에는 분석을 위해 세부적인 데이터가 필요합니다. 이 경우 차 시음 을 통해 세부 데이터도 가져옵니다.

데이터 백엔드 가이드에서 자세히 알아보세요.

편리한 API

NumPy, SciPy 및 Ibis만 사용하여 위에 나열된 모든 작업을 수행할 수 있습니다. 실제로 차 시음에서는 이러한 패키지를 내부적으로 사용합니다. 차 시음이 제공하는 것은 편리한 상위 API입니다.

설명하는 것보다 보여주는 것이 더 쉽습니다. 기본 예는 다음과 같습니다.

import tea_tasting as tt


data = tt.make_users_data(seed=42)

experiment = tt.Experiment(
    sessions_per_user=tt.Mean("sessions"),
    orders_per_session=tt.RatioOfMeans("orders", "sessions"),
    orders_per_user=tt.Mean("orders"),
    revenue_per_user=tt.Mean("revenue"),
)

result = experiment.analyze(data)
print(result)
#>             metric control treatment rel_effect_size rel_effect_size_ci pvalue
#>  sessions_per_user    2.00      1.98          -0.66%      [-3.7%, 2.5%]  0.674
#> orders_per_session   0.266     0.289            8.8%      [-0.89%, 19%] 0.0762
#>    orders_per_user   0.530     0.573            8.0%       [-2.0%, 19%]  0.118
#>   revenue_per_user    5.24      5.73            9.3%       [-2.4%, 22%]  0.123

별도의 매개변수화와 추론을 사용하는 2단계 접근 방식은 통계 모델링에서 일반적입니다. 이러한 분리는 코드를 더욱 모듈화하고 이해하기 쉽게 만드는 데 도움이 됩니다.

차 시음은 까다롭고 오류가 발생하기 쉬운 계산을 수행합니다.

  • 델타 방법을 사용한 비율 지표 분석
  • CUPED/CUPAC를 사용한 분산 감소(비율 측정항목의 델타 방법과도 결합)
  • 절대 변화와 백분율 변화에 대한 신뢰 구간을 계산합니다.
  • 통계력 분석.

또한 오류를 방지하기 위해 실험 데이터를 표현하기 위한 프레임워크를 제공합니다. 올바른 분석을 위해서는 데이터를 무작위 단위로 그룹화하고 데이터 세트의 모든 단위를 포함하는 것이 중요합니다.

또한 차 시식은 결과의 예쁜 형식화 및 측정항목 매개변수에 대한 컨텍스트 관리자와 같은 몇 가지 편리한 방법과 기능을 제공합니다.

선적 서류 비치

마지막으로 중요한 것은 문서입니다. 저는 도구 채택을 위해서는 좋은 문서화가 중요하다고 믿습니다. 이것이 바로 제가 여러 사용자 가이드와 API 참조를 작성한 이유입니다.

사용설명서의 기본 사용법 예시부터 시작하시는 것을 추천드립니다. 그런 다음 동일한 가이드에서 분산 감소 또는 검정력 분석과 같은 특정 주제를 탐색할 수 있습니다.

차 시음과 함께 선택한 데이터 백엔드를 사용하는 방법을 알아보려면 데이터 백엔드에 대한 가이드를 참조하세요.

차 시음에 포함되지 않은 통계 테스트를 수행하려면 맞춤 측정항목에 대한 가이드를 참조하세요.

API 참조를 사용하여 차 시음에서 사용할 수 있는 함수, 클래스 및 메서드에 대한 모든 매개변수와 자세한 정보를 살펴보세요.

결론

실험 분석에 적용할 수 있는 통계 방법은 다양합니다. 그러나 대부분의 경우 실제로는 그 중 소수만이 사용됩니다.

반면, SciPy와 같은 범용 통계 패키지에는 포함되지 않은 A/B 테스트 분석 전용 방법이 있습니다.

차 시음 기능에는 가장 중요한 통계 테스트와 A/B 테스트 분석에 특정한 방법이 포함됩니다.

차 시음은 분석에 소요되는 시간을 줄이고 오류 확률을 최소화하는 데 도움이 되는 편리한 API를 제공합니다.

또한 차 시음은 데이터가 저장되어 있는 선택한 데이터 백엔드에서 통계를 계산하여 계산 효율성을 최적화합니다.

자세한 문서를 통해 실험 분석을 위해 차 시음을 사용하는 방법을 빠르게 배울 수 있습니다.

추신 패키지 이름

패키지 이름 "tea-tasting"은 두 가지 주제를 가리키는 단어 유희입니다.

  • 차를 맛보는 여인은 로널드 피셔(Ronald Fisher)가 고안한 유명한 실험입니다. 이 실험에서 Fisher는 컵에 차가 먼저 추가되었는지 우유가 먼저 추가되었는지를 식별할 수 있다는 여성의 주장을 분석하기 위해 귀무 가설 유의성 테스트 프레임워크를 개발했습니다.
  • '차 시음'은 음성학적으로 William Gosset이 개발한 통계 테스트인 't-테스트' 또는 Student's t-테스트와 유사합니다.
릴리스 선언문 이 기사는 https://dev.to/e10v/tea-tasting-a-python-package-for-the-statistical-analytic-of-ab-tests-4fnj?1에서 복제됩니다. 침해가 있는 경우, 문의: Study_golang@163 .comdelete
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3