기타/통계, 머신러닝

250714_통계복습(t분포, 이항분포, t검정, 비모수검정)

baektree 2025. 7. 14. 20:45

요약/나만의 인사이트

  • 데이터는 크게 수치형(양적), 범주형으로 나뉠 수 있다.
  • 수치형 데이터는 연속형(ex 나이, 키 - 소수점 자리까지 숫자가쭉이어짐), 이산형(ex 시험 응시자 수, 판매자 수, 페이지 뷰 수 - 뚝뚝 끊어지는 수)데이터로 나눌 수 있다.
  • 범주형 데이터는 명목형(ex 성별), 순서형(ex 사이즈, 등급)데이터로 나뉠 수 있다.
  • t분포는 표본수가 작을 때 평균 비교 시 사용되는 분포이다.
  • 이항분포는 비율 비교 시 사용된다. (ex 생존비율 vs 사망비율)
  • t검정은 두 그룹간 평균비교할 시 사용된다. (ex 생존자 평균나이 vs 사망자 평균나이)
  • t검정시 정규성, 등분산성을 만족해야한다.
  • 정규성 만족하나 이분산성(분산이 다를) 경우 Welch’s t-test로 검정한다.
  • 정규성을 불만족하나 충분한 표본의 크기일 경우 역시 Welch’s t-test를 사용한다.
  • 정규성 불만족하고 표본도 작을 경우 Whitney test를 한다.
  • 비모수 검정은 데이터 분포에 대한 가정 없이 순위 기반으로 그룹 차이를 평가하는 검정이다.

새롭게 알게 된 것

t분포 (표본 수가 작을 때 평균 비교에서 사용되는 확률 분포)
  • 예시
    • 생존자의 평균나이에 대한 신뢰구간은 어떻게 될까?
    • 표본(데이터로 수집된 생존자들의 평균나이)
    • ⇒추정⇒ 모집단(타이타닉 생존자 평균나이)
  •  정의
    • 표본수가 작으면 표본 평균이 더 불안정하게 흔들리는데 이를 반영한 꼬리가 두꺼운 t분포를 활용하게 된다. (좀 더 보수적인 추정)
    • 정규분포처럼 생겼지만, 꼬리가 두꺼운 분포
    • 다음 아래 2가지 조건을 충족할 때 사용하는 분포
      • 표본수가 작을 때(보통 표본수가 30개 미만일 때)
      • 모집단의 표준편차를 모를 때 사용(대부분 실제 상황)
    • t값 = 표본 평균이 모집단 평균에서 얼마나 떨어져 있는지, 표준오차를 기준으로 나타내는 비율
  • t분포 기반 신뢰구간 계산
    • t값은 t분포표에서 찾는데, 신뢰수준과 자유도에 따라 달라진다.
    • 표본이 작을수록 t값이 커져서 신뢰구간이 넓어진다. (불확실성이 더 커진다.)
    • 신뢰구간=표본평균±t값×표준오차
  • 자유도란?
    • 통계를 계산할 때 자유롭게 변할 수 있는 값의 수
    • 보통 n개의 데이터가 있으면 평균은 고정되므로 자유도를 n-1개의 값으로 정한다. 마지막 하나는 자동으로 결정된다.
  • 예시문제
    • 어떤 샘플 데이터 ages = [23, 25, 29, 22, 30]에 대해, 95% 신뢰수준에서 평균 나이의 신뢰구간을 t분포를 사용해 계산하기
    '''
    1. 표본크기 n = 5
    2. 자유도 4 = 5 -1 
    3. 표본평균 (23+25+29+22+30) / 5 = 25.8
    4. 표본 표준편차 s = 3.03
    5. 표준 오차 3. 03 / 루트 5  => 1.35
    6. 95% 신뢰수준에서 자유도 4인 t 값 => 2.776
    7. 신뢰구간
    25.8 +- 2.776 * 1.35 = (22.05, 29.55)
    
    즉 표본을 기반으로 볼 때, 모집단의 평균 나이는 95%확률로 22.05세 ~ 29.55세 사이에 있다.
    '''
    
