기타/통계, 머신러닝

250630_기초 통계학(모수 추정, 중심극한 정리, 표본오차와 표준편차)

baektree 2025. 6. 30. 20:55

큰일이다. 정말 모르겠다. 

통계... 일단 개념의 체계부터 다시 바로 잡고 필수로 알아야 하는 핵심 위주로만 철저하게 익히자! 할 수 있다!!!

 


요약/나만의 인사이트

  • 베이즈 정리는 관측된 결과를 보고 원인을 추정하는 것이다. 즉 P(A), P(B), P(B|A)가 있을 때 P(A|B)를 구하는 것이다.
  • P(A|B)는 B가 일어났을 때 A가 일어날 확률을 말한다. 사후확률이라고도 한다.
  • 기술통계가 데이터를 해석하고 요약하는 통계기법이였다면 추론 통계는 표본집단을 통해 모집단을 추정하거나 어떤 주장이 맞는지 검정하는 통계이다.
  • 신뢰구간 95%는 100번 중 95번 참값 포함

새롭게 알게 된 것

  • 통계와 머신러닝
    • 통계 : 해석에 초점
      • x, y의 차이
    • 머신러닝 : 예측에 초점
      • 잘 예측하면 good
  • 통계와 머신러닝의 원리는 같음.
  • 베이즈 정리 복습 (사후확률 구하기)
    • 정의
      • 조건부 확률을 사용해서 반대의 경우의 확률을 구하는 로직
      • 관측된 결과(이메일 오픈)를 보고 원인(구매)를 추정하는 것
    • 개념
      • 사전확률 (P(A)) : 아무런 정보가 없을 때, 사건이 발생할 확률
        • 일반적으로 고객의 구매 확률이 10%라면, 구매에 대한 사전확률은 0.01
      • 우도(P(B|A)) : 특정한 가정하에 실제로 관측한 데이터가 나올 가능성
        • 구매자라면 이메일을 열 확률은 80%
      • 사후확률(P(A|B)): 관측한 정보를 반영해서 우리가 알고 싶은 사건의 확률
        • 고객이 이메일을 열었을 때, 그게 실제 구매자일 확률은 얼마나 될까?
    • 수식
      • P(A) : A가 일어날 사전확률
      • P(B) : B가 일어날 전체확률
      • P(B | A) : A가 일어났을 때 B가 일어날 확률 (likehood)
      • P(A | B) : B가 일어났을 때 A가 일어났을 확률 (사후 확률)

 

  • 참고 P(B)를 구하기 위한 전체 확률의 법칙
    • 어떤 사건이 여러 하위 그룹(구매/비구매)에 의해 나눠질 때, 그 사건의 전체 확률은 각 그룹에서 그 사건이 일어날 확률 X 그 그룹에 속할 확률을 모두 더한 값이 된다.

 


 

  • 구하려고 하는 값: 이메일을 오픈하는 사건이 일어날 확률
  • 분류
    • 구매한 사람 - 오픈할 확률
    • 구매하지 않은 사람 - 오픈할 확률
  • 전체 고객의 30%는 구매자, 70%는 비구매자라고 하면 구매자는 80% 확률로 열고, 비구매자는 20%확률로 열었다. 그럼 이메일을 오픈할 전체 확률은 0. 3 * 0.8 + 0.7 * 0.2 이다.
  • 즉 0.3의 구매자는 0.8확률로 열었고 0.7의 비구매자는 0.2열었을 때 이를 각각 곱한 값을 더하면 전체 확률이 된다.

  •  
  • 모수 추정하기(이부분이 잘 이해되지 않음)
    • 모집단의 특성(=모수)
    • 모집단의 평균(μ[뮤]), 모집단의 표준편차(σ[시그마]), 표본의 평균 (𝑥̅)
    • 표본오차 : 표본평균과(𝑥̅) - 모집단평균(μ) 즉 표본평균과 실제 모집단평균의 차이
      • 표본의 크기가 커지수록 표본평균은 모집단 평균에 가까워지고, 표본오차는 작아지는 경향을 갖는다.
      • 모집단이 어떤 분포를 가지고 있든 간에, 표본의 크기 n이 충분히 크다면 표본평균의 분포는 정규분포로 수렴한다.
      • 따라서 표본오차도 결국 정규분포의 성질을 따라간다. = 중심극한 정리
    • 표본을 통해 모집단의 평균 μ를 추정할 순 있으나, 단 하나의 값만으로 오차가 얼마나 클지 알 수 없고, 실제 모수와 정확히 일치할 가능성이 낮음. 따라서 모수가 이정도 범위 안에 있을 것이라고 추정하는 구간이 필요
  • 표본오차와 표준오차
  표준오차
