[AI]기초통계

티나(Tina)·2022년 10월 9일

멋사AI

목록 보기
13/41

데이터 분석가는 의사결정권자에게 정보를 주는 사람이다.

[QnA]
데이터 분석가가 통계를 많이 알면 좋은가?
너무 복잡한 통계를 얘기하고자 하면 의사결정권자가 이해를 못할 수 있다.
통계를 생각보다 많이 공부하지 않아도 된다.
의사결정권자에게 많이 설명 하지 않아도 되서....
(정말..??그래도 현실적인 얘기인듯. )
금융은 통계분석의 깊이는 어느정도 필요할까?
통계라는 거는 데이터를 가지고 하는거다.
통계분석의 깊이는 데이터의 양과 질에 의해서 결정 된다.
테이터가 없으면 신비로운 통계 분석을 한다고 해서 뭔가 결과가 나오지 않는다.
주식투자라고 한다면, 1년이 250일이면
1일 단위 데이터는 1년에 250건이고 10년에 2500건이다. 절대 많지 않다.
초단위 거래 는 1시간에 3600건
초단위 거래자들은 장기 흐름은 상관이 없다.
근데 1단위 거래를 하는 사람들은 초단위 거래 통계는 참고가 되지 않는다.
초단위 거래자들은 고도의 기법을 사용한다. 딥러닝을 사용하기도 한다.
국민연금의 경우 연단위로 거래를 하는데, 초단위 거래자들과는 아예 다른 방법을 쓴다.
서비스 기업은 금융보다 더 어렵다. 서비스가 계속 바뀌고 데이터 축적이라는 측면에서는 불리한 측면이 있다.


통계분석을 통해서 할 수 있는 일들


1. 대상의 특성을 수치로 표현하기.

  • 대상의 관찰 할 수 있는 특성은 무엇이든 수치로 표현 할 수 있음
  • 양적인 것은 물론 직적인 특성도 수치화가 가능
  • 그 수치가 객관적이지 않아도 된다.
    ( 고객만족도 5점.. 이건 정말 주관적임 )
  • 수치가 대상을 파악하기에 좋은 성질을 가지고 있는가?
    (같은 고객이 같은 서비스를 사용하는데 1점 줬다가 5점 줬다가 한다면 대상을 파악하기에는 좋지 않은데
    실제로 고객의 만족도가 심하게 변하는 걸 수 있고, 고객의 실제 만족도는 안변하는데 측정방식이나 질문방식으로 인해 점수가 변한다며 측정방식에 문제가 있을 수 있다.)
  • 수치들을 잘 요약하여 효과적으로 정보를 전달하는것.

2. 부분을 통해 전체를 추측하기

  • 대부분의 경우 우리는 대상의 일부만을 관찰할 수 있다.
    - 여론조사 : 전국민 중 소수를 대상으로 조사
    (1000명이나 2000명 정도의 의견만 보는데 5000만명의 의견인게 맞냐??
    이건 추론을 할 수 있으니까 의미가 있다. )
    - 면접에서 질문을 한다면, 한 개인의 인생에서 한 순간만을 조사한다.
    (내가 관찰한건 30분인데 이 사람을 일반화 할수 있겠는가. )
  • 현실에서는 우연과 불확실성이 존재한다.
    - 성실한 사람도 면접에 늦을 수 있다.
  • 부분을 통해 전체를 합리적으로 추측하는 것이 중요하다.
    - 우연화 불확실성은 제거 할 수 없기 때문에 합리적으로 추축해야 한다.
    - 추론 과정이 합리적이어야 한다.
    ( 여론조사를 했는데 1000명이 해당 법에 다 반대를 했다. 그러면 그 법안에 대다수가 반대했다는 추론을 해야 한다. 운이 없어서 찬성하는 사람을 못만난 걸 수 있지만 그건 어쩔수가 없음.)

3. 비교하기

  • 여러 개의 대상을 비교해야 하는 경우가 많이 있음
    - 임상시험
    - A/B 테스트
    (HIPPO : 월급을 많이 받는 사람의 선택. 그러나 그사람이 항상 맞는 결정을 할 수는 없다.)
    A랑 B 중에 B 가 인기가 많을 때는 360 일이고 A 가 인기가 많은거는 5일인데 우리가 테스트 할 때가 그 5일에 해당하던가...

