데이터 사이언스 스터디/통계

데이터분석을 위한 기초 통계2

data_start_ 2024. 12. 11. 11:45

멋쟁이사자처럼 AI스쿨 기초 통계 강의 내용을 정리한 포스팅입니다.

단순 무작위 표집(simple random sampling) : 모든 사례를 동일 확률로 추출

계통 표집 (systematic sampling)

-첫 번째 요소는 무작위로 선정한 후, 목록의 매번 k번째 요소를 표본으로 선정

-ex) 선거 출구 조사시, 나오는 사람 7번쨰마다 질문

-ex) DB에서 쌓이는 거에서 k번째마다 추출

층화 표집 (stratified random sampling)

-모집단을 이루는 각 계층별로 무작위 추출

-ex) 여론조사 : 지역별, 연령별, 성별로 나누어 추출

-남,녀의 연령별로만 하면 특정 집단에서 조사가 안 될수도 있으니... 비율이 채워질때까지 조사를 계속함

집락 표집 (cluster random sampling)

-모집단을 집락으로 나눈 후, 집락 중 일부를 무작위로 선택

-ex) 전국 고등학교에 고등학생 다 조사할 수 없으니, 랜덤하게

-ex) 특정 서버에 들어온 고객만 조사

표집 분포

-모집단이 같아도, 통계량이 표본에 따라 달라짐

-표본의 분포 vs. 표집 분포(통계량의 분포)

: 1이 3번, 2가 1번, 3이 2번 (표본의 분포) -실제로 관찰

: 표본을 계속 추출했을 때, 표본 평균 내봤는데 4.4(40%), 5.6(50%), 3.8(70%) 등으로 바뀌는 것 (표집 분포)-이론적 가능성

Q.평균을 왜 자꾸 내지?

평균말고 다른 거 (중간값 등)는 어느 정도 다르게 나올지 알 수가 없어서..

Q.데이터를 많이 모아야 하는 이유

-데이터가 많을수록 표준 오차가 작아짐

-표본의 통계량이 모수에 더 가깝게 나옴

-표준오차가 루트엔 분의 1로 줄어듦... (데이터가 많을수록 오차가 줄어드는 정도가 점점 줄어듦)

!.이런 관점은 버려야한다.

-척 보면 안다. -> 못 본 측면이 있지 않을까?

-관상은 과학이다. -> 얼굴이 계속 변하는데

-사람은 안 바뀐다. -> 보지 못한 부분이 있지 않을까?

---> 우리가 본 건 "일부분"이다.

추정

-통계량(표본)으로부터 모수를 추측하는 절차

-통계량에 따라서 추정이 달라짐...ㅠㅠ 어떻게 하면 잘 추정할 수 있을까?

점 추정 : 하나의 수치 (숫자를 하나 얘기)

구간 추정 : 어디부터 어디까지 구간으로

신뢰구간 (confidence interval) : 믿을 수 있다로 해석하면 안됨...

-대표적인 구간 추정 방법

-모수가 있을 법한 범위로 추정

-신뢰구간 = 통계량 + 오차범위, 통계량 - 오차범위

(보통 평균의 신뢰구간을 많이 구함. 이론적으로 간단히 구할 수 있어서...)

-95%신뢰구간 : 5%의 극단적인 경우는 배제한다.

ex)중고차 시장 300대 통계량(가격 평균)이 860만원이다. 10,000대 팔면 860억 될 거 같다.

아니 300대만 보고 어떻게 알지? 900만원이 될 수도 1,000만원이 될 수도 있지 않나ㅡㅡ?

그럴 때, 오차범위까지 감안해서 800만원에서 900만원 사이에 평균 가격이 형성되는 것으로 보인다.

라고 추정하는 것

신뢰수준

-내가 어느정도의 케이스를 반영할 것인가

-신뢰수준이 낮다 -> 적은 표본 -> 더 좁은 오차범위 -> 정보가 많음

ex) 수명 예측 (신뢰수준을 높이면 더 많은 다양한 가능성을 보고, 신뢰수준 낮추면 확실한 가능성 위주로)

60살까지 살 것?

90살까지 살 것?

어떤 약이 좋다고 하는데, 나쁠 수도 있어. 데이터가 부족함.

목숨이 경각에 달렸을 때는 확률이 낮아도 먹어보는 선택을

건강한 상태에서 굳이 먹을 필요 없을 때는 안 먹는 선택을.

!.신뢰수준이 100%이면 안되는 이유

-> 결정을 할 수가 없음...

#- 주행거리(mileage)의 평균의 95% 신뢰구간
pg.ttest(df.mileage, 0, confidence=.95)

#- 주행거리(mileage)의 평균의 99% 신뢰구간
pg.ttest(df.mileage, 0, confidence=.99)

#- model == 'Avante'인 경우의 가격의 평균의 95% 신뢰구간
pg.ttest(df[df.model == 'Avante'].price, 0, confidence=.95)

#- model == 'K3'인 경우의 가격의 평균의 95% 신뢰구간
pg.ttest(df[df.model == 'K3'].price, 0, confidence=.95)

->데이터가 적으면 신뢰구간이 더 넓게 측정.

부트스트래핑 (신발끈)

-서부시대 카우보이... 울타리 넘을 때 신발끈 묶고 잡고 뭐 하면 넘어간다.

-자기 혼자 북치고 장구치면서 구해진다.

-컴퓨터공학에서 booting (컴퓨터 켜기) : 프로그램 키려면 그 프로그램이 필요하고,,, 자기 스스로 키는 프로그램