t검정 (두 평균 간 차이가 통계적으로 유의미한지 검정)
  • t검정은 t분포를 바탕으로 통계적으로 두 집단을 비교하는 방법
  • p-value(귀무가설이 참일 때 발생할 확률) 를 구해 충분히 작으면 보이는 숫자가 우연이 아니라고 판단
  • 즉 귀무가설 기각, 대립가설 채택
  • 예시 생존자와 사망자의 나이 평균에 차이가 있는가?

 

이항분포 신뢰구간 (결과 2가지 성공/실패)
  • 예시
    • 타이타익 평균 생존율에 대한 신뢰구간
    • 생존/죽음 ⇒ 이진형 데이터
  • 비율의 신뢰구간을 구할 땐 이항분포 기반 공식(Wilson 방식)을 쓴다.
  • 타이타닉 탑승자의 생존률은 38%였는데, 진짜 생존률(모집단 비율)은 95% 신뢰수준에서 35.1% ~ 40.9%”일 수 있다.
  • 죽음/생존률 ⇒ 이항비율
  • 코드해석
    •  
from statsmodels.stats.proportion import proportion_confint : proportion_confint 은 이항비율의 신뢰구간을 계산해주는 함수
ci_low, ci_high = proportion_confint(count=success, nobs=n, alpha=0.05, method='wilson')
count = success 성공(생존)한 횟수
nobs(number of observations) = n 탑승자 수
alpha = 0. 05 신뢰수준 95% 로 5%만큼의 오차를 허용하겠다는 뜻
method = ‘wilson’ 윌슨방식

 

t분포와 이항분포 비교
  • 평균을 추정하거나 비교 → t분포
  • 비율을 추정하거나 비교 → 이항분포 기반 검정
      t분포 이항분포
    데이터 유형 연속형 데이터
    (ex 나이)
    이진형 데이터
    (ex 생존/죽음)
    추정 평균
    (ex 생존자의 평균 나이)
    비율

    (ex 생존률)
    검정 t검정 (표본/독립/대응) 비율검정(z검정/카이제곱검정)
    사용 예시 평균 나이의 신뢰구간 생존률의 신뢰구간
발표스킬
      • 회사와 관련된 발표를 준비할 시 → 홈페이지 방문, 색상, 구조, 템플릿 등 착안하여 활용
      • 캔바/미리캔버스 보단 파워포인트를 활용하면서 실력을 향상시킬 것
      • 폰트 → 폰트 관련해서 꿀팁으로 해당 기업 폰트 궁금하시면 크롬 확장 프로그램 ->whatFont 설치하시면 웬만하면 폰트 알려줍니다!
      • 시인성 - 얼마나 잘 알아볼 수 있는가? 청중에겐 헤드카피, 서브카피까지만 보임
머신모델 개인과제 해설 세션

 

선형회귀

  • 배열을 데이터 프레임으로 바꿔야 한다.
  • 왜냐하면 sklearn은 df로 종속되어 있기 때문이다.
  • X,y의 데이터 개수가 같아야지 df로 불러와진다.접근방법
더보기

접근순서 정리

1) df로 데이터 확인

2) seaborn으로 시각화 - seaborn을 부르려면matplotlib을 같이 불러야

3) 선형적 관계가 있는지 확인

4) 그 다음 모델 학습

관련 개념

  • 선형회귀는 방정식이다.
  • 선형회귀는 숫자를 예측하는 것이다.
  • RMSE가 3이다. = 예측값과 실제값이 평균적으로 3차이 난다.
  • 모델이 회귀계수(Coefficient), 절편(Intercept)을 구해준다.