4. 예측하기

  • 어떤 특성은 다른 특성보다 쉽게 알 수 있다.
    - 주택의 입지, 교통, 환경 등은 쉽게 파악 가능하다.
    - 가격은 거래가 성사되어야 파악할 수 있다.
    (은행에서 주택 가격을 파악해서 대출금이 나오는데, 단독주책은 가치 판단이 어려워서 판단을 잘 안해준다. 거의 땅값밖에 안쳐준다. 유명한 건축가가 지은 단 하나의 집이면 비교 대상이 없어서 판단이 어렵다. )

  • 미래에 대한 예측은 아니다. 미래에 대한 데이터가 없기 때문이다. 우리의 데이터는 과거와 현재 뿐이기 때문이다.
    현재 시점에서의 가격 예측을 말하는거지, 내년 주택시장의 가격 예측을 말하는 것이 아니다.

5. 영향력을 미치는 변수 찾기

  • 대상의 한가지 특성은 여러 가지 특성으로부터 영향을 받음
    (고객만족도는 가격, 친절한 응대, 서비스의 질, 경쟁 서비스의 특성 등에 대해 달라 질 수 있다.
    친절한 응대가 고객만족도에 영향이 크면, 더 친절하게 하려면 되고, 친절함 팩터가 상관이 없으면 그 시간에 다른걸 올리려고 신경쓰면 된다. )

EX) 모기업 통신사의 인바운드콜과 아웃바운드 콜이 있다.
아웃바운드 실적을 높이고 싶은게 고민이었다.
상담사의 어떤 요인이 실적에 영향을 주는가를 분석했다.
교육, 친절도, 적극도 등등.
그동안 당연히 적극적이고 경력이 많으면 실적이 높다고 생각해서 그것들을 관리하기 위해 복잡한 시스템을 유지하는 중이었다.
데이터 분석 결과는 그들이 측정하던 팩터랑 실적은 아무 상관이 없는 결과가 있었다.
실적과 관련이 있는건 통화량 뿐이었다. 통화량이 많으면 실적이 올라갔다.
관리자들이 이 통계 결과를 굉장히 싫어했다....
하지만 어떤거에 투자를 해야 하는지는 알 수 있다.

6. 지수 만들기

  • 대상의 특성 중에는 직접적으로 관찰하기 어려운 것이 있다.
    - 고객 만족도(어지간하면 잘 주니까), 사랑, 유전자 등등
  • 관찰은 어렵지만 이런 특성은 관찰 가능한 다른 특성들과 연관을 맺고 있다.
    - 고객 만족도가 높으면 재구매를 한다거나, 추천 등의 행동을 할 수 있다.
  • 관찰 가능한 특성들을 바탕으로 관찰하기 어려운 특성을 지표화 할 수 있다.
  • 대상 자체가 실재하지 않는다 해도, 이 지표를 통해 의사 결정이 쉬워짐
    - 고객 만족도가 존재하지 않아도, 그 지표가 매출에 선행한다면 고객 만족도 향상을 통해 매출을 높일 수 있다.
    EX) 사랑이라는 것이 존재 하지 않더라도, 이를 지표할 수 있고 그 지표가 예측성을 가진다면 이를 통해서 의사결정은 할 수 있다. 내가 위험할 때 나와 있어줄 가능성이 높은 지수로 나왔다면 결혼을 한다거나 하는 식으로 말이다.
    존재 하는지 안하는지 생각하지 않고, 지표를 통해서 매출에 도움이 되면 행한다. (도구주의)

7. 비슷한 것끼리 모으기

  • 비슷한 것을 모아서 하나의 집단으로 인식하면 편리한 경우가 있다.
    - 비슷한 고객들에게 같은 프로모션을 추천 할 수 있다.
    하지만 이또한 애매하다. 홍대라는 상관을 본다면, 합정 상수 연남 등을 다 홍대라고 부르고 있다.
    근데 지리적으로는 홍대랑 합정도 한정거장이고, 홍대랑 신촌도 한정거장인데 홍대랑 합정만 같은 상권으로 본다.

통계 분석의 예시

  • 주거지 추천
    - 주거지별 특징을 지수화
    - 라이프스타일에 맞는 주거지를 추천

  • 당근마켓 매물 분석
    - 스팸의 시기별 가격 변화
    - 매물 제목과 조회수릐 관계 분석

이정도를 할 수 있게끔 통계를 하면 된다..!!


