내일배움캠프_데이터분석_2기/TIL

[TIL] camp_day36_240605

단ee 2024. 6. 5. 18:35

이번 8주차는 조금 지쳐서 안 열심히 했다. 미래의 내가 감당할 학습량이 늘어나고 있긴 하지만... 그래도 쉬엄쉬엄 공부하는 한 주로 삼아야겠다.

학습 내용


  1. 통계 기초 - A/B test, 유의수준, 검정통계량과 P-value

    1. A/B test

      • 가설을 입증하기 위해 대조군과 실험군을 설정하고 검증하는 방법
      • 버킷테스트 또는 분할테스트라고도 부르며, 마케팅 고객 데이터 분석 중 가장 널리 사용됨
      • 크게 다섯 단계로 진행됨
        (1) 현행 데이터 탐색 (2) 가설 설정 (3) 유의수준 설정 (4) 테스트설계 및 실행 (5) 테스트 결과 분석
      • 적절한 크기의 표본이 필요하고, 대조군과 실험군은 무작위로 선정되어야 하며, 너무 오랜 기간 진행하거나 너무 많이 시행할 경우 유저 이탈의 원인이 될 수도 있다.
    2. 유의수준

      • 중심극한정리에 따라, 모집단의 크기가 충분히 크다면 표본평균의 분포는 모수 기반의 정규분포를 따르고, 수집한 표본의 통계량을 통해 모집단의 모수를 추정할 수 있다.
      • 하지만 표본을 추출할 경우, 모집단과 표본집단 사이에는 오류가 발생할 수 밖에 없다.
      • 따라서 모집단과 표본집단 사이 발생하는 오류를 허용 가능한 기준을 설정해주어야 하며, 이것이 유의수준이다.
      • 신뢰도의 반대로, 만약 신뢰도 95%로 설정한다면 유의수준은 5%(=0.05)가 된다.
    3. 검정통계량과 P-value

      • P-value는 어떤 사건이 우연히 발생할 확률로, 0과 1 사이의 값을 가진다.
      • 유의수준보다 P-value가 작은 경우, 이 사건에 대해 우연히 일어날 가능성이 거의 없기 때문에, 대립가설(A와 B는 다르다)을 채택할 수 있다.
    4. 활용한 Python 라이브러리와 함수

       Python
       import pandas as pd
       import scipy.stats as stats
      
       # T-test
        t, pvalue=stats.ttest_ind(a_df, b_df)
      
       # 카이제곱검정
           # pandas 라이브러리의 crosstab 함수를 통해, 두 범주형 자료의 빈도표를 만듦
       result = pd.crosstab(df['Gender'], df['Size'])
       stats.chi2_contingency(observed=result)
  2. CASE column WHEN 형태의 구문 작성 연습(SQL)

    • 예전에 CASE WHEN 구문의 쿼리 스타일 작성 가이드를 보고, 활용해보고 싶은 구문이 있었다참고 : 캠프 31일차 TIL
    • 이번에 푼 코테 문제에서 이 구문 스타일을 사용해서 남기는 기록
    • 문제 : 프로그래머스_연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기
        SQL
        WITH CTE AS (
            SELECT
                DISTINCT EMP_NO
                ,CASE
                    WHEN AVG(SCORE) OVER(PARTITION BY EMP_NO) >= 96
                        THEN 'S'
                    WHEN AVG(SCORE) OVER(PARTITION BY EMP_NO) >= 90
                        THEN 'A'
                    WHEN AVG(SCORE) OVER(PARTITION BY EMP_NO) >= 80
                        THEN 'B'
                    ELSE 'C'
                END AS 'GRADE'
            FROM
                HR_GRADE
        )
        SELECT CTE.EMP_NO
            ,EMP_NAME
            ,GRADE
            ,CASE GRADE
                WHEN 'S'
                    THEN SAL * 0.2
                WHEN 'A'
                    THEN SAL * 0.15
                WHEN 'B'
                    THEN SAL * 0.10
                WHEN 'C'
                    THEN SAL * 0
                ELSE NULL
            END AS BONUS
        FROM CTE
            INNER JOIN HR_EMPLOYEES AS e
                ON CTE.EMP_NO = e.EMP_NO
        ORDER BY CTE.EMP_NO ASC

고찰 & 기타


  • 이번주 초부터 시작된 집중력 저하로... 지정된 학습 시간이 끝나고 TIL 쓰는 걸 조금 소홀히 했더니 밀리고 말았다...
  • 빨리 복습 마저하고, 밀린 TIL 전부 채워 넣어야겠다!

'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글

[TIL] camp_day39_240611  (0) 2024.06.11
[TIL] camp_day37_240607  (0) 2024.06.10
[TIL] camp_day35_240604  (0) 2024.06.04
[TIL] camp_day34_240603  (0) 2024.06.04
[TIL] camp_day33_240531  (1) 2024.06.03