분류

  • 분류 문제는 회귀와 대부분 같고 y가 연속형에서 카테고리형으로 바뀐다는 점만 다름
  • 분류로 문제를 시작하는 게 쉬움 (맞냐, 아니냐를 맞추는게 숫자를 맞추는게 더 쉬우니까)
  • 랜덤 포레스트라는 성능좋은 모델
  • 분류는 얼만큼 맞췄냐는 확률로 성능을 평가 (참고로 회귀는 예측값과 실제값의 차이는 얼마냐?)
  • 데이터 불균형 f1 스코어를 봐야함 (재현율과 정밀도 같이 봄)
  • X변수에 뻔한 변수를 넣기 보단 예상치 못한 변수를 넣어야 함. (당연한걸 넣지말자)
  • random_state = 42 랜덤 포레스트 → 수많은 트리 생성 → 매번 다른 트리 → 다수결 값이 달라짐 → 실행할 때 마다 랜덤 고정 → 아무리 실행시켜도 같은 값
  • y를 예측할 때 어떤 값이 더 중요한가? (변수 중요도) feature_importance_ ⇒ 어떤 의사결정을 할 수 있는가? 중요도 높은 변수를 가지고 분석을 확장
  • 학습한 데이터, 평가한 데이터가 같으면 일반화하는데 어려움이 있음.
  • train, test 분리할 때 과적합인지 아닌지 알수 있다.
  • random_state = 42 랜덤하게 뽑히는건 뽑히는건데 랜덤형태가 고정적, seed 고정
  • max_depth : 나뭇가지가 깊어지면 과적합이슈가 생길수 있으니 조정할 수 있다. 단 몇개가 최적화인지 모르니 조정할 수 있다.
  • parameter : 너 여기서 멈춰
  • 과적합 해결하기 cross validation _k-fold 이거 한번 더 보기
  • train, test 뽑을 때 랜던하게 뽑히기 때문에 random_state=42로 고정시켜야함
  • acc_train, acc_test 차이가 크면 과적합되어있다 → 수선이 필요하다고 의사결정 → 뻥튀기 등등 과적합을 줄이는 방향으로 해줘야 함. → 차이가 비즈니스에 얼마나 손해를 입히느냐 등 효과를 검토해서 적당히 이 정도 성능만 나와도 괜찮다고 넘어감 (흑백논리로 되는 것은 아님) → 10% 이내 차이가 이상적 (튜터님 개인 의견)

문제

  • 80달러 이상이면 1(충성고객) 아니면0(일반고객)
  • X변수 숫자로 되어있으니 인코딩 할 필요 없음
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, f1_score

 

논문찾기 스킬
  • 데이터를 찾을 수 있는 곳
    • 공공 데이터 포털
    • 서울 열린데이터 광장
    • 국가 통계 포털
    • 캐글
      • discussion, notebook을 통해 데이터 확장할 수 있음.
      • 유명한 데이터셋 (ex 타이타닉, 주택가격 등등 활용)
  • 논문(도메인 지식 취하기 위함) ⭐⭐⭐
    • 어떻게 접근할껀가?
      • 필요한 논문선택, 속독
    • 논문의 구조
      • introduction_서론
      • method_방법
      • results_결과
      • discussion_함의
    • 논문 읽는 전략
      1. 제목/초록 읽기
      2. 서론 확인(연구 배경, 목적 -프로젝트 시 논문적 서론을 발췌하면 좋다.)
      3. 결과 및 결론 : 결과가 기대하는 것과 맞는지, 눈문의 함의, 기여
      4. 방법론 : 신뢰할만한 논문이면 방법론을 자세히 읽음. 사용한 데이터셋, 실험방법, 통계기법 등
    • 어떤 논문이 좋은 논문인가?
      • 신뢰할 만한 출처 (KCI, SCOPUS, SCI, SCIE, SSCI 등급 저널)
      • 최근 연구 (5년 이내)
      • 연구방법의 타당성
      • 연관성 있는지?
    • 논문 읽기 (데이터분석할 때 논문 10개정도 보기…?!!)
      • 도메인으로 활용할꺼야? → 서론 중반부~ (ex 지역적 차이를 정량적으로 평가, 맞춤형 솔루션 제공, 인구감소 문제, 지역 경제 활성화)
      • 메서드 활용할꺼야? → method만 보기
    • 공모전
      • 데이콘 : 국내 캐글
      • ai 모델 최적화 : ai factory
      • 나는 8월까지 과정 끝내고 캐글, 데이콘의 입문용 대회 또는 기업이 주최하는 간단한 분석 대회를 하기
      • 역할분장: 모델링/모델링/성능최적화/기획
      • 꿀팁
        • 모델의 성능을 위한 데이터 분석을 경계하기
        • 분석 x 문제 해결 o 을 목적으로 데이터 분석하기
        • 현실적용가능성, 정책적 행정 이용가능성
        • 모델 , 분석 ——> 설명 —→ 의사결정
        • EDA가 제일 중요하다!!!!!! ⭐

특히 어려웠던 것

통계는 왜 봐도 봐도 헷갈리지..!?

 

다음에 적용해 볼 것

t분포, 이항분포 관련 개념 다시 보기