통계는 왜 어려운가?

  • 통계학은 매우 늦게 형성된 학문
    - 19세기 후반에서 20세기 초반에 시작
    - 대학에 통계학과가 설립된 것은 1911년 (영국)
  • 기존의 인류의 자연스러운 사고방식과는 동떨어져 있음
    - 통계를 이해할 때 상식적으로 이해하려고 하면 안된다. 새로운 세계관으로 수용해야 한다.
    - 이해하려하고 하기 보다는 그냥 쟤는 저렇구나. 하면 된다.
  • 통계학은 특성상 많은 계산이 필요한다. 현대 컴퓨터가 통계학 초기에 없었다. 그래서 이해하기 쉬운 논리가 아니라 손으로 쉽게 계산할 수 있는 형태의 방법론을 선택하고 이게 발전했다.

이상한 통계한 용어

  • 번역이 이상한 경우 : 모수(母數)
    - 엄마와도 관련이 없고 분모와도 관련이 없다.
    - 영어에서는 Parameter 이다.
  • 역사적인 과정을 거쳐 의미가 변한 경우 : 회귀분석
    - 돌아가는 것과는 직접적인 관련이 없음
  • 만든 사람들의 사고방식이 좀 이상한 경우 : 통계적 가설 검정
    - 과학에서는 가설을 실험으로 입증하는 실증주의가 있는데(입증하겠다.), 통계에서는 반증주의가 있었다.
    반증주의는 싫어하는 주장을 까버리는 것이다.

통계에서는 용어를 보고 뜻을 짐작하면 안된다.
서울의 동대문이 종로구에 있는 것처럼...
서대문터도 서대문구에 없고 종로구에 있는 것처럼...
이름은 그저 이름일 뿐이라고 생각해야 통계학을 받아 들일 수 있다.


변수의 종류


범주형 변수

  • 종류나 이름에 해당하는 변수이다.

  • 숫자로 표시할 수 있는데 양적인 개념이 아니다.

    ex) 주민번호에 옛날 남자가 1이고, 요즘남자가 3.
    예를들어 아빠가 1 아들이 3일때, 그 집의 평균은 2니까 여자가 되는가? 아니자나..
    그래서 연산이 의미가 없다.

  • 연산이 대부분 의미가 없다.

  • 순서가 있을 수 있으나, 간격이 일정하지는 않다.

  • 이거냐 저거냐 하면서 갈리는 것들을 말한다.

연속형 변수

  • 연속적인 형태
  • 간격이 일정하고 연산등이 의미가 있음
  • 무게 나이 시간 거리 시험점수, 자녀의 수
    자녀의 수는 완전 연속은 아닌데 연속 취급을 한다.
    평균이라는 말을 붙였을 때 말이 되면 연속형이다.
    ex ) 자녀의 평균 수는 말이 됨. 평균 주민등록 번호는 말이 안됨.

통계 분석의 도구

엑셀

  • 데이터 분석에서 가장 널리 사용되는 도구

  • 엑셀에서 열 수 있는 데이터 크기가 제한 된다.
    (최대 100만행, 1만 6천열)
    (엑셀에서 안열리면 빅데이터다!!)

  • 함수가 부족하다.

  • ui 문제가 있다. 식이 복잡해지면 알아보기 어려워짐

  • 영국에서는 코로나 확진검사 결과를 엑셀파일로 변환했다.
    전국에서 넘어온 데이터를 합치다 보니 엑셀파일에 한계를 넘어서 검사 결과가 누락된적이 있다. 16000건정도.

  • 유전자 이름 오류: 덱셀은 특정 문자가 자동으로 변환된다.
    일부 유전자 기호가 자동으로 날짜로 바뀌었다. ex) SEPT2, MARCH1
    유전자 기호를 포함한 논문 중 20%인 704편의 논문에서 오류가 발견됐다.
    결국 생물학에서 유전자 이름을 변경함....

R

  • 통계 전용 프로그래밍 언어이다.
  • 최신 통계 기법들이 많이 구현 되어있다.

Python

  • 통계 전용은 아니고 범용 프로그래밍 언어이다.
  • 다양한 분야에서 쓰고 있기 때문에 기존 사용자들이 많은 편.
  • 덕분에 데이터 분석에도 활발히 사용.
  • 머신러닝 인공지능에서 사실상 표준으로 사용됨.
    - 데이터분석과 머신러닝이 밀접한 연관이 있어서 많이 쓰게됨

R vs Python

R
통계 분석이 간단.
프로그래밍에 대한 배경지식이 덜필요

