8.1 사이파이를 이용한 확률분포 분석
import scipy as sp
import scipy.stats
확률분포 클래스
위에서 import한 라이브러리 중에서 stats라는 것이 중요한데, 이유는 아래와 같은 클래스들을 제공하기 때문이다.
사용법은 다음과 같이 명령어를 치면 된다.
rv=sp.stats.norm()
위와 같이 작성하면 클래스들 중에서 정규분포 객체가 만들어지게 된다.
모수 지정
이제 만들어진 객체의 모양을 지정하기 위해 다음 두가지의 모수를 지정해서 모형을 결정하게 된다.
(모수)이름 | 의미 |
---|---|
loc | 일반적으로 분포의 기댓값 |
scale | 일반적으로 분포의 표준편차 |
그래서 위의 두 개의 인자를 객체를 생성할때 인자로 전달하여 주면 된다.
rv=sp.stats.norm(loc=1,scale=2)
확률분포 매서드
이제 우리는 위와 같은 매서드들을 객체를 이용하여서 사용할 수 있게 된다.
확률밀도함수(pdf)
이제 pdf는 함수이기 때문에 입력 값을 넣어주어야 한다. 그러면 위와 같은 그래프가 만들어지게 된다.
linspace 함수
linspace(start,end,num)[linearly Spaced]함수는 파이썬의 numpy 모듈에 포함된 함수로서 1차원의 배열을 start부터 end사이의 숫자로 num만큼의 값을 넣은 1차원 배열을 만드는 함수이다.
연습 문제 8.1.1
(1) 기댓값이 0이고 표준 편차가 0.1인 정규분포의 객체를 만들고 확률밀도함수를 그려라.
참고로 plt.xlabel("") 라고 붙게 되는데 이때의 $는 기울이기를 표현해 준다.
여기에서 추가적으로 pdf의 함수 값은 결코 확률이 아니다. 이건 cdf즉 누적분포함수의 기울기일 뿐이다. 그렇기에 어디에 값이 많고 적은지를 알려주는 밀도와 같은 것일 뿐이다.
(2) 이 확률밀도함수의 최대값은 얼마인가?
누적분포함수(cdf)
cdf의 함수값은 진짜 확률 값이 맞다. 바로 -∞에서 값까지의 구간사건에 대해서 할당된 확률의 값의 높이를 의미한다.
무작위 표본 생성(rvs)
무작위로 표본을 만들 때는 rvs(random value sampling) 메서드를 사용한다. 이 메서드에서 받는 인수는 다음과 같다.
인수 | 의미 |
---|---|
size=(행,열) | 표본 생성 시 생성될 표본 크기 |
random_state | 표본 생성 시 사용되는 시드 값 |
변환 확률변수의 시뮬레이션
시뮬레이션 기능을 사용하면 확률변수의 표본을 가공하여 만들어진 변환(transform) 확률변수의 확률분포도 알 수 있다. 이때 사용하는 것은 uniform 확률 분포이다. 이 것은 0과 1사이의 값에 대해서 값이 균일하게 나올 수 있고 나머지 값은 안나오는 분포이다.
그렇다면 두개의 균일분포의 합의 어떤 분포를 가지게 될까? 얼핏 생각해 보았을 때는 균일분포가 나올걸로 예상이 되지만 실재로는 1에 몰리어 있는 결과가 나오게 된다.
Author And Source
이 문제에 관하여(8.1 사이파이를 이용한 확률분포 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tonyhan18/8.1-사이파이를-이용한-확률분포-분석저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)