<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 확률 모형이란
데이터 분포 묘사의 문제점
기술 통계 등의 방법으로 자료의 분포를 기술하는 방법은 불확실하며 대략적인 정보만을 전달할 뿐이며 자세한 혹은 완벽한 정보를 전달하기 어렵다.
예를 들어 다음과 같이 1,000개의 데이터가 있다. 데이터 생성에는 SciPy의 확률 분포 명령을 이용하였다.
[[school_notebook
Step1:  히스토그램을 그리면 다음과 같다.
Step2:  이 히스토그램에서 -0.143394 부터 0.437156 사이의 값이 전체의 약 24%를 차지하고 있음을 알 수 있다. 그럼 만약 -0.01  부터 0.01 사이의 구간에 대한 정보를 얻고 싶다면? 더 세부적인 구간에 대해 정보를 구하고 싶다면 히스토그램의 구간을 더 작게 나누어야 한다.
Step3:  정확한 묘사를 위해 구간의 수를 증가시키면 몇 가지 문제가 발생한다.
우선 구간의 간격이 작아지면서 하나의 구간에 있는 자료의 수가 점점 적어진다. 만약 구간 수가 무한대에 가깝다면 하나의 구간 폭은 0으로 수렴하고 해당 구간의 자료 수도 0으로 수렴할 것이다. 따라서 분포의 상대적인 모양을 살펴보기 힘들어진다. 
더 큰 문제는 분포를 묘사하기 위한 정보가 증가한다는 점이다. 데이터의 분포를 묘사하는 이유는 적은 갯수의 숫자를 통해 데이터의 전반적인 모습을 빠르게 파악하기 위한 것인데 묘사를 위한 정보의 양이 증가하면 원래의 목적을 잃어버린다.
확률 모형
이러한 문제를 해결하기 위해 만들어진 것이 확률 모형(probability model)이다. 확률 모형은 추후 설명할 확률 변수(random variable)라는 것을 이용하여 데이터 분포를 수학적으로 정의하는 방법을 말한다.
보통 확률 분포 함수(probability distribution function) 또는 확률 밀도 함수(probability density function)라고 불리우는 미리 정해진 함수의 수식을 사용한다. 이 때 이 함수들의 계수를 분포의 모수(parameter)라고 부른다.
예를 들어 가장 널리 쓰이는 확률 모형의 하나인 가우시안 정규 분포(Gaussian normal distribution)는 다음과 같은 수식으로 확률 밀도 함수를 정의한다.
$$ N(x; \mu, \sigma) = \frac{1}{\sigma\sqrt{2\pi}}\, e^{-\frac{(x - \mu)^2}{2 \sigma^2}} $$
이 함수의 독립 변수는 자료의 값을 의미하는 변수 $x$이다. 식에서 사용된 문자 $\mu$와 $\sigma$는 평균(mean)과 표준편차(standard deviation)를 뜻하는 모수이다. 함수 표기에서 세미콜론(;)은 독립 변수와 모수를 구분하기 위해 사용하였다.
이 함수식이 실제 분포와 어떤 관계를 가지는지는 분포 함수에 대한 다음 노트북을 참조한다.
[[school_notebook
Step4:  예를 들어 어떤 데이터의 분포를 묘사하기 위해 데이터의 히스토그램을 그리거나 기술 통계 수치를 제시할 필요없이 다음과 같이 말하는 것 만으로 데이터의 분포에 대한 정보를 완벽하게 전달할 수 있다.
이 데이터는 평균 $\mu$, 표준편차 $\sigma$인 가우시안 정규 분포를 따른다.
확률 모형과 데이터 생성
확률 모형론은 데이터와 확률간의 관계를 이용하여 데이터 분포를 효율적으로 묘사하는 방법을 말한다. 데이터와 확률간의 관계를 알기 위해서는 우선 데이터가 어떻게 만들어지는지를 이해해야 한다.
우리는 보통 조사(research) 과정을 통해 데이터를 하나 하나 수집한다. 이러한 과정은 주사위를 던지는 행위에 비유할 수 있다. 즉 조사를 통해 데이터를 하나 확보하는 일은 주사위를 던져 위를 향하는 눈금의 숫자를 종이에 적는 일과 같다고 보는 것이다.
예를 들어 다음 데이터를 보자.
Step5:  이 데이터는 사실 진짜로 컴퓨터 주사위를 던져 만든 숫자이다. 이 숫자를 만드는 코드는 아래와 같다.
<ASSISTANT_TASK:>
Python Code:
sp.random.seed(0)
x = sp.random.normal(size=1000)
Explanation: 확률 모형이란
데이터 분포 묘사의 문제점
기술 통계 등의 방법으로 자료의 분포를 기술하는 방법은 불확실하며 대략적인 정보만을 전달할 뿐이며 자세한 혹은 완벽한 정보를 전달하기 어렵다.
예를 들어 다음과 같이 1,000개의 데이터가 있다. 데이터 생성에는 SciPy의 확률 분포 명령을 이용하였다.
[[school_notebook:175522b819ae4645907179462dabc5d4]]
End of explanation
ns, bins, ps = plt.hist(x, bins=10)
plt.show()
pd.DataFrame([bins, ns/1000])
Explanation: 히스토그램을 그리면 다음과 같다.
End of explanation
ns, bins, ps = plt.hist(x, bins=100)
plt.show()
pd.DataFrame([bins, ns/1000])
Explanation: 이 히스토그램에서 -0.143394 부터 0.437156 사이의 값이 전체의 약 24%를 차지하고 있음을 알 수 있다. 그럼 만약 -0.01  부터 0.01 사이의 구간에 대한 정보를 얻고 싶다면? 더 세부적인 구간에 대해 정보를 구하고 싶다면 히스토그램의 구간을 더 작게 나누어야 한다.
End of explanation
x = np.linspace(-3, 3, 100)
y = sp.stats.norm.pdf(x)
plt.plot(x, y)
plt.show()
Explanation: 정확한 묘사를 위해 구간의 수를 증가시키면 몇 가지 문제가 발생한다.
우선 구간의 간격이 작아지면서 하나의 구간에 있는 자료의 수가 점점 적어진다. 만약 구간 수가 무한대에 가깝다면 하나의 구간 폭은 0으로 수렴하고 해당 구간의 자료 수도 0으로 수렴할 것이다. 따라서 분포의 상대적인 모양을 살펴보기 힘들어진다. 
더 큰 문제는 분포를 묘사하기 위한 정보가 증가한다는 점이다. 데이터의 분포를 묘사하는 이유는 적은 갯수의 숫자를 통해 데이터의 전반적인 모습을 빠르게 파악하기 위한 것인데 묘사를 위한 정보의 양이 증가하면 원래의 목적을 잃어버린다.
확률 모형
이러한 문제를 해결하기 위해 만들어진 것이 확률 모형(probability model)이다. 확률 모형은 추후 설명할 확률 변수(random variable)라는 것을 이용하여 데이터 분포를 수학적으로 정의하는 방법을 말한다.
보통 확률 분포 함수(probability distribution function) 또는 확률 밀도 함수(probability density function)라고 불리우는 미리 정해진 함수의 수식을 사용한다. 이 때 이 함수들의 계수를 분포의 모수(parameter)라고 부른다.
예를 들어 가장 널리 쓰이는 확률 모형의 하나인 가우시안 정규 분포(Gaussian normal distribution)는 다음과 같은 수식으로 확률 밀도 함수를 정의한다.
$$ N(x; \mu, \sigma) = \frac{1}{\sigma\sqrt{2\pi}}\, e^{-\frac{(x - \mu)^2}{2 \sigma^2}} $$
이 함수의 독립 변수는 자료의 값을 의미하는 변수 $x$이다. 식에서 사용된 문자 $\mu$와 $\sigma$는 평균(mean)과 표준편차(standard deviation)를 뜻하는 모수이다. 함수 표기에서 세미콜론(;)은 독립 변수와 모수를 구분하기 위해 사용하였다.
이 함수식이 실제 분포와 어떤 관계를 가지는지는 분포 함수에 대한 다음 노트북을 참조한다.
[[school_notebook:4d74d1b5651245a7903583f30ae44608]]
다음 그림은 scipy를 사용하여 평균 0, 표준편차 1인 표준 정규 분포(standard normal distribution)의 모양을 그린것이다.
End of explanation
x = np.array([5, 6, 1, 4, 4, 4, 2, 4, 6, 3, 5, 1, 1, 5, 3, 2, 1, 2, 6, 2, 6, 1, 2,
              5, 4, 1, 4, 6, 1, 3, 4, 1, 2, 4, 6, 4, 4, 1, 2, 2, 2, 1, 3, 5, 4, 4,
              3, 5, 3, 1, 1, 5, 6, 6, 1, 5, 2, 5, 2, 3, 3, 1, 2, 2, 2, 2, 4, 4, 3,
              4, 1, 4, 6, 5, 2, 3, 5, 4, 5, 5, 5, 4, 5, 5, 5, 1, 5, 4, 3, 6, 6, 6])
Explanation: 예를 들어 어떤 데이터의 분포를 묘사하기 위해 데이터의 히스토그램을 그리거나 기술 통계 수치를 제시할 필요없이 다음과 같이 말하는 것 만으로 데이터의 분포에 대한 정보를 완벽하게 전달할 수 있다.
이 데이터는 평균 $\mu$, 표준편차 $\sigma$인 가우시안 정규 분포를 따른다.
확률 모형과 데이터 생성
확률 모형론은 데이터와 확률간의 관계를 이용하여 데이터 분포를 효율적으로 묘사하는 방법을 말한다. 데이터와 확률간의 관계를 알기 위해서는 우선 데이터가 어떻게 만들어지는지를 이해해야 한다.
우리는 보통 조사(research) 과정을 통해 데이터를 하나 하나 수집한다. 이러한 과정은 주사위를 던지는 행위에 비유할 수 있다. 즉 조사를 통해 데이터를 하나 확보하는 일은 주사위를 던져 위를 향하는 눈금의 숫자를 종이에 적는 일과 같다고 보는 것이다.
예를 들어 다음 데이터를 보자.
End of explanation
np.random.seed(0)
np.random.randint(1, 7, 92)
Explanation: 이 데이터는 사실 진짜로 컴퓨터 주사위를 던져 만든 숫자이다. 이 숫자를 만드는 코드는 아래와 같다.
End of explanation
<END_TASK>