Pytohn
머신러닝, 인공지능에 유리하다.
프로그래밍 배경이 있으면 유리하다.
데이터 분석 이외의 목적으로도 활용이 가능하다. (웹개발이라던가)


통계의 종류

  • 기술통계 : 데이터 설명
  • 추론통계 : 추론, 예측

기술통계

  • 중심 경향치 : 데이터가 어디에 몰려있는가

  • 분위수 : 등수 같은 것.

  • 변산성 측정치 : 어떻게 퍼져있는가. (범위, IQR 등)


평균 (mean)

  • n 개의 값이 있을 때, 그 합계를 n 으로 나눈것.

  • 평균은 극단값에 영향을 크게 받는다.
    - 10,20,30,40,50 -> 평균이 30
    - 10,20,30,40,500 -> 평균이 120이 됨

  • 1986년 미국 대학 졸업생 평균 초봉조사결과
    지리학과가 평균이 3억...
    마이클 조던 때문에!!

중간값 median

  • 값들을 크기 순으로 정렬했을 때 중간에 위치한 값
    - 10, 20, 30, 40, 500 의 중간값 -> 30

  • 중위수라고도 한다.

  • 짝수개이면 가운데 두 값의 평균을 사용한다.

평균 vs 중간값

임금근로자의 평균소득은 2020년 기준 320만원
중위소득은 2020년 기준 242만원

최빈값 mode

  • 가장 많이 관찰되는 값
  • 연속 변수 보다는 범주형 변수에서 유용하다.
  • 연속 변수의 경우 구간을 나누어 최빈값을 구하는 경우가 많다

분위수

크기순으로 정렬된 데이터를 q 개로 나누는 위치의 값.

사분위수 : 데이터를 4등분을 하는거다.

			데이터를 크기순으로 정렬을 하고, 4토막으로 나눈다 

백분위수 : 데이터의 순위를 퍼센트로 표현한다.



범위 range

범위는 최대값 - 최소값을 뺀거다.

주식투자해서 A 는 100만원을 10종목에서 각각 10만원을 벌었다.
B도 100만원을 벌었는데, 한종목에서 1000만원을 벌고 나머지에서 900을 잃었다.
둘은 범위가 엄청 다르다.

IQR : 3사분위수 - 1사분위수
범위를 잡을 때 IQR 을 많이 본다.
양쪽 소수의 극단치 사례를 잘라내겠다는거다.
ex) 야 내가 주식으로 1억까지 찍어봤어! : 극단값일 뿐 보통의 결과는 아니다.

변산성 : 변하고 흩어지는 성질
변동성이라고 생각해도 된다.
중고차 가격이 어떤건 싸고 어떤건 비싼데 그 폭이 어떻게 되는가.
양쪽 끝으로 재면 -> 범위(range)
적당히 양쪽 끝을 잘라내고 재면 -> IQR

편차

값 - 평균 (값에서 평균을 뺀 것이 편차다.)

편차의 평균은 0이 나오기 때문에 음수를 제거하고 평균을 구해야 한다.

분산

분산은 평균을 제곱한 것의 평균이다.

편차의 절댓값의 평균을 구하는 것은 MAD 라고 한다.

분산은 편차의 평균을 구하기 위해 도입된 개념이고 여러 수학적인 이유로 MAD 보다 더 보편적으로 채택한다.

표준편차

분산값이 너무 커지기 때문에 루트를 씌워준 것이다.

표준편차가 332.6131272715455 이면 어떤 의미인 건지???
표준편차의 2~3배 정도의 범위에 데이터가 퍼져있다.
상대적으로 생각도 할 수 있다. 표준편차가 작으면 좀 덜 퍼져있다.

<샤프지수>
표준편차는 여러가지로 쓸 수 있는데, 샤프지수라는게 있다.
샤프지수는 펀드의 수익률이 얼마인지 나오는건데 분모에 표준편차가 있다.
샤프지수 = 수익률 / 표준편차 라고 대강 볼 수 있다.
주식투자 100% 수익 본 사람과
주식투자 50% 본 사람이 있다. 수익률 기준에서는 100이 커보이지만
샤프지수로 보면 다를 수 있다. 들쭉날쭉 한지 안한지를 확인하는 지수라고 보면된다.
수익률의 변동성까지 보는 지수가 샤프지수이고 그때 표준편차가 쓰인다.


모집단