-중간값, 최빈값 등의 통계량은 표집분포의 형태를 간단히 알기가 어려움

-부트스트래핑이라는 시뮬레이션 기법을 사용해서 신뢰구간을 추정함

-표본이랑 모집단이랑 비슷하다고 퉁치고, 표본에서 표본을 다시 뽑는다. 많이 뽑아보면서 오차를 구함

scipy.stats.bootstrap([df.price], np.mean)

#가격의 평균의 95% 신뢰구간
#통계 이론 : 814.1, 893.22
#부트스트랩 (시뮬레이션 돌릴때마다 값이 조금씩 다름) : 815.1, 892.5

신뢰구간에 영향을 주는 요소

-신뢰구간이 좁을수록 예측된 모수의 범위가 좁으므로 유용하다

ex) 배달 언제오나요? 5분에서 2시간 정도 걸린다 --> 의사결정에 도움이 안됨...

-표본의 변산성 낮추기

(실험과 측정을 정확히 해서 변산성을 낮춤

ex: 날씨 측정할 때, 기압을 정확히 측정한다던지)

-데이터에 내재한 변산성은 없앨 수 없음

ex) 배달 시간을 임의로 바꿀 수는 없음...

-표본의 크기를 키우기 (데이터를 많이 모으기 / 전수조사가 아니라 생기는 문제를 해결 / 가장 쉬운 방법이나 시간과 비용이 증가함)

여론조사의 표본오차(모집단과 표본의 차이) -> 오차범위(표본오차의 범위)

조사 대상이 1000명일 때,

오차범위 3.1%포인트

A당 지지율 40% (연령, 성, 지역별로 나눴을 때 한정되는 인원이 얼마 안되서... 통계량에 따라 오차범위 차이가 발생함)

Q. 신제품 개발을 위해 여론조사를 하려고 함.

대략적인 여론만 알면되기 때문에, 오차 범위가 +-10%p 정도만 되면 괜찮을 듯

여론조사를 몇 명에게 하면 될까?

인원수= (98 / 오차범위)**2

"통계적" 가설검정 (statistical hypothesis testing)

  • 제일 어려움 ㅠㅠㅠㅠ 이름이 이상함

-일반적/과학적 가설검정은 "실증주의" (주장이 있으면 지지하는 근거를 가져와서 입증해라)

-통계적 가설검정 "반증주의" (미운놈을 찾아서 그거에 반대되는 근거를 찾아서 박살내는 방법...?)

-통계적 가설검정은 많은 비판이 있으나, 오랫동안 쓰여와서 여전히 많이 쓰임.

  • 로날드피셔(농학자)의 홍차 사건 일화

: 브리스톨과 다툼 (홍차에 우유를 타야함) 피셔는 우유에 홍차를 타나, 홍차에 우유를 타나 구분 못한다.

: 브리스톨의 약혼남이 실험하자고 제의

: 홍차에 우유탄 거 4잔, 우유에 홍차탄 거 4잔

: 몇 잔까지 구분을 해야 정확한 건가? --> 피셔의 정확 검정 방법론을 만듦

통계적 가설 검정의 절차

  1. 귀무가설(없애버릴 가설)을 수립한다
  2. 유의수준을 결정
  3. p 값을 계산
  4. p 값과 유의수준을 비교
  • p > 유의수준
    : 결론을 유보 (귀무가설이 맞을 가능성도 있지만, 데이터를 더 모아서 다시 가설 검정)

: 말은 되지만 다른 가능성도 있으므로 유보

: 귀무가설을 채택하지는 않음..!

  • p < 유의수준
    : 귀무가설을 기각한다. (말도 안되니까 부숴버림ㅋㅋ)

: 통계적으로 유의하다라고 표현

통계적 유의함

현실적으로 유의미한 것은 아님

ex) 신약 개발하고, 약의 효과가 없다는 귀무가설을 보냈음. 효과가 있긴 있는데,,, 1억짜리 약인데 살 10g빠진거면

판매할 만큼 효과가 있냐는 것은 얘기할 수 없음

A/B테스트

-두 집단으로 나눠서 비교 (A집단, B집단)

-과학 분야에서 무작위 대조군 시험

-이중맹검 / 삼중맹검

ex) 빈곤문제 "가난한 사람들이 더 합리적으로 판단한다"

독립표본 t검정

귀무가설 : 차이가 없다. (차이=0)

single = hr[hr.marriage == 'single'].overtime
married = hr[hr.marriage == 'married'].overtime
pg.ttest(single, married)

p= 0.6183

p < 0.05

-0.72 -0.6 , -0.5, -0.4, 0, ... ,1.1 , 1.21 다 살아있으니까 귀무가설을 채택하지 않는다. (결론을 유보한다)

귀무가설이 채택될 일은 없음...

데이터가 무한히 많아서 다 재껴서, 0 혼자 살아 남아야함. (가능성이 없는 일이니까)

# 귀무가설: Avante와 K3의 평균이 같다(차이 없음)
# 기각하면 -> 차이가 있기는 있다
Avante = df[df.model == 'Avante'].price
K3 =  df[df.model == 'K3'].price
pg.ttest(Avante, K3)

0.028187 < 0.05 # p < 유의수준 -> 귀무가설 기각 -> 평균에는 차이가 있다

평균 차이의 신뢰구간 -152.11 ~ -8.69

모집단에서는 Avante 평균이 많으면 152만원, 못해도 8만원은 싸다

하여간 Avante가 K3보다 싸다