테스트 결과의 관련성과 유용성을 극대화하는 데 도움이 되고자 이 페이지에서는 Firebase A/B Testing 작동 방식을 자세히 설명합니다.
샘플 크기
Firebase A/B Testing 추론에서는 실험을 시작하기 전에 최소 샘플 크기를 식별할 필요가 없습니다. 일반적으로 무리가 되지 않는 선에서 최대한의 실험 노출 수준을 선택해야 합니다. 샘플 크기가 클수록 통계적으로 유의미한 결과를 찾을 가능성이 커집니다. 특히 대안 간 실적 차이가 작은 경우에 그렇습니다. 또한 온라인 샘플 크기 계산기를 사용하여 실험의 특성에 따른 권장 샘플 크기를 확인할 수 있습니다.
실험 수정
다음과 같이 실행 중인 실험에서 선택한 매개변수를 수정할 수 있습니다.
- 실험명
- 설명
- 타겟팅 조건
- 대안 값
실험을 수정하려면 다음 안내를 따르세요.
- 수정하려는 실험의 결과 페이지를 엽니다.
- 더보기 메뉴에서 실행 중인 실험 수정을 선택합니다.
- 변경한 후 게시를 클릭합니다.
실행 중인 실험에서 앱의 동작을 변경하면 결과에 영향이 있을 수 있습니다.
원격 구성 대안 할당 로직
비율 노출 조건을 포함한 모든 실험 타겟팅 조건과 일치하는 사용자는 대안 가중치, 실험 ID 해시 및 사용자의 Firebase 설치 ID에 따라 실험 대안에 할당됩니다.
Google Analytics 잠재고객에는 지연 시간이 적용되어 사용자가 최초로 잠재고객 기준을 충족하는 즉시 잠재고객이 제공되지는 않습니다.
- 잠재고객을 새로 만들면 신규 사용자를 집계하는 데 24~48시간 정도 걸릴 수 있습니다.
- 신규 사용자는 일반적으로 자격을 얻고 24~48시간 후에 적격한 잠재고객으로 등록됩니다.
시간에 민감한 타겟팅의 경우 Google Analytics 사용자 속성 또는 국가나 리전, 언어, 앱 버전과 같은 기본 제공 타겟팅 옵션을 사용하는 것이 좋습니다.
사용자가 실험에 배치되면 실험 대안에 영구적으로 할당되며 사용자 속성이 변경되어 더 이상 실험 타겟팅 기준을 충족하지 않더라도 실험이 활성 상태로 유지되는 한 실험에서 매개변수 값을 수신합니다.
활성화 이벤트
실험 활성화 이벤트에서는 실험 측정이 활성화 이벤트를 트리거하는 앱 사용자로 제한됩니다. 실험 활성화 이벤트는 앱에서 가져온 실험 매개변수에 영향을 미치지 않습니다. 실험 타겟팅 기준을 충족하는 모든 사용자가 실험 매개변수를 수신합니다. 따라서 실험 매개변수를 가져와 활성화한 후, 실험 매개변수를 사용하여 앱 동작을 수정하기 전에 발생하는 활성화 이벤트를 선택해야 합니다.
대안 가중치
실험을 만드는 동안 기본 대안 가중치를 변경하여 대안에 더 높은 비율의 실험 사용자를 배치할 수 있습니다.
테스트 결과 해석하기
Firebase A/B Testing은 빈도주의적 추론을 사용하여 실험 결과가 우연히 발생할 수 있는 가능성을 파악하는 데 도움을 줍니다. 이 가능성은 확률 값 또는 p값으로 표현됩니다. p값은 실제로 효과가 없는 경우 무작위로 두 대안 간의 실적 차이가 이 정도 또는 그 이상으로 발생할 수 있는 확률로, 0과 1 사이의 값으로 측정됩니다. A/B Testing에서는 다음을 위해 중요도 수준 0.05를 사용합니다.
- 0.05 미만의 p값은 실제 차이가 0인 경우 관찰된 차이가 이 정도로 극단적으로 무작위로 발생할 확률이 5% 미만임을 나타냅니다. 0.05가 기준이므로 0.05보다 작은 p값은 대안 간에 통계적으로 유의미한 차이가 있음을 나타냅니다.
- 0.05보다 큰 p값은 대안 간 차이가 통계적으로 유의미하지 않음을 나타냅니다.
실험 데이터는 하루에 한 번 새로고침되며 실험 결과 페이지 상단에 마지막 업데이트 시간이 표시됩니다.
실험 결과 그래프에는 선택한 측정항목의 누적 평균 값이 표시됩니다. 예를 들어 사용자당 광고 수익을 측정항목으로 추적하는 경우 사용자당 관찰된 수익을 표시하며, 비정상 종료가 발생하지 않은 사용자를 추적하는 경우에는 비정상 종료를 경험하지 않은 사용자의 비율을 추적합니다. 이 데이터가 실험 시작 시점부터 누적됩니다.
결과는 관측 데이터와 추론 데이터로 분할됩니다. 관측 데이터는 Google 애널리틱스 데이터에서 직접 계산되며, 추론 데이터는 p값과 신뢰 구간을 제공하여 관측 데이터의 통계적 유의성을 평가하는 데 도움이 됩니다.
측정항목마다 다음 통계가 표시됩니다.
관측된 데이터
- 추적된 측정항목의 총 값(유지된 사용자 수, 비정상 종료를 경험한 사용자 수, 총수익)
- 측정항목별 비율(유지율, 전환율, 사용자당 수익)
- 대안과 기준 간의 차이 비율(상승도)
추론 데이터
95% CI(평균치의 차이)는 추적된 측정항목의 'true' 값이 포함된 구간을 95%의 신뢰도로 표시합니다. 예를 들어 실험에서 $5~ $10 사이의 총 예상 수익에 대한 CI가 95%라면 평균치의 실제 차이가 $5~ $10일 확률이 95%입니다. CI 범위에 0이 있으면 대안과 기준 간의 통계적 유의성 차이가 감지되지 않았습니다.
신뢰 구간 값은 추적된 측정항목과 일치하는 형식으로 표시됩니다. 예를 들어 사용자 유지는 시간(
HH:MM:SS
형식), 사용자당 광고 수익은 미국 달러(USD), 전환율은 백분율로 표시됩니다.p값은 대안과 기준 간에 실제 차이가 없다고 가정할 때 실험에서 얻은 결과만큼 극단적인 데이터를 관찰할 확률을 나타냅니다. p값이 낮을수록 실험을 반복해도 관찰된 실적이 사실이라는 신뢰도가 높아집니다. 0.05 이하의 값은 큰 차이를 나타내며 결과가 우연히 발생했을 가능성이 낮음을 나타냅니다. p값은 단측 검정을 기반으로 하며, 대안 값이 기준 값보다 큽니다. Firebase는 연속 변수(수익과 같은 숫자 값)에 이분산 t-검정을 사용하고 전환 데이터(사용자 유지, 비정상 종료가 발생하지 않은 사용자, Google Analytics 이벤트를 트리거하는 사용자와 같은 바이너리 값)에는 비율의 z-검정을 사용합니다.
실험 결과는 다음을 포함하여 각 실험 대안에 대한 중요한 통계를 제공합니다.
- 직접 측정(즉, 실제 관측 데이터)된 각 실험 측정항목의 값과 기준의 차이
- 대안과 기준 간에 관찰된 차이가 우연히 발생했을 가능성(p값)
- 각 실험 측정항목에서 대안과 기준 간의 '실제' 실적 차이가 포함될 가능성이 높은 범위. '최상' 및 '최악'의 실적 시나리오를 이해할 수 있는 방법
Google 최적화 도구에서 제공하는 실험 결과 해석
2023년 10월 23일 이전에 시작된 실험의 Firebase A/B Testing 결과는 Google 최적화 도구에서 제공되었습니다. Google 최적화 도구는 Bayesian 추론을 사용하여 실험 데이터에서 유용한 통계를 생성합니다.
결과는 '관측 데이터'와 '모델링된 데이터'로 분할됩니다. 관측 데이터는 애널리틱스 데이터에서 직접 계산되었으며, 모델링된 데이터는 Bayesian 모델을 관측 데이터에 적용하여 파생되었습니다.
측정항목마다 다음 통계가 표시됩니다.
관측 데이터
- 총 값(대안의 모든 사용자에 대한 측정항목 합계)
- 평균 값(대안의 사용자에 대한 측정항목 평균 값)
- 기준과의 차이(%)
모델링된 데이터
- 기준 초과 가능성: 이 대안에서 측정항목의 값이 기준보다 높을 가능성
- 기준과의 차이(%): 대안 및 기준의 측정항목에 대한 중앙값 모델 예상치를 사용해 계산
- 측정항목 범위: 측정항목 값이 발견될 가능성이 가장 높은 범위(50% 및 95% 확실성)
대체로 실험 결과에서는 실험의 각 대안에 관한 3가지 중요 통계를 제공합니다.
- 직접 측정(예: 실제 관측 데이터)된 각 실험 측정항목의 값과 기준의 차이
- Bayesian 추론을 토대로 각 실험 측정항목이 기준/가장 우수할 확률보다 높을 가능성(각각 우수/최우수 실적 가능성)
- Bayesian 추론을 기반으로 한 각 실험 측정항목의 타당한 범위 - '최고' 및 '최악'의 시나리오(신용 구간)
최우수 대안 결정
빈도주의적 추론을 사용하는 실험의 경우 Firebase는 목표 측정항목에서 대안과 기준 간에 통계적으로 유의미한 성능 차이가 있을 때 대안이 최우수 대안임을 선언합니다. 여러 대안이 이 기준을 충족하면 p값이 가장 낮은 대안이 선택됩니다.
Google 최적화 도구를 사용한 실험에서 Firebase는 기본 측정항목에서 대안이 기준 대안보다 우수할 확률이 95%를 넘으면 '명확한 최우수 대안'으로 선언했습니다. 여러 대안이 '명확한 최우수 대안' 기준을 충족한 경우 실적이 가장 좋은 대안에만 '명확한 최우수 대안' 라벨이 지정되었습니다.
최우수 대안은 기본 목표만을 토대로 결정되므로 최우수 대안을 적용할지 여부를 결정하기 전에 모든 관련 요소를 고려하고 보조 측정항목의 결과를 검토해야 합니다. 변경 시 예상되는 긍정적인 요소, 부정적인 위험 요소(예: 개선에 대한 신뢰 구간의 하한값), 기본 목표 이외의 측정항목에 미치는 영향을 고려할 수 있습니다.
예를 들어 기본 측정항목이 비정상 종료가 발생하지 않은 사용자이고 대안 A가 기준보다 우수하지만 대안 A 사용자 유지율 측정항목이 기준 사용자 유지율보다 낮은 경우, 대안 A를 보다 광범위하게 적용하기 전에 추가 조사를 하는 것이 좋습니다.
기본 및 보조 측정항목의 전반적인 실적 평가를 토대로 최우수 대안뿐만 아니라 모든 대안을 적용할 수 있습니다.
실험 기간
Firebase에서는 다음 조건이 충족될 때까지 실험을 계속 수행할 것을 권장합니다.
- 실험에서 유용한 결과를 제공하기 위한 충분한 데이터가 수집되었습니다. 실험 및 결과 데이터는 하루에 한 번 업데이트됩니다. 온라인 샘플 크기 계산기를 사용하여 실험의 권장 샘플 크기를 평가할 수 있습니다.
- 샘플이 사용자를 대표하며 장기적인 실적을 측정할 수 있을 만큼 실험을 충분히 진행했습니다. 일반적인 원격 구성 실험에 권장되는 최소 런타임은 2주입니다.
실험 데이터는 실험 시작 후 최대 90일 동안 처리됩니다. 90일이 지나면 실험이 자동으로 중단됩니다. 실험 결과가 Firebase Console에서 더 이상 업데이트되지 않고 실험에서 실험별 매개변수 값을 전송하지 않습니다. 이 시점에서 클라이언트는 Remote Config 템플릿에 설정된 조건을 기반으로 매개변수 값을 가져오기 시작합니다. 이전 실험 데이터는 실험을 삭제할 때까지 보관됩니다.
BigQuery 스키마
Firebase Console에서 A/B Testing 실험 데이터 보기 외에도 BigQuery에서 실험 데이터를 검사하고 분석할 수 있습니다. A/B Testing에는 별도의 BigQuery 테이블이 없지만 실험 및 대안 멤버십은 Analytics 이벤트 테이블 내의 모든 Google Analytics 이벤트에 저장됩니다.
실험 정보가 포함된 사용자 속성은 userProperty.key like "firebase_exp_%"
또는 userProperty.key =
"firebase_exp_01"
형식이며, 여기서 01
은 실험 ID이고 userProperty.value.string_value
에는 실험 대안의 색인(0부터 시작)이 포함됩니다.
이러한 실험 사용자 속성을 사용하여 실험 데이터를 추출할 수 있습니다. 이를 통해 실험 결과를 다양한 방법으로 분할하고 A/B Testing 결과를 독립적으로 확인할 수 있습니다.
시작하려면 이 가이드의 설명대로 다음을 완료합니다.
- Firebase Console에서 Google Analytics에 BigQuery 내보내기 사용 설정
- BigQuery를 사용하여 A/B Testing 데이터에 액세스
- 쿼리 예시 살펴보기
Firebase Console에서 Google Analytics에 BigQuery 내보내기 사용 설정
Spark 요금제를 사용하고 있으면 샌드박스 한도에 따라 BigQuery 샌드박스를 사용하여 BigQuery에 무료로 액세스할 수 있습니다. 자세한 내용은 가격 책정 및 BigQuery 샌드박스를 참조하세요.
먼저 Analytics 데이터를 BigQuery로 내보내고 있는지 확인합니다.
- 통합 탭(Firebase Console의 > 프로젝트 설정을 사용하여 액세스 가능)을 엽니다.
- 이미 다른 Firebase 서비스에서 BigQuery를 사용하고 있으면 관리를 클릭합니다. 그렇지 않으면 연결을 클릭합니다.
- Firebase와 BigQuery 연결 정보를 검토한 후 다음을 클릭합니다.
- 통합 구성 섹션에서 Google Analytics 전환 버튼을 사용 설정합니다.
지역을 선택하고 내보내기 설정을 선택합니다.
BigQuery에 연결을 클릭합니다.
선택한 데이터 내보내기 방식에 따라 테이블을 사용할 수 있을 때까지 최대 하루가 걸릴 수 있습니다. 프로젝트 데이터를 BigQuery에 내보내는 방법에 대한 자세한 내용은 BigQuery로 프로젝트 데이터 내보내기를 참조하세요.
BigQuery에서 A/B Testing 데이터에 액세스
특정 실험 데이터를 쿼리하기 전에 쿼리에 사용할 다음의 일부 또는 전체를 얻는 것이 좋습니다.
- 실험 ID: 실험 개요 페이지의 URL에서 이 값을 가져올 수 있습니다. 예를 들어 URL이
https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25
이면 실험 ID는 25입니다. - Google Analytics 속성 ID: 9자리 Google Analytics 속성 ID입니다. Google Analytics 내에서 찾을 수 있습니다. 프로젝트 이름을 확장하여 Google Analytics 이벤트 테이블 이름(
project_name.analytics_000000000.events
)을 표시하면 BigQuery에도 표시됩니다. - 실험일: 더 빠르고 효율적인 쿼리를 작성하려면 쿼리를 실험 데이터(
YYYYMMDD
서픽스로 식별되는 테이블)가 포함된 Google Analytics 일일 이벤트 테이블 파티션으로 제한하는 것이 좋습니다. 실험이 2024년 2월 2일부터 2024년 5월 2일까지 실행된 경우_TABLE_SUFFIX between '20240202' AND '20240502'
을 지정합니다. 예시를 보려면 특정 실험 값 선택을 참조하세요. - 이벤트 이름: 일반적으로 실험에 구성한 목표 측정항목에 해당됩니다. 예를 들면
in_app_purchase
이벤트,ad_impression
또는user_retention
이벤트입니다.
쿼리를 생성하는 데 필요한 정보를 수집한 후에는 다음 안내를 따르세요.
- Google Cloud 콘솔에서 BigQuery를 엽니다.
- 프로젝트를 선택한 후 SQL 쿼리 만들기를 선택합니다.
- 쿼리를 추가합니다. 실행할 쿼리 예시는 쿼리 예시 살펴보기를 참조하세요.
- 실행을 클릭합니다.
Firebase Console의 자동 생성 쿼리를 사용하여 실험 데이터 쿼리
Blaze 요금제를 사용하는 경우 실험 개요 페이지에 보고 있는 실험의 실험 이름, 대안, 이벤트 이름, 실험의 이벤트 수를 반환하는 샘플 쿼리가 제공됩니다.
자동 생성된 쿼리를 가져와 실행하려면 다음 안내를 따르세요.
- Firebase Console에서 A/B Testing을 열고 쿼리하려는 A/B Testing 실험을 선택하여 실험 개요를 엽니다.
- 옵션 메뉴의 BigQuery 통합 아래에서 실험 데이터 쿼리를 선택합니다. Google Cloud 콘솔 내 BigQuery에서 프로젝트가 열리고 실험 데이터를 쿼리하는 데 사용할 수 있는 기본 쿼리를 제공합니다.
다음 예시는 'Winter welcome experiment'이라는 이름의 3가지 대안(기준 포함)이 있는 실험에 대해 생성된 쿼리를 보여줍니다. 각 이벤트의 활성 실험 이름, 대안 이름, 순 이벤트, 이벤트 수를 반환합니다. 쿼리 빌더는 프로젝트 내에서 직접 열기 때문에 테이블 이름에서 프로젝트 이름을 지정하지 않습니다.
/*
This query is auto-generated by Firebase A/B Testing for your
experiment "Winter welcome experiment".
It demonstrates how you can get event counts for all Analytics
events logged by each variant of this experiment's population.
*/
SELECT
'Winter welcome experiment' AS experimentName,
CASE userProperty.value.string_value
WHEN '0' THEN 'Baseline'
WHEN '1' THEN 'Welcome message (1)'
WHEN '2' THEN 'Welcome message (2)'
END AS experimentVariant,
event_name AS eventName,
COUNT(*) AS count
FROM
`analytics_000000000.events_*`,
UNNEST(user_properties) AS userProperty
WHERE
(_TABLE_SUFFIX BETWEEN '20240202' AND '20240502')
AND userProperty.key = 'firebase_exp_25'
GROUP BY
experimentVariant, eventName
추가 쿼리 예시를 보려면 쿼리 예시 살펴보기로 진행하세요.
쿼리 예시 살펴보기
다음 섹션에서는 Google Analytics 이벤트 테이블에서 A/B Testing 실험 데이터를 추출하는 데 사용할 수 있는 쿼리의 예시를 보여줍니다.
모든 실험에서 구매 및 실험 표준 편차 값 추출
실험 결과 데이터를 사용하여 독자적으로 Firebase A/B Testing 결과를 확인할 수 있습니다. 다음 BigQuery SQL 문은 실험 대안과 각 대안의 순 사용자 수를 추출하고 in_app_purchase
및 ecommerce_purchase
이벤트에서 발생한 총수익과 _TABLE_SUFFIX
시작일과 종료일로 지정된 기간 내 모든 실험의 표준 편차를 합산합니다. 이 쿼리에서 얻은 데이터를 단측 t-검정을 위한 통계적 유의성 생성기에서 사용하여 Firebase에서 제공하는 결과가 자체 분석과 일치하는지 확인합니다.
A/B Testing에서 추론을 계산하는 방법에 대한 자세한 내용은 테스트 결과 해석을 참조하세요.
/*
This query returns all experiment variants, number of unique users,
the average USD spent per user, and the standard deviation for all
experiments within the date range specified for _TABLE_SUFFIX.
*/
SELECT
experimentNumber,
experimentVariant,
COUNT(*) AS unique_users,
AVG(usd_value) AS usd_value_per_user,
STDDEV(usd_value) AS std_dev
FROM
(
SELECT
userProperty.key AS experimentNumber,
userProperty.value.string_value AS experimentVariant,
user_pseudo_id,
SUM(
CASE
WHEN event_name IN ('in_app_purchase', 'ecommerce_purchase')
THEN event_value_in_usd
ELSE 0
END) AS usd_value
FROM `PROJECT_NAME.analytics_ANALYTICS_ID.events_*`
CROSS JOIN UNNEST(user_properties) AS userProperty
WHERE
userProperty.key LIKE 'firebase_exp_%'
AND event_name IN ('in_app_purchase', 'ecommerce_purchase')
AND (_TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYMMDD')
GROUP BY 1, 2, 3
)
GROUP BY 1, 2
ORDER BY 1, 2;
특정 실험 값 선택
다음 쿼리 예시에서는 BigQuery에서 특정 실험 데이터를 가져오는 방법을 보여줍니다. 이 샘플 쿼리는 실험 이름, 대안 이름(기준 포함), 이벤트 이름, 이벤트 수를 반환합니다.
SELECT
'EXPERIMENT_NAME' AS experimentName,
CASE userProperty.value.string_value
WHEN '0' THEN 'Baseline'
WHEN '1' THEN 'VARIANT_1_NAME'
WHEN '2' THEN 'VARIANT_2_NAME'
END AS experimentVariant,
event_name AS eventName,
COUNT(*) AS count
FROM
`analytics_ANALYTICS_PROPERTY.events_*`,
UNNEST(user_properties) AS userProperty
WHERE
(_TABLE_SUFFIX BETWEEN 'YYYMMDD' AND 'YYYMMDD')
AND userProperty.key = 'firebase_exp_EXPERIMENT_NUMBER'
GROUP BY
experimentVariant, eventName
한도
A/B Testing은 실험 총 300개, 진행 중인 실험 24개, 임시 실험 24개로 제한됩니다. 이 한도는 Remote Config 출시와 공유됩니다. 예를 들어 실행 중인 출시 2개와 진행 중인 실험 3개가 있으면 출시나 실험을 최대 19개까지 추가할 수 있습니다.
총 실험 한도 300개 또는 임시 실험 한도 24개에 도달하면 새 실험을 만들기 전에 기존 실험을 삭제해야 합니다.
진행 중인 실험과 출시 한도인 24개에 도달하면 새 실험을 시작하기 전에 진행 중인 실험이나 출시를 중지해야 합니다.
실험에는 최대 8개의 대안(기준 포함)과 각 대안당 최대 25개의 매개변수가 포함될 수 있습니다. 실험의 크기는 약 200KiB까지 가능합니다. 여기에는 대안 이름, 대안 매개변수, 기타 구성 메타데이터가 포함됩니다.