관심이 있는 집단 전체를 의미한다.
고객에게 무언갈 팔고 싶다면, 고객 전체가 모집단이다.
그래서 설문조사를 일부 한다면 그 일부다 표본집단이다.
표본 : 특정 연구에서 선택된 모집단의 부분집합
대부분의 경우 집단 전체를 전수조사하기는 어려우므로 무작위로 표본을 추출하여 모집단에 대해 추론한다.

중고차데이터를 생각한다면
모집단 : 전국 중고차 시장에서 거래되는 모든 차량
표본은 지금 있는 274건 데이터 전체 <- 이걸 표본 하나라고 부른다.

모집단은 굉장히 잘못 쓸 가능성이 높은 단어이다!!
모집단 선발을 위해 쓰였다는 말은 잘못된것이다.
모집단은 전체를 말한거니까.
데이터가 있다는것 자체가 표본이라는 뜻이다.


모수

  • 파라미터 : 어떤 특성을 나타내는 값.
  • 모수 : 모집단의 파라미터

추론 통계는 모수를 추정하는거다.
모집단의 특성을 수치로 나타낼 수 있으면 모수라고 할 수 있다.

근데 우리는 모수를 알 수 없다.
우리가 아는 것은 '통계량'뿐이다.

  • 통계량 : 표본에서 얻어진 수로 계산한 값이 통계량이다.
    표본에서 구한건 파라메터라는 말을 쓰지 않고 통계량이라고만 한다.

파라메터 예시

  • 평균
  • 분산
    모수 예시
  • 모평균
  • 모분산
    통계량 예시
  • 표본평균
  • 표본분산

모집단에서 표본을 뽑는건 "표본 추출"이라고 한다.



추정은 어떻게 하는가

ex) 배달의 민족에서 배달 예상시간.

추정

통계량으로부터 모수를 추측하는 절차

  • 점추정: 하나의 수치로 추정 (30분 쯤 걸릴 것 같아요)
  • 구간추정 : 구간으로 추청 (20~40분 쯤 걸릴 것 같아요)

신뢰구간

참고자료
https://angeloyeo.github.io/2021/01/05/confidence_interval.html
https://bkshin.tistory.com/entry/DATA-12

  • "그나마 내가 확실히 말할 수 있는 정도" 라고 생각 할 수 있다.
  • 이름에 신뢰라는 말이 있다고 신뢰하면 안된다. (신뢰중고차 라는 간판을 본 기분이라고 보면 됨)
  • 대표적인 구간 추청 방법
  • 신뢰구간이란 모수가 어느 범위 안에 있는지를 확률적으로 보여주는 방법이다.
  • 신뢰구간 = 통계량 +- 오차범위
  • 95% 신뢰구간 = 95%의 경우에 모수가 추정된 신뢰구간에 포함됨
    - 신뢰수준 95% 라는건 우리가 사용한 방법으로 추정을 하였을 때 모평균이 신뢰구간에 들어갈 확률이 95% 라는 것이다.
    - 어떤 제조회사의 부품에 대한 95% 신뢰구간이 [100mm, 120mm]라고 한다면, 부품이 100mm와 120mm 사이에 있을 것이라고 95% 확신할 수 있다.
    - 다른 말로 95% 신뢰구간이란, 확률표본을 100번 뽑아 구간 100개를 얻으면 이 중 모수를 포함하는 것은 대략 95개 정도가 될 것이라는 뜻
    - 95는 신뢰수준이다.
    - 신뢰수준을 높이면 오차범위가 커진다. 제공하는 정보다 작다. 30분내 도착할 수 도 있고 아닐수도 있고.
    - 신뢰수준이 낮추면 오차범위가 작아진다. 틀릴 가능성은 생기지만 결론을 확실하다. 정보가 많아진다.
    - 말만 신뢰라고 붙인건고 그냥 수준이라고 생각하면 편하다.
    - 신뢰수준이 100이라는 건 오차범위를 무한정 잡겠다는 이야기다. 그냥 틀리기 싫어서 그런것임.

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

  • 신뢰구간이 좁을 수록 예측된 모수의 범위가 좁으므로 유용하다.
    • "그나마 내가 확실히 말할 수 있는 정도" 의 범위가 좀더 구체적이 된다. ex) 20~25분정도 걸릴거에요.
  • 신뢰수준을 낮추면 된다고 생각하지만 틀리기 쉬워서 큰 의미는 없음
  • 신뢰구간에 영향을 주려면 표본의 크기를 키우면 된다!!
    • 데이터가 적어지면 같은 신뢰 수준에서도 범위가 넓어진다!!!!
    • 데이터가 많아지면 같은 신뢰 수준에서도 범위가 좁아진다.

