# A/A 테스트

A/A 테스트에서 실험군과 대조군은 동일한 제품 경험을 합니다.\
A/B 테스트의 목표가 실험군 대비 대조군에서 유의미한 지표 변화가 있는지 확인하는 데 있다면, A/A 테스트는 두 그룹 사이에 차이가 없는 것을 기대하고 이를 검증하기 위해 진행합니다.

### A/A 테스트를 하는 이유

A/A 테스트는 주로 A/B 테스트를 본격적으로 시작하기 전이나 새로운 A/B 테스트 플랫폼을 도입하기 전에 진행합니다. 조직은 A/A 테스트를 통해 A/B 테스트 도구의 신뢰도를 평가하고, 이후 A/B 테스트를 진행할 때 활용할 수 있는 전환율 기준치나 최소 표본 크기를 결정할 수 있습니다.

핵클의 고객사들 또한 핵클의 A/B 테스트 플랫폼이 실험 도구로써 신뢰할 수 있는지 확인하기 위해 도입 과정에서 A/A 테스트를 진행하는 경우가 있습니다.

### A/A 테스트 진행시 주의해야 할 점

A/A 테스트를 하다보면 우리의 기대와는 다르게 실험군과 대조군에 유의미한 차이가 있다는 결과가 나오기도 합니다. 주의해야 할 점은 결과가 유의미하다고 해서 항상 실험에 문제가 있는 건 아니라는 것입니다.

가설 검정에서 통계적 유의성은 확률입니다. 95% 신뢰도에서 검정을 한다는 건 실험을 20번 했을 때 1번은 우연에 의해 유의미한 차이가 있는 결과가 나올 수 있다는 걸 의미합니다 (1종 오류).\
그렇기 때문에 이 결과가 통계적 유의성 내에서 충분히 일어날 수 있었다는 걸 확인하면, 실험에 문제가 있다기보다 확률에 의해 발생한 거라고 볼 수 있습니다.

수십만 번의 A/A 테스트를 해보고 직접 확인해 보는 건 시간 낭비입니다.\
대신 A/A 테스트에 참여한 유저들을 반복해서 2개의 그룹으로 재분배하여 p-value나 베이지안 확률 분포를 계산해 보면 실제로 실험을 해보지 않아도 검증해 볼 수 있습니다.

![](/files/aTza7Fn0ILiMaZaBLg5l)

위 실험은 실제로 핵클에서 진행한 A/A 테스트 중 실험군과 대조군 데이터에 유의미한 차이가 있다고 나온 결과 페이지입니다.\
해당 실험에 참여한 유저들을 반복해서 2개의 그룹으로 재분배한 후 95% 신뢰도에서 첫 번째 목표 지표인 구매전환율을 비교해 보겠습니다.

#### p-value 분포

가설 검정에서는 p-value가 유의수준보다 작으면 귀무가설(그룹 간에 차이가 없다)을 기각합니다. 유의수준은 귀무가설이 참일 때 귀무가설을 기각하고 대립가설(그룹 간에 차이가 있다)을 채택할 확률이기 때문에 p-value가 유의수준보다 작을 확률은 유의수준이 되어야 합니다.

![](/files/DzVQUJreLlMRSfF8ljGR)

귀무가설이 참일 때 검정 통계량 T는 F(t) 분포를 따릅니다. P-value를 P라 하면 P=F(T)이고, 유의수준이 어떤 값을 가지든 위 관계가 성립하려면 F(⋅)는 균등분포여야 합니다. 이때 F(⋅)는 역함수를 가지는 가역 함수입니다.

![](/files/87o5vHJPvZ78dh6YixSM)

위에서 소개한 A/A 테스트 데이터로 10,000번 시뮬레이션해서 얻은 p-value로 히스토그램을 그려보았습니다.\
실험군과 대조군 데이터에 유의미한 차이가 있다고 나왔지만, p-value는 0에서 1사이의 값을 골고루 갖는 균등 분포의 모양을 보입니다.

해당 실험 결과는 통계적 유의성 내에서 우연에 의해 충분히 나올 수 있었다는 걸 의미합니다.

#### 베이지안 확률 분포

![](/files/g8UGXFthmRl9wpUXLQWl)

실험군과 대조군의 사후 분포를 추정한 후 대조군의 목표가 실험군보다 높게 나올 확률을 계산합니다. 시뮬레이션을 500번 반복해서 얻은 확률로 히스토그램을 그려보면 0.5를 중심으로 하는 정규 분포 모양을 보입니다. 대조군의 목표가 실험군보다 높게 나올 확률이 0.5에 가깝다면 두 그룹 사이에 차이가 없다는 결론을 내릴 수 있습니다.

A/A 테스트를 진행했는데 p-value나 베이지안 확률 분포가 위 그래프에서 살펴본 분포 외의 모양을 보이거나, 몇 번 반복해도 계속해서 실험군과 대조군 사이에 유의미한 차이가 있다는 결론이 나오면 실험 설계나 집계하는 데이터에 문제가 있을 수 있습니다.

상황에 따라 문제의 원인은 다양하지만 주로 다음과 같은 이유에 의해 발생합니다.

* 데이터에 극단치가 있는 경우입니다. → 핵클에서는 [극단치 제외 기능](/ab-test/data-analysis/outlier.md)을 통해 제거할 수 있습니다.
* 실험 분배 트리거에 오류가 있어 의도 하지 않은(실험에 포함되어서는 안되는 유저)가 노출 데이터에 포함된 경우입니다. → 핵클에서는 [실시간 노출 현황](/ab-test/management/realtime-status.md)에서 그룹 별로 분배가 잘 되고 있는지 확인할 수 있습니다. 이때 실험 분배가 이루어져야 하는 페이지 이전 단계나 이후에 분배(노출) 데이터가 생성되거나 실험 타겟이 아닌 사용자에게 실험이 분배가 되는지 확인 가능합니다.
* 균등 분배에 오류가 있어 실험군과 대조군에 할당된 유저 수에 큰 차이가 있거나 비슷한 특징을 가진 유저들이 같은 그룹으로 할당되는 경우입니다.→ 핵클에서는 해시 함수를 활용한 버켓팅 방법으로 유저를 분배하기 때문에 실험 설계에 문제가 없다면 균등 분배를 보장합니다. 자세한 설명은 [테스트 그룹 분배](/ab-test/group-distribution.md) 페이지를 참고해 주세요.

### A/A/B 테스트 진행시 주의해야 할 점

A/A/B 테스트는 A/A 테스트와 A/B 테스트를 동시에 진행하고 싶을 때 사용합니다.

A/A/B 테스트는 트래픽을 세 그룹(A, A 또는 B)으로 나누기 때문에 한 그룹에 할당되는 유저 수가 적어져 검정력이 낮아집니다.\
그렇기 때문에 A/A/B 테스트에서 충분한 검정력을 확보하기 위해서는 트래픽을 늘리거나 실험을 길게 진행해야 합니다.

이러한 이유로 핵클에서는 A/A/B 테스트보다는 A/A 테스트를 권장하고 있습니다.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hackle.io/ab-test/data-analysis/aa-test.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
