Chapter 8 실험 설계의 기초
1. 실험 계획 : 변화 이론
변화이론이란, 행동에 변화를 주어서 현재 수행 중인 작업을 궁극적인 비즈니스 목표와 목표 지표에 연결하는 것입니다.
이를 비즈니스 관점으로 다시 정리해 보면 아래와 같이 표현할 수 있다.
[Action]을 구현하면 [행동 논리]를 통해 [목표 지표]를 기반으로 측정한 [사업 목표]를 달성할 수 있습니다.
2. 실험 설계의 구성 요소
비즈니스 목표와 목표 지표
실험 계획의 첫단계로 무엇을 하려는지 명확하게 설정해야 이후의 실험 내용들이 명확해집니다. 비즈니스 목표는 매출, 비용과 같이 회사의 전체적인 큰 지표라고 보면 되고, 이에 영향을 주는 기본 요인인 선행 지표를 목표 지표로 선정합니다.
개입
실제로 우리가 변화시키려는 행동(action)으로 개입에 따른 지표의 영향성을 명확하게 해석하려면 최소한의 개입을 테스트하는 것이 좋다.
행동 논리
목표와 개입을 연결하는 것이 행동 논리로 추후 실험 결과 해석이나 바람직한 실험을 설계하는 데 있어서 합리적인 논리구조를 짜는 행위를 의미한다. 주로 인과관계 다이어그램을 작성함으로써 논리를 세우면 깔끔하며 대략적인 임팩트(최종적으로 목표 지표를 얼마큼 올리는지) 정도도 같이 적는다.
3. 무작위 배정과 표본 크기/검정력
무작위 배정시 주의할 점
1. 무작위 배정 자체는 말 그대로 무작위로 유저를 배정해서 실험집단에 편향이 생기지 않게 하는 것인데 배정을 할 때 주의할 점은 어떤 시점에 유저를 무작위로 배정할지에 대해서 명확하게 세워야 한다.
2. 무작위 배정의 기준을 어떤 것으로 하냐인데 세션 기준, 사람 기준, 계정 기준 이런 식으로 비슷해 보이지만 매우 다른 의미를 가지고 있기 때문에 이를 잘 정의해줘야 한다.
표본 크기와 검정력 분석
우리가 x%증가한 것을 유의미하다고 평가하려면 어느 정도의 표본을 확보해야 할지는 일반적인 통계적 방법론을 활용해서 추려낼 수 있다.
effect_size = ssprop.proportion_effectsize(0.194, 0184)
ssp.tt_ind_solve_power(effect_size = effect_size, alpha = 0.05, nobs1 = None, alternative = 'larger', power = 0.8)
부트스트랩 시뮬레이션을 통해서도 이를 활용할 수 있다.
이 방식은 우리가 생각하는 신뢰구간을 기준으로 부트스트랩을 돌렸을 때 완전히 양성인 경우에만 버튼을 구현할 것이라는 결정 규칙 등을 세워서 적용한다.
보통 A/B 테스트에서는 t검정 등을 사용하는데 여기서는 특이하게 "행동"과 다른 변수에 대한 목표 지표 회귀분석을 한 다음에, 그 변수의 차이로 비교를 하는 방법을 적용했다.
Chapter 9 ~ 10 층화 무작위 배정/군집 무작위 배정과 계측
이 장은 배정 방식에 대한 설명이라서 압축해서 정리했습니다.
층화 무작위 배정은 남녀, 연령대와 같이 각 집단 별로 추출해서 실험군과 대조군에게 배정하는 방식을 뜻합니다. 이러한 과정에서 사회조사에서는 강제로 실험을 못하거나 하는 경우가 있어서 이런 경우 CASE와 ITT를 활용해서 좀 더 정확하게 추정하는데 이는 이전 블로그 글에서 다루어서 한번 살펴보심 좋을 것 같습니다.
계층적 모델링은 계층별로 변화를 분석하는 방식으로, 이 상황에서도 역시 계층별로 나눈 후에 회귀 계수를 각각 평가하는 형태로 진행합니다. 여기서 우리가 구할 통계값은 계측별 선형모델을 통한 회귀 계수를 사용하며 이는 마치 더미 변수와 같이 군집별로 작동하게 합니다.
이때 순열 조합처럼 군집별 비중만큼 뽑아서 시뮬레이션을 진행한다.
핵심 요약
부트스트랩 시뮬레이션을 사용해서 이 실험의 검정력을 분석하는 방식은 아래와 같이 실행합니다.
귀무가설은 개입이 효과가 없다는 것인데, 변인(개입) 변수를 추가해서 회귀 분석을 돌리고 우리의 목표 지표에 effect_size만큼 더해버렸을 때 이 개입이 효과가 없다면 최종적인 회귀계수가 0에 가까울 것이다. 따라서 여기서는 시뮬레이션에서 신뢰구간을 통해서 하방 신뢰구간보다 크면 1이고, 그렇지 않으면 0으로 해서 총합으로 검정력을 판단한다.
Chapter 11 조절 효과
조절 효과
두 변수 간의 관계에 영향을 미치는 제 3의 변수가 존재하는 경우, 이 변수가 관계를 조절하는 것을 의미한다. 두 변수 간의 상호작용을 해석하는 것을 의미한다.
조절 효과에 영향을 주는 변수에 따라서 분류를 해볼 수 있는데, 크게 3가지 정도가 있다.
1. 분류
1-1. 세분화
특정 집단에 속하는 여부에 따라서 그 효과가 다른 것을 의미한다.
책의 예시는 어린이 동반을 한 유저는 놀이공간이 있을 때 매장에 머무르는 시간이 더 늘어나는데 이를 조절효과의 세분화 분류라고 볼 수 있다.
하나의 목적변수에 대해서 두개의 영향(특히 boolean값으로 있을 때)을 보고 싶을 때가 있을 수 있다. 이때 Binary로 두 변수 유무에 값을 주는 것도 좋지만, 실제로 이 두 변수가 같이 효과가 있을 경우에 영향도 살펴보기 위해 두 변수를 곱한 값을 회귀 분석에 넣는 방식도 있다.
1-2. 상호작용
위의 예시는 사실 어린이 동반 여부가 조절 변수로 보이지만 놀이 공간의 유무가 조절 변수가 될 수도 있다. 즉 관점을 다르게 정의하면 다르게 해석할 수 있다는 것이다. 물론 세분화는 좀 더 CRM 관점에서 유저 집단을 나눠서 조사한다는 점에서 의미가 있다.
다만 세분화 없이 독립적인 변수들간의 효과를 측정하는 과정에서 이런 비대칭성을 해결하기 위해서, 상호작용으로 표현하는 방식도 있다. 이 때는 각 개별 효과를 합한 것보다 더 큰 효과가 있는 것을 상호작용이라고 말한다. 일종의 시너지 효과라고 보면 된다.
인과관계에서는 이렇게 표현한다.
1-3. 비선형성 관계
두 변수간의 관계를 그래프로 그렸을 때, 특정 값 전후로 값이 더 커지거나 선형관계가 아닌 것처럼 보일 때는 그 그래프 모양에 맞게 제곱이나, 로그 함수 형태로 표현하는 받식을 취할 수도 있다. 인과관계 다이어그램에서는 아래와 같이 표현한다.
그 이유는 결국 변수와 그 자체 사이의 상호작용에 불과하기 때문에 자기조절처럼 재구성할 수 있다.
model = ols("Purchases ~ Emails + I(Emails**2)", data = df)
print(model.fit().summary())
*I라는 함수를 통해서 자가 조절을 구현할 수 있다.
2. 적용방식
결국은 조절 효과라는 것이 일반적으로 효과에 대한 2차 효과이기 때문에 작은 계수로 나타나기 때문에 거짓 양성의 위험이 커서 신중하게 사용해야 한다.
2-1. 사용시점
실험 설계 단계에서 조절효과 적용
1. 분석의 주요 목적은 조절효과와 관계없이 주된 효과를 파악하는 것이며 조절 효과는 분석을 보조하는 목적으로 사용하는 경우
2. 조절효과가 분석의 주요 목적인 경우
원클릭 예약버튼으로 인한 예약 완료 여부에 대한 나이의 조절효과를 측정하기 위해서는 크게 아래와 같이 두 가지 가능성이 있습니다.
원클릭 예약 -> 예약과정에 걸리는 시간에 나이가 개입하는지 아니면 예약 과정에 걸리는 시간에서 예약 완료 여부에 영향을 주는지 이렇게 두 가지입니다.
실험 설계 단계에서 이미 우리는 데이터가 있다면 예약 과정에 걸리는 시간 -> 예약 완료 여부에 대한 조절 효과를 측정할 수 있지만 원클릭 예약버튼에 대한 나이의 조절 효과는 아직 실험을 하지 않았기에 이를 측정하기 어렵습니다.
이 과정에서 행동 논리를 잘 작성하는 게 중요한 것을 다시 느끼는 것 같다. 이전의 A/B 테스트할 때는 실험을 다 하고 나서 후속 분석을 했었다면 이런 과정을 통해서 미리 이런 효과들, 변수 간의 관계에 대해서 잘 분석하는 것이 매우 중요하다는 것을 알 수 있게 된 것 같다.
실험 분석과정에서의 조절 효과 적용
위의 예시 어린이를 동반하지 않은 고객과 동반한 고객에 대한 고객 비중이 1:1이라고 하자. 이때 어린이를 동반하지 않은 고객에게 play_area가 있는 것이 체류시간에 마이너스가 아니라면, 혹은 마이너스가 안되게 방음장치나, 출입구를 분리시켜서 이를 마이너스 효과가 안 나게 한다면 이를 넣는 게 비즈니스상 합리적일 수 있다.
2-2. 교란효과와 조절 효과
이렇게 방문 이유가 때로는 교란 효과와 특정 카테고리에 대해서 조절 효과를 줄 수도 있다. 다만 교란 효과는 우리가 관찰할 수 없을 때이고, 방문 이유를 알 수만 있다면 각각에 맞게 분석을 하고 결과를 종합해서 확인하면 된다.
인과관계를 추론하는 것은 매우 복잡하기 때문에 책에서는 지속적으로 과학이자 예술이라고 한다. 충분한 고민이 필요하기 때문에 실제로 적용할 때 다양한 가능성에 대한 검토가 필요하다.
3. 다중 조절 변수
두 개 이상의 조절변수가 있다면 어떻게 될까? 하나의 조절 변수가 있을 때와 동일하게 아래와 같이 추가로 항을 더해주면 된다.
위와 다르게 나이와 어린이 동반 여부 이 두 개 간의 조절 변수끼리 상호작용을 하는 경우에는 어떻게 될까?
그림으로는 이렇게 표현할 수 있고, 식으로는 이렇게 세워볼 수 있다.
이러한 조절 효과에 대한 계수 역시도 부트스트랩으로 더 신뢰구간을 좁게 구할 수 있다.
예측
예를 들어 처음으로 놀이공간을 도입해서 얻은 결과를 가지고 새로운 매장에 오픈했을 때 얼마큼의 매장에 머무른 시간에 대한 증가가 있을지 예측하고 싶다고 하자.
이런 경우에는 아래와 같은 프로세스로 진행한다.
1. 현재 데이터를 가지고 조절효과에 대한 회귀계수를 얻는다.(이진 변수 PlayArea 1과 0인 경우 모두 포함)
2. 예측하려는 매장 데이터를 선택하고, 이 매장의 예상 이용시간 pred_dur0을 추가한다.
3. 이제 예측하려는 매장 데이터의 PlayArea를 0에서 1로 바꾼다.
4. 그 상황에서의 예측값과의 차이를 구해서 그 효과를 측정한다.
Chapter 12 매개효과와 도구 변수
매개 효과
독립변수와 종속변수 간의 직접적인 인과관계 외에도 매개 변수를 통한 간접적인 인과관계가 존재하는 경우 매개 효과가 있다고 한다.
이 관점으로 보면 매개 변수는 인과관계에 대한 메커니즘을 이해할 수 있는 좋은 수단이다.
즉, 상관관계만 강한 상황에서 그 둘 사이의 매개 변수들을 찾는 과정에서 인과관계에 가까운 관계를 발견할 수 있고 이는 인과관계의 신뢰성을 높일 수 있다는 점이다.
물론 독립변수가 종속 변수에 직접적으로 영향을 주는 부분과 매개변수를 통해 주는 영향 이 두 가지가 동시에 존재한다면 이는 부분 매개효과라고 한다.
그렇다면 이를 어떻게 측정해야 할까? 이를 위해서는 여러 번의 효과를 측정해야 한다.
1. A가 C에 미치는 총 효과
2. B에 의해 매개되는 A가 C에 미치는 효과(간접 효과) = C ~ B, B ~ A에서 나온 회귀 계수를 곱해서 구한다.
3. B에 의해 매개되지 않는 A가 C에 미치는 효과(직접 효과) = C ~ B + A에서 나온 A의 계수
B ~ A, C ~ A, C ~ B, C ~ B+A 이렇게 4번의 회귀분석을 돌린다.
도구 변수
위의 상황에서 만일 매개변수가 이진변수이면, 로지스틱 회귀를 사용해야 하고, 그럼 위의 2번처럼 회귀 계수를 곱해서 해석하는 것이 어려워진다.
이 때 도구 변수가 활용되는데 그 정의는 아래와 같다.
정의
두 변수 사이에 완전히 매개된 관계가 있고 매개변수와 최종 변수 사이의 관계가 교란되었다고 가정하겠습니다. 총효과에 대한 계수를 첫 번째 매개효과의 계수로 나누어 해당 관계에 대한 편향되지 않은 추정치를 구할 수 있습니다.
책에서는 예시로 아래 인과관계 다이어그램을 활용했다.
측정한 고객만족도의 6개월동안 소비한 금액에 대해 평가하기 위해서는 여러번의 회귀를 수행해서 구해야 한다.
다만, 이렇게 Openness를 제거하더라도 다른 교란 변수가 있을 수 있기 때문에 CSAT과 M6Spend 인과관계를 명확하게 파악하기 어렵다. 그래서 아래와 같은 방식으로 해결할 수 있다.
가장 왼쪽에 있는 Group은 Openness와 관계가 없기 때문에 1번을 우선 계산하고, M6_spend로의 사슬 효과를 축소해서 b/a를 통해서 CSAT -> M6Spend의 회귀 계수를 구한다.
iv_mod = IV2SLS.from_formula('M6Spend ~ 1 + age + reason + [call_CSAT ~ group]',
exap_data_df).fit()
#예측 변수를 작성할 때 상수('1')을 명시적으로 포함해야하고, 관심변수와 관련된 다른 공변량(age, reason)도 대괄호 밖에 포함해야합니다.
iv_mod.params
코드로는 아래와 같이 실행할 수 있다.
'데이터 분석, 통계 > 유튜브, 책, 아티클 정리' 카테고리의 다른 글
[Book] 행동 데이터 분석 6장 ~ 7장 : 데이터 분석 (0) | 2023.12.15 |
---|---|
[Book] 행동 데이터 분석 4장 ~ 5장 : 인과관계 다이어그램과 교란 해소 (0) | 2023.12.14 |
[book] 행동 데이터 분석 정리 1~3장 (0) | 2023.12.12 |
[book] 데이터 분석과 비판적사고 (1) | 2023.11.04 |