평균의 신뢰구간 구하기
계산을 통해서 평균의 신뢰 구간을 구할 수 있다.

!pip install pingouin
import pingouin as pg
pg.ttest(df.price, 0, confidence=0.95)


같은 신뢰구간인데 위의 코드는 데이터 갯수가 100개 라서 신뢰구간이 931~1027로 넓게 나타난다.
아래는 데이터가 274개로 신뢰구간이 814~893으로 훨씬 좁게 나타나는 것을 볼 수 있다.

  • 통계에서 모든 문제의 해결책은 보통 데이터를 많이 모으는 것.

부트스트랩핑

부트스트랩 참고자료 https://bkshin.tistory.com/entry/DATA-12

  • 평균은 공식?으로 구하는데 중간값(median), 최빈값은 공식이 없다.
    이런 공식이 없는 데이터를 추정하는데 좋다.
  • 시뮬레이션 기법으로 신뢰구간 확인
  • 계속 반복해서 시도해보고 구해본다.

[부트스트랩으로 신뢰구간을 구하는 절차]

  1. 200개의 표본 중 하나를 뽑아 기록하고 다시 제자리에 둡니다.
  2. 이를 n번 반복합니다.
  3. n번 재표본추출한 값의 평균을 구합니다.
  4. 1~3 단계를 R번 반복합니다. (R: 부트스트랩 반복 횟수)
  5. 평균에 대한 결과 R개를 사용하여 신뢰구간을 구합니다.

이 방법을 사용하면 표본이 200개밖에 없을지라도 부트스트랩을 통해 200개 보다 더 많은 통계량을 구할 수 있다. 따라서 부트스트랩을 활용하면 모수를 더 정확히 추정할 수 있다.

import scipy
scipy.stats.bootstrap([df.price], np.mean)
scipy.stats.bootstrap([df.price], np.median, confidence_level=0.99)

우리 표본이랑 모집단이랑 대충 비슷하게 생겼을거라고 가정한다.
우리 표본에서 랜덤으로 데이터를 뽑아서 원하는 값을 구해보는 방식을 무한히 반복하고
결과가 얼마만큼의 크기에서 왔다갔다하는지 관찰한다.
모집단에서 표본을 뽑다보면 평균이 높게 나올 때도 있고, 낮게 나올때도 있을거다.
그래서 부트스트랩핑은 표본에서 표본을 다시 뽑아서 테스트를 해보면 평균이 높게 나올 때도 있고
낮게 나올 때도 있다. 이 결과가 모집단에서도 같은거라고 생각하는거지.....

  • 다른 추정 방법도 많다. 신용구간이라던가...

통계적 가설 검정

Karl Pearson, Ronald Fisher 등 통계학의 초기 인물들이 개발한 절차
과학은 증거를 입증하는거라고 생각하는데, 통계에서는 반증주의를 따른다.
반증주의는 내가 주장 하고 싶은 정 반대의 이론을 반박하여 나의 이론이 맞음을 증명하는거다.

  • ex) 상대성이론 : 반박이 안되니까 일단은 좋은 이론이다. 이렇게 생각하는거다.

입증하고 싶은 주장이 있으면 귀무가설이라는 반대되는 주장을 하고 이거를 반박해서 기각시켜서 반대 되는 나의 주장이 맞았다는걸 증명?한다.
“귀무가설이 사실이라면, 이렇게 내가 구한 관측치가 나올 확률이 매우 희박하다. 그러니 귀무가설은 틀렸다.”

귀무가설 수립
-> 기준으로 유의수준을 만들고
-> 수준을 넘지 못하면 거봐 내 말이 맞았지
-> 유의 수준을 넘으면
-> 결론을 내지 않거나, 재도전!!


귀무가설을 절.대. 인정해 주지는 않는다.

"P 값이 유의수준 보다 작으면 귀무가설은 기각한다. "

P 값

귀무가설이 참이라는 가정하에, 표본의 통계량이 관측 될 확률이 P-value 이다.
P 값이 낮으면 귀무가설이 일어날 확률이 낮은거라서 귀무가설을 기각 할 수 있다.

귀무가설이 900만원이라고 하면, 일단 모평균이 900만원이라고 가정한다.
표본에서 관찰한 것은 853만원이다.
900만원이라고 해도 좀 높게 나올수도 있고 낮게 나올수도 있는거다.
근데 표본의 853만원이 나올 가능성이 있냐는 것을 계산한 것이 P 값이다.

