본문 바로가기
생활 정보/IT 정보

파이썬으로 데이터분석하기 t-test 평균검정 따라하기

by 스파이더재벌 2019. 2. 18.

목차

    728x90
    반응형
    728x170

    파이썬으로 t-test, 즉 평균 검정을 해보도록 하겠습니다.

     

    개요

    평균 검정은 단일집단 혹은 독립된 집단 사이의 가설을 검정하기 위한 수단으로 수치형 변수에 대해 집단의 평균의 차를 비교하기 위해 사용한다. 검정통계량(평균검정에서는 t) p-value를 계산하여 신뢰구간을 만족하는 지 확인하고, 가설의 채택 여부를 결정한다.

    평균검정은 크게 z-검정, t-검정, 분산분석으로 나뉜다. z-검정과 t-검정은 비교집단이 2개 이하일 경우에 사용하고 분산분석은 3개 집단 이상일 경우에 사용한다. 분산분석의 경우 다음에 다룰 것이기 때문에 논외한다. 2개 집단 이하에서 평균검정을 하기 위해서는 z-검정과 t-검정이 사용된다. 이 둘의 차이는 다음과 같다. z-검정은 모분산을 알고 있을 경우에만 사용이 가능하다. 반면, t-검정은 모분산을 모를 때도 사용이 가능하다. 이러한 z-검정의 제약조건(정규성, 모분산 보유)때문에 일반적으로 평균검정에는 t-검정을 사용한다.

    t-검정에는 크게 3가지가 있다. 일표본 t-검정, 독립표본 t-검정, 쌍체표본 t-검정이다. 일표본 t-검정은 기존에 알려져 있는 평균값이 맞는지를 확인하기 위한 검정방법이다. 독립표본 t-검정은 독립된 두 집단간의 평균 차이를 검정한다. 쌍체표본 t-검정은 동일한 항목, 사람, 또는 물건에 대한 측정 값이 두개인 경우 그 차이를 비교하기 위해 사용하는 검정방법이다.

     

    일표본 t-검정

    일표본 t-검정은 단일 집단일 경우, 평균에 대한 가설을 검정하기 위해 사용한다. 일반적으로 모집단의 평균이 특정 값으로 알려져있는 경우, 실제로 모집단의 평균이 특정 값과 같은 지에 대해 가설을 세우고 검정한다. 예를 들어, 한국 여성의 평균 키는 161cm로 알려져 있는데 실제 한국 여성의 평균 키가 161cm가 맞는지 검정하고 싶을 때, A대학교의 평균 토익 점수는 700점으로 알려져 있는데 이 점수가 맞는지 확인할 경우 일표본 t-검정을 사용한다.

    IBM 홈페이지에서 가져 온 샘플데이터를 통해 일표본 t-검정을 시행해 봅시다. 먼저, 데이터를 불러옵니다. #데이터 불러오기

    import pandas as pd data = pd.read_csv('/Users/lee/Desktop/WA_Sales.csv', engine='python', encoding='CP949') data.head() 
    Out[20]:
      Retailer country Order method type Retailer type Product line Product type Product Year Quarter Revenue Quantity Gross margin
    0 United States Fax Outdoors Shop Camping Equipment Cooking Gear TrailChef Deluxe Cook Set 2012 Q1 2012 59628.66 489 0.347548
    1 United States Fax Outdoors Shop Camping Equipment Cooking Gear TrailChef Double Flame 2012 Q1 2012 35950.32 252 0.474274
    2 United States Fax Outdoors Shop Camping Equipment Tents Star Dome 2012 Q1 2012 89940.48 147 0.352772
    3 United States Fax Outdoors Shop Camping Equipment Tents Star Gazer 2 2012 Q1 2012 165883.41 303 0.282938
    4 United States Fax Outdoors Shop Camping Equipment Sleeping Bags Hibernator Lite 2012 Q1 2012 119822.20 1415 0.291450

    head()를 통해 데이터를 확인할 수 있다.

    이 브랜드의 매출(Revenue)은 평균 40,000달러라고 알려져 있다. 최근 이 브랜드 마케팅팀은 오랫동안 구매를 하지 않은 고객에게 방문을 유도하는 푸쉬메시지를 보냈다고 한다. 푸쉬메시지가 브랜드의 매출(Revenue)에 유의미한 영향을 미쳤는지 알고자 한다. 알려진 매출과 비교해 달라졌는지 검정해 보겠습니다. 

    일표본 t-검정을 수행하기 위한 코드는 다음과 같다. result = stats.ttest_1samp(변수, 알려져있는 평균)의 코드를 사용하여 검정하면 된다. 아래 코드에서 a는 검정하려는 Revenue를, popmean에는 40,000을 넣었다.

    #일표본 t-검정 from scipy import stats Revenue = data.Revenue

    #Revenue 변수 생성 result = stats.ttest_1samp(Revenue, 40000) print('t statistic : %.3f \np-value : %.3f' % (result))

    #result변수의 결과값을 소수점 셋째자리까지 표시

    t statistic : 11.929 p-value : 0.000

    일표본 t-검정 결과 t값이 11.929, p-value 0.000로 신뢰수준 99%하에서 "평균 수익은 40000이다."라는 가설을 기각한다. t값이란 이론적 평균(모집단 평균)과 실제평균(표본 평균)의 차이가 허용 가능한 오차 수준 (표준오차)에 비해 몇 배 더 큰지를 나타내는 값을 말한다. 따라서, t값이 크면 클수록 그룹간 차이가 더 크다는 것을 의미한다. 우리는 이 t값을 평균검정의 검정통계량으로 사용한다. 이 브랜드의 매출은 40,000달러가 아닌 것으로 나타났다. 이 브랜드의 수익 변화가 푸쉬메시지 때문인지 다른 요인 때문인지를 확인해야할 필요성이 있을 것이고 수익에 어떤식으로 변화가 일어났는지 확인해야할 필요가 있을 것이다.

     

    독립표본 t-검정

    독립표본 t-검정이란 독립된 두 집단의 평균 차이를 검정하는 기법이다. 반드시 서로 무관한 독립된 두 집단을 사용해야한다. 독립표본 t-검정의 경우, 등분산 여부에 따라 결과값이 달라지기 때문에 독립표본 t-검정을 시행 하기 전에 등분산 검정을 시행한 후 그 결과에 따라 독립표본 t-검정을 시행한다. 등분산 검정이란 두 모집단에서 추출한 표본의 분산이 같은 것을 말한다. 남녀의 평균 키에 차이가 있는지 비교할 때, 10대와 20대의 평균 수면시간 차이를 비교하고자 할 경우, 한국인과 미국인의 평균 쌀 섭취량 비교와 같은 경우에 독립표본 t-검정을 사용한다. 같은 데이터를 가지고 독립표본 t-검정을 시행해 봅시다

    브랜드 마케팅팀에서 (Retailer Type에 따른) Outdoor shop에서의 매출액과 백화점의 매출액에 차이가 있는지를 알아보려한다. 이를 검정해 봅시다. 등분산 검정을 하기위해 statsmodels.stats.levene(sample1, sample2) 사용했. 이 코드는 등분산을 검정하고자 하는 두 집단 변수를 넣어 모집단에 대한 levene의 등분산 검정을 할 수 있는 코드이다. 샘플변수에 아웃도어 샵의 매출액, 백화점의 매출액을 넣었다.

    #독립표본 t-검정 #변수생성 Outdoor = data[data.Retailertype == "Outdoors Shop"] #Outdoor shop에서 물건을 산 고객 Department = data[data.Retailertype == "Department Store"] #Department store에서 물건을 산 고객

    #Levene의 등분산 검정  lresult = stats.levene(Outdoor.Revenue, Department.Revenue) print('LeveneResult(F) : %.3f \np-value : %.3f' % (lresult)) 

    LeveneResult(F) : 404.328 p-value : 0.000

    Levene의 등분산 검정 결과 F값이 404.328로 확인됐다. F값이란 집단간 분산/집단내 분산을 말한다. 따라서 F값이 크면클수록 두 표본의 분산이 동일하지 않다는 뜻이다. F값이 404.328, p-value 0.000으로 신뢰수준 99%하에서 두 표본의 분산이 동일하지않은 것으로 확인되었다. 등분산이 아니기 때문에 equal_var=False로 입력하고 계속 독립표본 t-검정을 진행한다.

    #등분산이 아닌 독립표본 t-검정 실행  result = stats.ttest_ind(Outdoor.Revenue, Department.Revenue, equal_var=False)  print('t statistic : %.3f \np-value : %.3f' % (result)) 

    t statistic : 24.600 p-value : 0.000

    위의 예제에서는 result = stats.ttest_ind(변수1, 변수2, 등분산여부)로 코드를 사용했다. equal_var는 등분산 여부를 표시해서 넣어주는 것인데 TrueFalse중에서 선택해서 표시해주면된다여기서는 아웃도어 샵의 매출액, 백화점의 매출액 변수를 넣어주었고 등분산 검정결과 등분산이 아니였기 때문에 false를 입력했다.

    독립표본 t-검정 결과 t값이 24.6, p-value 0.000으로 신뢰수준 99%하에서 "Retailer Type에 따른 평균 총 매출액엔 차이가 없."라는 가설을 기각한다. 따라서 Retailer type에 따른 평균 매출액엔 차이가 있는 것으로 확인됐다. 브랜드 마케팅팀은 샵의 종류에 따라 평균 총 매출액에 차이가 있기는 것을 확인했다. 샵의 종류에 따라 고객별 특성이 달라 차이가 나는지 혹은 다른 요소에 의해 영향을 받아 차이가 나지는 않을지 여러 변수들을 가지고 고민을 해야할 것으로 보인다.

     

    쌍체표본 t-검정

    쌍체표본 t-검정이란 동일한 항목, 사람 또는 물건에 대한 측정 값이 두개인 경우에 사용하는 분석방법이다. 이때 분석 대상의 표본은 반드시 대응 되어야한다. 만약, 대응되지 않는 표본이라면 결측값이 있다는 뜻이므로 결측값을 처리한 후 분석을 진행해야한다. 또한, 대응표본은 시간상 전후의 개념이 있기 때문에 독립된 두 집단일 필요가 없다. 쌍체표본 t-검정은 다음과 같은 경우에 사용한다.

    7월이 생일인 고객에게 20%할인 쿠폰을 부여한 후 브랜드만족도 조사를 했을 때 쿠폰 부여 이전과의 차이를 검정할 경우, 다이어트 중인 사람에게 채식을 시키고 3개월 뒤에 몸무게 변화를 검정하고자 할 경우 등이 있다. 앞서 사용했던 데이터에 쌍체표본 t-검정을 실습할만한 데이터가 없기 때문에 임의로 데이터를 가져와서 실습해보도록 하겠습니다.

    최근 K백화점에서 직장인을 위한 문화센터를 도입했다K백화점의 마케팅팀은 고객들의 문화센터 도입 전 만족도와 도입 후 만족도에 차이가 있는지를 알아보고자 한다. 고객들의 문화센터 도입 전 만족도와 도입 후 만족도에 차이가 있는지를 검정해보자.

    먼저, before과 after을 사용해 문화센터 도입 전 만족도와 도입 후 만족도 변수를 불러냈다.

    before = data.문화센터도입전만족도  after = data.문화센터도입후만족도 
    #쌍체표본 t-검정 실행 result = stats.ttest_rel(after, before) print('t statistic : %.3f \np-value : %.3f' % (result)) 

    t statistic : 29.560 p-value : 0.000

    result = stats.ttest_rel(변수1, 변수2)를 사용하여 쌍체표본 t-검정을 실행했다. 쌍체표본 t-검정 결과 t값이 29.56, p-value 0.000으로 신뢰수준 99%하에서 "문화센터 도입 전 만족도와 도입 후 만족도에 차이가 없다."라는 가설을 기각할 수 있다. 따라서, 문화센터 도입 전 만족도와 도입 후 만족도에는 차이가 있다. K백화점의 마케팅팀은 문화센터 만족도가 백화점 매출에 긍정적인 영향을 미치지는지에 대해 알아볼 계획이다.

     


     

    이상으로 총 3가지 타입의 t-검정을 살펴보았습니다. 긴 글 읽어주셔서 감사합니다.

    728x90
    반응형
    그리드형