(Standard Erro)
표본오차
(Sampling Erro)
대상 여러번 표본 뽑았을 때의 통계량 변동성 한번 뽑은 표본과 모집단 간의 차이
용도 신뢰구간 계산
가설검정
도시 사람들의 평균 키 170인데 표본조사로 평균이 168이면 2cm가 표본 오차
의미 오차의 흩어짐 정도 실제로 발생한 오차
  • 중심극한정리
    • 모집단이 어떤 분포를 가지고 있든 간에, 표본의 크기 n이 충분히 크다면 표본평균의 분포는 정규본포를 수렴한다.
  • z-분포 기반 신뢰구간
    • z-분포는 평균이 0, 표준편차가 1인 정규분포
    • 모집단의 표준편차 σ를 알고 있을 때, 표본평균이 얼마나 떨어져 있는지 (상대적인 위치) z값으로 계산가능
  • 가설검정의 활용
    • T검정
      • 1개 또는 2개의 집단 간 평균 차이를 비교하는 검정
      • 표본이 정규분포를 따르는 모집단에서 나왔다고 가정 (정규성)
      • 두 집단에 분산이 동일하다고 가정 (등분산성)
      • 단일 표본 검정
        • 학생들의 평균 수면시간이 7시간과 다른가?
      • 이표본 T검정(=독립표본검정)
        • 남학생과 여학생의 평균 키가 다른가?
      • 대응표본T검정
        • 약 복용 전후를 비교 (같은사람)
    • 비모수 검정
      • 표본이 30보다 작을 때
      • 이상치 또는 극단값이 존재할 때
      • 자료가 순서형이고 간격이 일정하지 않을 때 (EX 만족도 점수)
    • 아노바분석
      • 3개 이상의 집단의 평균 차이를 비교 (T검정의 확장 형태)
      • 검정이 반복될 수록 1종오류가 커기지 때문에 3개 집단을 한꺼번에 검정할 수 있는 아노바분석을 한다.
      • 집단 간 평균의 다름을 알 수 있지만 구체적으로 어떤 집단끼리 다른지는 알 수 없으므로 사후검정이 필요하다.
    • 사후검정
      • 아노바 집단들 사이에 평균 차이가 존재한다고 했을 때 구체적으로 어떤 집단끼리 차이가 있는지 확인하기 위한 검정
      • A VS B B VS C C VS A
    • 이산형변수
      • 예: 고객 수, 방문 횟수, 사고 건수 (연속형 변수는 2.XXXX 소숫점 등으로 쭉 이어지는 값)
      • 이항 분호
        • 성공 / 실패 두가지 결과만 있고, 성공 확률은 일정함.
      • 포아송 분포
        • 한시간 동안 들어오는 전화 수
    • 범주형변수
      • 범주형 변수
        • 명목형 변수:성별, 지역, 혈액형
        • 순서형 변수: 만족도(상/중/하), 학점(A,B,C)
      • 검정
        • 이항검정
          • 하나의 이진 범주형 변수에서 특정 비율이 기준과 다른지 검정할 때 사용
        • Z검정
          • 남성과 여성의 뉴스레터 오픈률이 다른가?
        • 카이제곱 적합도 검정
          • 고객이 A/B/C 브랜드를 고른 비율이 1:1:1일까?
        • 카이제곱 독립성 검정
          • 성별과 구매여부와 관련이 있을까? (독립인가, 관계가 있는가?)
    • 실습
      • 박스플롯에 이상치가 많다 → 이상치가 아닐 수 있다. 어떻게 처리하면 좋을지 생각해야 한다.
      • 평균을 알고 있다면 전체중에 하나는 고정이 된다. N-1의 자유도
  • 내가 가지고 있는 데이터와 분석 목적에 따라 적절한 가설 검정 방법이 다르다.

 

특히 어려웠던 것

  • 파이썬 알고리즘 최대공약수, 최소공배수
    • 일단 최대공약수, 최소공배수 복습해보자.
      • 최대공약수 : 두 수의 공통된 약수 중 가장 큰 수
      • 최소공배수 : 두 수의 공통된 배수 중 가장 작은 수
        • 예시
        <aside> 💡3의 배수: : 3, 6, 12… 12의 배수: : 12, 24, 36… 최소공배수 : 12
        큰 수인 12부터 곱한 36까지의 숫자 순회 (배수니까 12보다 클 테니)
      • </aside>
      • 3의 약수 : 1, 3 12의 약수 : 1, 2, 3, 4, 6, 12 최대공약수 : 3 작은 수인 3부터 1까지 -1씩 하며 순회 (약수니까 3보다 더 작을테니)
    • 문제
      • 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
    • 풀이
    def solution(n, m):
      answer = [] #리턴할 빈리스트 만들어놓기
    	
    #최대공약수 구하기
      for i in range(min(n, m), 0, -1): #둘중 작은 값에서 -1씩 1까지 순회
        if n % i == 0 and m % i == 0:
          answer.append(i)
          break #가장 큰 값을 출력하면 그만하기
    	
    #최소공배수 구하기
      for i in range(max(n, m), n*m+1): #둘 중 큰 값에서 n*m까지 순회, n*m은 항상 n과 m의 배수이고, 공배수중 가장 큰 수라 할 수 있으니
        if i % n == 0 and i % m == 0:
          answer.append(i)
          break #가장 작은 값 출력하면 그만하기
      
      return answer
    
    solution(2, 5)
    
  • sql 카티전 곱 (행*행)
    • 문제
      • id이전 날짜(어제)보다 기온이 더 높은 모든 날짜를 찾는 솔루션을 작성하세요 .결과 표를 원하는 순서 대로 반환합니다 .결과 형식은 다음 예와 같습니다.
    • 풀이
    #오늘온도 t, 전날온도 y
    #오늘온도 t - 전날온도 y 인 경우만 
    SELECT t.id
    FROM Weather t, Weather y
    WHERE datediff(t.recordDate, y.recordDate) = 1
    AND t.temperature > y.temperature;
    
    # FROM Weather t, Weather y : 모든 행을 서로 짝지워서 보여줌. 3행이 있다면 3*3해서 총 9행이 됨. 이것을 카티전 곱이라고 함.
    # 그다음에 오늘, 어제 데이터로 짝지어진 행만 필터링
    # 그리고 그 행에서 오늘 온도가 높은 것만 추가 필터링 하면 끝
    
    • 핵심 개념
      • 카티전곱: 두 테이블의 가능한 모든 조합의 데이터가 조회됨. 가령 A테이블 2행, B테이블 3행이라면 2*3행의 데이터가 조회됨. FROM A, B