참고자료
https://soohee410.github.io/stat2

1,2종 오류

  • 1종 오류 : 귀무가설이 실제로 참인데 이를 기각하는 오류
  • 2종 오류 : 귀무가설이 실제로 거짓인데 이를 기각하지 않는 오류

두 오류를 동시에 줄이는 것은 불가능하다.
기각을 안 할수록, 1종 오류는 감소하고 2종 오류는 증가하게 된다.
그래서 1종 오류의 최대 허용치를 설정해놓고, 그 뒤에 2종 오류를 최소화시키는 방식을 선택한다.
이 1종 오류의 최대 허용치가 바로 유의수준이다.

유의수준(α)

유의수준 : p-value가 ‘작다/크다’ 말할 기준

귀무가설로 평균이 900이 참이라고 가정한다. -> 이럴 때도 평균이 930, 870이 나올 수도 있다.
우리가 관찰한 결과는 853만원을 관측했다.
p 값 : 귀무가설이 참일 때 우리가 관찰한 결과가 나올 가능성
2% 아주 낮음
낮다고 생각하려면 기준이 있어야 한다.
우리는 5%는 넘겨야 한다는 기준을 정한거다. -> 이게 유의수준

QnA
Q : 귀무가설이 참일 경우, 1종 오류는 유의수준만큼 발생한다는 말이 이해가 안되는데요 유의수준이 5%이면.... 1종오류도 5% 발생하는건가요?
A : 5%에 미달하면 기각이다. 그런데 5% 미달하는 경우는 5% 발생한다.

귀무가설이 참인경우가 있고, 귀무가설이 거짓인 경우가 있다.
귀무가설이 참인데 5% 미달하면 기각이니까 이 5% 경우는 오류이다. 1종 오류
(귀무 가설이 참일 때 잘못 기각할 경우가 5% 라는 뜻이다. 근데 귀무 가설이 참인지 거짖인지 실제로는 알지 못한다!!! )

0.021852 < 0.05
유의수준을 못넘겼으니, 평균이 900이라는 귀무가설은 기각이다.

P 값에 영향을 주는 요소

  • 관찰된 통계량이 귀무가설에서 멀리 떨어져 있으면 p 값이 작아짐
  • 표본의 크기가 크면 p 값이 작아짐

신뢰구간은 통계량에서 나오기 때문에 귀무가설에 영향을 안받는다.

그러니까 우리는 대부분 신뢰구간을 보면 된다!

귀무가설이 신뢰구간안에 있으면 p > 0.05
귀무가설이 신뢰구간안에 없으면 p < 0.05

즉,

  • 95% 신뢰구간이 귀무가설의 모수를 포함하지 않으면 기각
  • 5% 유의수준에서 가설검정은 귀무가설을 기각

두개가 같은 결과이기 때문에 위의 신뢰구간 결과만 보면 되는데, 가끔 신뢰구간이 안구해 지는 경우도 있어서 유의수준을 따져봐야 하기도 한다.



상관분석

  • 상관계수는 두 변수가 연관성이 있는지 수치로 나타낸 것이다.
  • 두 변수의 연관성을 파악하기 위해 사용한다.
    ex) 어휘력과 독해력의 관계, 주가와 금의 관계
  • 상관계수는 -1~ +1로 나타낸다.

+1 한 변구사 증가하면 다른 변수도 증가한다. (일란성 쌍둥이의 키)
-1 하나가 높으면 다른 하나가 낮다.
상관계수가 0이면 관계가 없다.

import pingouin as pg
pg.corr(df.price, df.mileage)

r 이 표본상관계수이다.
여기도 CI 가 나온다. 모상관계수는 -0.74~ -0.61 사이일거라는 추론이다.
귀무가설은 모 상관계수가 0.0 이라는거다.
결론. 귀무가설이 0 이라는건 기각이다!

sns.lmplot(x="mileage", y="price", data=df, ci=95)


price 와 mileage의 관계를 시각화 한 것이다.
r 에 나와있는 값처럼 -0.6 정도의 기울기 인 것을 확인 할 수 있다.
다른 예시도 보자

pg.corr(sp.GLD, sp.SPX) # r -> 0.466896
sns.lmplot(x="GLD", y="SPX", data=sp, ci=95)

기울기와 상관계수

  • 기울기와 높던 낮던 기울이에 일치할 수록 상관계수가 높은거다.
  • 기울기와 상관계수는 다른 개념이다!

