인과추론

[AWS로 SQL] 2요인 고정효과 모형

W[더블유] 2023. 4. 2. 02:45

 

이번 포스트는 2요인 고정효과 모형에 관해서 AWS 에서 직접 실습할 수 있도록 하는 포스트이다. US.Virginia 버젼으로 AWS S3, Glue, Athena 를 사용하고 있는데, Seoul 로 하면 인터페이스가 달라보인다. 그래도 주요 기능은 바뀌지 않을 것이라고 가정하고 포스팅해보겠다. 

 

AWS S3 에 나는 hyeok/paperabtest/ 폴더에 ab_data.csv 파일을 저장해두었다. 

 

 

 

 

AWS Glue

왼쪽 탭에서 Crawlers 를 클릭한다. 

 

 

클릭하면, 이전에 실행했던 클롤러들에 관한 화면이 나온다. 우측에 "Create crawler" 를 클릭한다. 

 

 

스텝 1, ... , 5 가 있는데, 설명대로 읽어주면 된다. 

 

 

나는 paperabtest 라는 테이블에 저장을 했다. 

 

 

AWS Athena 화면

 

Athena 화면에서 paperabtest 테이블을 열어서 SQL 쿼리를 실행할 수 있다. 

 

 

 

2요인 고정효과 모형효과를 위해서 de-meaning (week 나 firm 별로 각 변수들의 평균을 구한 다음에 원래 변수에 빼주기 등) 을 하는 코드이다. 

 

-- (Project: PaperABtest) 
SELECT week_id, firm_id, log1p_pageviews, using_ab_only, log1p_stack2,
    log1p_pageviews - AVG(log1p_pageviews) OVER (PARTITION BY week_id) AS demW_log1p_pageviews,
    using_ab_only - AVG(using_ab_only) OVER (PARTITION BY week_id) AS demW_using_ab_only,
    log1p_stack2 - AVG(log1p_stack2) OVER (PARTITION BY week_id) AS demW_log1p_stack2,
    log1p_pageviews - AVG(log1p_pageviews) OVER (PARTITION BY firm_id) AS demF_log1p_pageviews,
    using_ab_only - AVG(using_ab_only) OVER (PARTITION BY firm_id) AS demF_using_ab_only,
    log1p_stack2 - AVG(log1p_stack2) OVER (PARTITION BY firm_id) AS demF_log1p_stack2,
    log1p_pageviews - AVG(log1p_pageviews) OVER () +
    AVG(log1p_pageviews) OVER () - AVG(log1p_pageviews) OVER (PARTITION BY week_id) -
    AVG(log1p_pageviews) OVER (PARTITION BY firm_id) AS demWF_log1p_pageviews,
    using_ab_only - AVG(using_ab_only) OVER () +
    AVG(using_ab_only) OVER () - AVG(using_ab_only) OVER (PARTITION BY week_id) -
    AVG(using_ab_only) OVER (PARTITION BY firm_id) AS demWF_using_ab_only,
    log1p_stack2 - AVG(log1p_stack2) OVER () +
    AVG(log1p_stack2) OVER () - AVG(log1p_stack2) OVER (PARTITION BY week_id) -
    AVG(log1p_stack2) OVER (PARTITION BY firm_id) AS demWF_log1p_stack2
FROM paperabtest.paperabtest;

 

코드 실행하면, 아래 그림과 같이 결과값이 de-mean 된 변수들이 포함된 데이터가 출력되는데, ab_dataDeMean.csv 로 저장해주었다. 

 

 

 

 

그 다음 스텝은 위 데이터를 이용해서 회귀식을 돌려보는 것이다. 구글 콜랩에 pap3rdDiDtable2_SQL.ipynb 파일에 회귀식을 돌렸다. 결과는 원래 논문의 결과값과 동일하게 나타난다.