p값과 상관계수

상관계수가 커지면 p값이 작아진다.

분산투자의 의미

상관계수가 낮은 자산을 여러개 사면, 다같이 망할 확률이 낮다!!

회귀분석

독립변수 x 를 이용해서 종속변수 y 를 추론하는거다.

독립변수 : 예측의 바탕이 되는 정보. 입력값
종속변수 : 예측의 대상. 출력값

종속변수가 연속인것을 회귀분석이라고 한다. (돌아가는 거랑 아무런 의미가 없다.)

y = wx + b (선형모형)

두가지의 관계가 직선패턴이라는 것.

from statsmodels.formula.api import ols
m = ols("price ~ mileage", data = df).fit()
m.summary()

mileage = 100000
price = -0.052 * mileage + 1258.7668
-> 100000마일리지일 때 가격 회귀분석 결과 : 738.7668000000001

df[df.mileage == 100000]["price"].mean()
실제 100000마일리지일 때 가격 : 720.0
  • 상관분석은 서로 관계가 있는가?
  • 회귀분석은 x 를 이용을 해서 y 를 예측을 하는거다.
    • 공식을 찾는게 회귀분석의 목적이다.
    • 예측을 하려면 관련이 있기는 해야햔다.
    • 예측인 잘 되면 강한 관계가 있다는 것도 미루어 알 수 있다.

더미 코딩

범주형 변수는 곱하거나 더할 수 없다.
그래서 곱하거나 더할 수 있는 방법으로 만들어 준다.
이걸 더미코딩이라고 한다.
기본적으로 ABC 순으로 먼저 나오는 것이 기준(변경할 수도 있음)

from statsmodels.formula.api import ols
m = ols("price ~ model", data = df).fit()
m.summary()


Intercept 는 절편이라는 뜻이다. = b

x = 0 # 아반테
80.3970 * x + 833.4146
-> 833.4146
x = 1 # K3
80.3970 * x + 833.4146
-> 913.8116

이 의미는 K3 를 살때 80.3970 이만큼 웃돈을 주고 사야한다는 것이다.

df.groupby("model")["price"].mean()
Avante : 	833.414634
K3	:	913.811594

실제 평균값과 회귀분석으로 얻은값이 거의 같음을 알 수 있다!



다중 회귀 분석

  • 독립변수가 2개 이상인 회귀분석
    • 회귀분석에서 K3 기울기가 80.3970이 나왔다고 K3가 더 비싸다고 할 수는 없다.
  sns.boxplot(x="model", y="year", data=df)

  • 위 분포를 보면, K3 가 새차가 많다.
    K3 자체가 비쌌던게 아니라 새차가 많아서 비싼거였을지도 모른다!!
  • 그래서 연도가 중요하구나 하고 연도만 회귀분석을 하려고 하는것도 오류가 있다.
  • 연도만 본다면, 연도가 늘어나서 가격이 늘어난건지 아니면 주행거리가 같이 길어져서 가격이 올라간건지 알기가 힘들다.

z가 종속변수 y에 미치는 영향이 x의 기울기에 간접 반영될 수 있기 때문데 z를 모형에 독립변수로 함께 포함하여, x의 기울기에 z의 영향이 간접반영되지 않도록 해야한다.

f = ols("price ~ year+ mileage +model", data = df).fit()
f.summary()

modelK3 = 1
year = 2015
mileage = 50000

p = -1.713e+05 + modelK3 * -40.4089 + year * 85.6030 + mileage * -0.0023

p는 K3일 때, 2015년산일때, mileage 가 50000d 일 때의 추정값이다.
-> 1034.6360999999742


QnA
데이터가 적으면 안되고 데이터가 많아야 한다는 생각이 있는데
유의미한 분석이라는 것은 없다.
모든 분석은 유의미하다.
많은 분석이 T 분포에 의지하고 있는데, 이걸 만든 사람의 논문을 보면 데이터가 3건 밖에 없다.
데이터가 많아야 되는 이유?
귀무가설을 기각하려고
데이터가 적으면 문제느 없지만 결론을 내리기 힘들다.
결론이 난다는건 충분한 데이터를 모은 것이다.

돼지가 말할 수 있다는 걸 입증하기 위해서는
말하는 돼지 한마리만 있으면 된다.

돼지는 말할 수 없다.(입증하기 아주 어렵다.)

profile
열심히 사는 중

0개의 댓글