<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 검정과 유의 확률
검정(testing)은 데이터 뒤에 숨어있는 확률 변수의 분포와 모수에 대한 가설의 진위를 정량적(quantitatively)으로 증명하는 작업을 말한다.
[[school_notebook
Step1:  유의 확률의 값이 아주 작으면 귀무 가설이 맞다는 가정하에 계산된 검정 통계량이 나올 가능성이 희귀하다는 의미이다. 
다시 예를 들자면 "어떤 병에 걸렸다"는 귀무 가설을 증명하기 위한 검정에서 혈액 검사를 사용하여 계산한 유의확률이 0.02%라는 의미는 실제로 병에 걸린 환자들 중 혈액 검사 수치가 해당 환자의 혈액 검사 수치보다 낮은 사람은 0.02% 뿐이었다는 뜻이고 "어떤 학생이 우등생이다."라는 귀무사설을 증명하기 위한 검정에서 시험 성적을 사용하여 계산한 유의확률이 0.3%라는 의미는 실제로 우등생의 성적을 분석해 보면 실수로 시험을 잘 못치른 경우를 포함해도 해당 점수보다 나쁜 경우는 0.3%에 지나지 않는다는 뜻이다.
따라서 이렇게 유의 확률의 값이 아주 작은 숫자가 나오면 해당 귀무 가설을 기각할 수 있다.
유의 수준과 기각역
계산된 유의 확률 값에 대해 귀무 가설을 기각하는지 채택하는지를 결정할 수 있는 기준 값을 유의 수준(level of significance)라고 한다. 일반적으로 사용되는 유의 수준은 1%, 5%, 10% 등이다.
검정 통계량이 나오면 확률 밀도 함수(또는 누적 확률 함수)를 사용하여 유의 확률을 계산할 수 있는 것처럼 반대로 특정한 유의 확률 값에 대해 해당하는 검정 통계량을 계산할 수도 있다. 유의 수준에 대해 계산된 검정 통계량을 기각역(critical value)라고 한다.
기각역 값을 알고 있다면 유의 확률을 유의 수준과 비교하는 것이 아니라 검정 통계량을 직접 기각역과 비교하여 기각/채택 여부를 판단할 수도 있다.
검정의 예
이제 서두에서 제기한 문제를 다시 풀어보자.
문제1
<blockquote> 
어떤 동전을 5번 던졌더니 4번이 앞면이 나왔다. 이 동전은 휘어지지 않은 공정한 동전(fair coin)인가?
</blockquote>
동전의 앞면이 나오는 것을 숫자 1, 뒷면이 나오는 것을 숫자 0으로 나타낸다면 이 문제는 베르누이 확률 변수의 모수 검정 문제로 생각할 수 있다. 판단하고자하는 귀무 가설은 베르누이 확률 분포 모수 $\theta = 0.5$이다. 
이 문제에 대한 검정 통계량은 15번 던져 앞면이 나온 횟수가 12이고 이 값은 자유도가 15인 이항 분포를 따른다. 이 경우의 유의 확률을 계산하면 
1.76% 이다.
$$ \text{Bin}(n \geq 12;N=15) = 0.017578125 $$
Step2:  이 값은 5% 보다는 작고 1% 보다는 크기 때문에 유의 수준이 5% 라면 기각할 수 있으며(즉 공정한 동전이 아니라고 말할 수 있다.) 유의 수준이 1% 라면 기각할 수 없다.(즉, 공정한 동전이 아니라고 말할 수 없다.)
문제2
<blockquote> 
어떤 트레이더의 일주일 수익률은 다음과 같다.
<ASSISTANT_TASK:>
Python Code:
xx1 = np.linspace(-4, 4, 100)
xx2 = np.linspace(-4, -2, 100)
xx3 = np.linspace(2, 4, 100)
plt.subplot(3, 1, 1)
plt.fill_between(xx1, sp.stats.norm.pdf(xx1), facecolor='green', alpha=0.1)
plt.fill_between(xx2, sp.stats.norm.pdf(xx2), facecolor='blue', alpha=0.35)
plt.fill_between(xx3, sp.stats.norm.pdf(xx3), facecolor='blue', alpha=0.35)
plt.text(-3, 0.1, "p-value=%5.3f" % (2*sp.stats.norm.cdf(-2)), horizontalalignment='center')
plt.title(r"Test statistics = 2. Two-tailed test. $H_a: \mu \neq 0$")
plt.subplot(3, 1, 2)
plt.fill_between(xx1, sp.stats.norm.pdf(xx1), facecolor='green', alpha=0.1)
plt.fill_between(xx3, sp.stats.norm.pdf(xx3), facecolor='blue', alpha=0.35)
plt.text(3, 0.1, "p-value=%5.3f" % (sp.stats.norm.cdf(-2)), horizontalalignment='center')
plt.title(r"Test statistics = 2. One-tailed test. $H_a: \mu > 0$")
plt.subplot(3, 1, 3)
plt.fill_between(xx1, sp.stats.norm.pdf(xx1), facecolor='green', alpha=0.1)
plt.fill_between(xx2, sp.stats.norm.pdf(xx2), facecolor='blue', alpha=0.35)
plt.text(-3, 0.1, "p-value=%5.3f" % (sp.stats.norm.cdf(-2)), horizontalalignment='center')
plt.title(r"Test statistics = -2. One-tailed test. $H_a: \mu < 0$")
plt.tight_layout()
plt.show()
Explanation: 검정과 유의 확률
검정(testing)은 데이터 뒤에 숨어있는 확률 변수의 분포와 모수에 대한 가설의 진위를 정량적(quantitatively)으로 증명하는 작업을 말한다.
[[school_notebook:87b67dafd7544e3380af278ff4f22d77]]
예를 들어 다음과 같은 문제가 주어졌다면 어떻게 풀겠는가?
문제1
<blockquote> 
어떤 동전을 15번 던졌더니 12번이 앞면이 나왔다. 이 동전은 휘어지지 않은 공정한 동전(fair coin)인가?
</blockquote>
문제2
<blockquote> 
어떤 트레이더의 일주일 수익률은 다음과 같다.:<br>
0.5%, -5%, 4.3%, 2.1% -5.6% <br>
이 트레이더는 돈을 벌어다 줄 사람인가, 아니면 돈을 잃을 사람인가? 
</blockquote>
이러한 문제들을 데이터 분석의 방법론으로 푼다면 다음과 같이 풀 수 있다.
데이터가 어떤 고정된(fixed) 확률 분포를 가지는 확률 변수라고 가정한다. 동전은 베르누이 분포를 따르는 확률 변수의 표본이며 트레이더의 수익률은 정규 분포를 따르는 확률 변수의 표본이라고 가정한다.
이 확률 분포의 모수값이 특정한 값을 가지는지 혹은 특정한 값보다 크거나 같은지 알고자 한다. 동전이 공정한 동전이라고 주정하는 것은 그 뒤의 베르누이 확률 분포의 모수 $\theta$의 값이 0.5 이라고 주장하는 것과 같다. 트레이더가 장기적으로 돈을 벌어다 줄 것이라고 주장하는 것은 그 뒤의 정규 분포의 기댓값 모수 $\mu$ 가 0보다 크거나 같다고 주장하는 것이다.
모수 값이 이러한 주장을 따른다고 가정하면 실제로 현실에 나타난 데이터가 나올 확률을 계산할 수 있다. 동전의 경우에는 공정한 동전임에도 불구하고 15번 중 12번이나 앞면이 나올 확률을 계산할 수 있으며 트레이더의 경우에는 정규 분포에서 해당 데이터가 나올 확률을 계산할 수 있다.
이렇게 구한 확률의 값이 판단자가 정한 특정한 기준에 미치지 못한다면 이러한 주장이 틀렸다고 생각할 수 밖에 없다. 반대로 값이 기준보다 높다면 그 주장이 틀렸다고 판단할 증거가 부족한 것이다.
가설
이렇게 확률 분포에 대한 어떤 주장을 가설(hypothesis)이라고 하며 $H$로 표기하는 경우가 많다. 이 가설을 증명하는 행위를 통계적 가설 검정(statistical hypothesis testing) 줄여서 검정(testing)이라고 한다. 특히 확률 분포의 모수 값이 특정한 값을 가진다는 주장을 모수 검정 (parameter testing)이라고 한다. 
가장 일반적으로 사용되는 가설은 모수의 값이 0 이라는 가설이다. 
$$ H: \theta = 0 $$
이 가설은 회귀 분석(regression)에서 흔하게 사용되는데 회귀 계수의 값이 0 이면 종속 변수(target)가 해당 독립 변수(feature)의 영향을 받지 않는 다는 의미가 된다.
검정 방법론
가설 증명, 즉 검정의 기본적인 논리는 다음과 같다.
만약 가설이 맞다면 즉, 모수 값이 특정한 조건을 만족한다면 해당 확률 변수로부터 만들어진 표본(sample) 데이터들은 어떤 규칙을 따르게 된다.
해당 규칙에 따라 표본 데이터 집합에서 어떤 숫자를 계산하면 계산된 숫자는 특정한 확률 분포를 따르게 된다. 이 숫자를 검정 통계치(test statistics)라고 하며 확률 분포를 검정 통계 분포(test statistics distribution)라고 한다. 검정 통계 분포의 종류 및 모수의 값은 처음에 정한 가설에 의해 결정된다. 이렇게 검정 통계 분포를 결정하는 최초의 가설을 귀무 가설(Null hypothesis)이라고 한다.
데이터에 의해서 실제로 계산된 숫자, 즉, 검정 통계치가 해당 검정 통계 분포에서 나올 수 있는 확률을 계산한다. 이를 유의 확률(p-value)라고 한다.
만약 유의 확률이 미리 정한 특정한 기준값보다 작은 경우를 생각하자. 이 기준값을 유의 수준(significance level)이라고 하는 데 보통 1% 혹은 5% 정도의 작은 값을 지정한다. 유의 확률이 유의 수준으로 정한 값(예 1%)보다도 작다는 말은 해당 검정 통계 분포에서 이 검정 통계치가 나올 수 있는 확률이 아주 작다는 의미이므로 가장 근본이 되는 가설 즉, 귀무 가설이 틀렸다는 의미이다. 따라서 이 경우에는 귀무 가설을 기각(reject)한다.
만약 유의 확률이 유의 수준보다 크다면 해당 검정 통계 분포에서 이 검정 통계치가 나오는 것이 불가능하지만은 않다는 의미이므로 귀무 가설을 기각할 수 없다. 따라서 이 경우에는 귀무 가설을 채택(accept)한다.
귀무 가설과 대립 가설
검정 작업을 하기 위해서는 기각 혹은 채택하고자 하는 가설을 만들어야 한다. 이러한 가설을 귀무 가설(Null Hypothesis)이라고 하며 $H_0$ 로 표기한다. 일반적으로 검정에서 그냥 가설이라고 하면 귀무가설을 가리킨다. 귀무 가설이 사실이라고 증명되면 채택(accept)하고 거짓이라고 증명되면 기각(reject)한다.
귀무 가설이 기각되면 채택할 수도 있는 가설을 대립 가설(Alternative Hypothesis)이라고 하며 보통 $H_a$ 로 표기한다. 
예를 들어 귀무 가설 $H_0$가 다음과 같다고 가정하면,
$$ H_0: \theta = 0 $$
다음 가설들은 이 귀무 가설에 대한 대립 가설이 될 수 있다.
$$ H_a: \theta \neq 0 $$
$$ H_a: \theta > 0 $$
$$ H_a: \theta < 0 $$
첫번째와 같은 형태의 대립 가설을 가지는 경우를 양측 검정(two-tailed testing), 두번째나 세번째와 같은 형태의 대립 가설을 가지는 경우를  단측 검정(one-tailed testing)이라고 한다.
검정 통계량
검정을 하려면 즉, 귀무 가설이 맞거나 틀린 것을 증명하려면 어떤 증거가 있어야 한다. 이 증거에 해당하는 숫자를 검정 통계량(test statistics)라고 한다. 
비유를 들어보자.
"어떤 병에 걸렸다"라는 가설을 증명하려면 환자의 혈액을 채취하여 혈액 내의 특정한 성분의 수치를 측정해야 한다고 가정하자. 이 때 해당 수치가 바로 검정 통계량이 된다.
"어떤 학생이 우등 상장을 받을 수 있는 우등생이다"라는 가설을 증명하려면 시험(test)에 대한 성적을 측정하면 된다. 이 시험 성적을 검정 통계량이라고 부를 수 있다.
데이터 분석의 경우 검정 통계량은 데이터로부터 계산되는 일종의 함수이다.
$$
\text{test statistics } t = f(x_1, x_2, \ldots, x_n)
$$
예를 들어 동전을 $N$번 던질 경우 앞면이 나온 횟수가 $n$ 자체가 검정 통계량이 될 수 있다. 
정규 분포를 따르는 수익률의 경우라면 $N$개의 수익률 데이터 $x_1, \ldots, x_N$에서 다음 수식으로 계산한 값도 검정 통계량이 된다. 
$$
t = \dfrac{m}{\frac{s}{\sqrt{N}}}
$$
여기에서
$$
m = \dfrac{1}{N}\sum_{i=1}^{N} x_i
$$
$$
s^2 = \dfrac{1}{N}\sum_{i=1}^{N} (x_i-m)^2
$$
검정 통계량은 표본 자료에서 계산된 함수값이므로 표본처럼 확률적(random)이다. 즉, 경우에 따라 표본 값이 달라질 수 있는 것처럼 달라진 표본값에 의해 검정 통계량도 달라진다. 따라서 검정 통계량 $t$ 도 검정 통계량 확률 변수 $T$ 라는 확률 변수의 표본으로 볼 수 있다.
데이터에 대한 아무 함수나 검정 통계량이 될 수 있는 것이 아닌다. 어떤 함수가 검정 통계량이 되려면 귀무 가설이 사실일 경우 표본에서 계산된 검정 통계량이 따르는 검정 통계량 확률 변수 $T$의 확률 분포를 귀무 가설로부터 알 수 있어야만 한다.
예를 들어 "어떤 병에 걸렸다"는 가설을 혈액 성분 수치로부터 판단하려면 병에 걸린 환자의 성분 수치가 어떤 분포를 따르는지 알 수 있어야 한다. 현실에서는 실제로 병에 걸린 다수의 환자의 혈액 성분 수치를 사용하여 검정 통계량 분포를 구한다.  또한 "어떤 학생이 우등생이다"라는 가설을 시험 성적으로부터 판단하라면 우등생인 모든 학생의 시험 성적에 대한 분포를 구해야 한다.
데이터 분석에서는 어떤 귀무 가설을 만족하는 표본을 입력 변수로 놓고 특정한 함수로 계산한 검정 통계량이 특정한 분포를 따른다는 것을 수학적인 증명을 통해 보이는 것이 일반적이다. 통계학자들의 중요한 업적 중의 하나가 특정한 귀무 가설에 대해 어떤 검정 통계량 함수가 어떤 검정 통계량 분포를 따른 다는 것을 증명해 준 것이다. 
검정 통계량의 예
일반적으로 많이 사용되는 검정 통계량에는 다음과 같은 것들이 있다.
1. 베르누이 분포 확률 변수
모수 $\theta$를 가지는 베르누이 분포 확률 변수에 대해서는 전체 시도 횟수 $N$ 번 중 성공한 횟수 $n$ 자체를 검정 통계량으로 쓸 수 있다. 이 검정 통계량은 자유도 $N$과 모수 $\theta$를 가지는 이항 분포를 따른다.
$$ x \sim \text{Ber}  \;\; \rightarrow \;\; t = \sum x \sim \text{Bin} $$
2. 카테고리  분포 확률 변수
모수 벡터 $\alpha$를 가지는 카테고리 분포 확률 변수에 대해서는 전체 시도 횟수 $N$ 번 중 성공한 횟수 벡터 $x$ 자체를 검정 통계량으로 쓸 수 있다. 이 검정 통계량은 자유도 $N$과 모수 벡터 $\alpha$를 가지는 다항 분포를 따른다.
$$ x \sim \text{Cat}  \;\; \rightarrow \;\; t = \sum x \sim \text{Mul} $$
3. 분산 $\sigma^2$ 값을 알고 있는 정규 분포 확률 변수
분산 모수 $\sigma^2$의 값을 알고 있는 정규 분포 확률 변수에 대해서는 다음과 같이 샘플 평균을 정규화(nomarlize)한 값을 검정 통계량으로 쓴다. 이 검정 통계량은 표준 정규 분포를 따른다. 이 검정 통계량은 특별히 $z$라고 부른다.
$$
x \sim \mathcal{N}(\mu, \sigma^2) \;\; \rightarrow \;\; z = \dfrac{m-\mu}{\frac{\sigma}{\sqrt{N}}} \sim \mathcal{N}(z;0,1)
$$
여기에서 $m$은 샘플 평균
$$
m = \dfrac{1}{N}\sum_{i=1}^{N} x_i
$$
4. 분산 $\sigma^2$ 값을 모르는 정규 분포 확률 변수
이번에는 분산 모수 $\sigma^2$의 값을 모르는 정규 분포 확률 변수를 고려하자.
평균 모수 $\mu$ 에 대한 검정을 할 때는 다음과 같이 샘플 평균을 샘플 분산으로 정규화(nomarlize)한 값을 검정 통계량으로 쓴다. 이 검정 통계량은 자유도가 $N-1$인 표준 student-t 분포를 따른다. $N$은 데이터의 수이다.
$$
x \sim \mathcal{N}(\mu, \sigma^2) \;\; \rightarrow \;\; t = \dfrac{m}{\frac{s}{\sqrt{N}}} \sim t(t;0,1,N-1)
$$
여기에서 $m$은 샘플 평균
$$
m = \dfrac{1}{N}\sum_{i=1}^{N} x_i
$$
$s^2$은 샘플 분산이다.
$$
s^2 = \dfrac{1}{N}\sum_{i=1}^{N} (x_i-m)^n
$$
분산 모수 $\sigma^2$에 대한 검정을 할 때는 다음과 같이 샘플 분산을 정규화(normalize)한 값을 검정 통계량으로 쓴다. 이 검정 통계량은 자유도가 $N-1$인 카이 제곱 분포를 따른다. $N$은 데이터의 수이다.
$$
x \sim \mathcal{N}(\mu, \sigma^2) \;\; \rightarrow \;\; t = (N-1)\dfrac{s^2}{\sigma_0^2} \sim \chi^2 (t;0,1,N-1)
$$
유의 확률 p-value
귀무 가설이 사실이라는 가정하에 검정 통계량이 따르는 검정 통계량 분포를 알고 있다면 실제 데이터에서 계산한 검정 통계량 숫자가 분포에서 어느 부분쯤에 위치해 있는지를 알 수 있다. 이 위치를 나타내는 값이 바로 유의 확률(p-value) 이다.
검정 통계량의 유의 확률은 검정 통계량 숫자보다 더 희귀한(rare) 값이면서 대립 가설을 따르는 값이 나올 수 있는 확률을 말한다. 이 확률은 검정 통계 확률 분포 밀도 함수(pdf)에서 양 끝의 꼬리(tail)부분에 해당하는 영역의 면적으로 계산한다. 실제로는 누적 확률 분포 함수를 사용한다.
유의 확률은 같은 귀무 가설에 대해서도 대립 가설이 어떤 것인가에 따라 달라질 수 있다.
End of explanation
1 - sp.stats.binom(15, 0.5).cdf(12-1)
Explanation: 유의 확률의 값이 아주 작으면 귀무 가설이 맞다는 가정하에 계산된 검정 통계량이 나올 가능성이 희귀하다는 의미이다. 
다시 예를 들자면 "어떤 병에 걸렸다"는 귀무 가설을 증명하기 위한 검정에서 혈액 검사를 사용하여 계산한 유의확률이 0.02%라는 의미는 실제로 병에 걸린 환자들 중 혈액 검사 수치가 해당 환자의 혈액 검사 수치보다 낮은 사람은 0.02% 뿐이었다는 뜻이고 "어떤 학생이 우등생이다."라는 귀무사설을 증명하기 위한 검정에서 시험 성적을 사용하여 계산한 유의확률이 0.3%라는 의미는 실제로 우등생의 성적을 분석해 보면 실수로 시험을 잘 못치른 경우를 포함해도 해당 점수보다 나쁜 경우는 0.3%에 지나지 않는다는 뜻이다.
따라서 이렇게 유의 확률의 값이 아주 작은 숫자가 나오면 해당 귀무 가설을 기각할 수 있다.
유의 수준과 기각역
계산된 유의 확률 값에 대해 귀무 가설을 기각하는지 채택하는지를 결정할 수 있는 기준 값을 유의 수준(level of significance)라고 한다. 일반적으로 사용되는 유의 수준은 1%, 5%, 10% 등이다.
검정 통계량이 나오면 확률 밀도 함수(또는 누적 확률 함수)를 사용하여 유의 확률을 계산할 수 있는 것처럼 반대로 특정한 유의 확률 값에 대해 해당하는 검정 통계량을 계산할 수도 있다. 유의 수준에 대해 계산된 검정 통계량을 기각역(critical value)라고 한다.
기각역 값을 알고 있다면 유의 확률을 유의 수준과 비교하는 것이 아니라 검정 통계량을 직접 기각역과 비교하여 기각/채택 여부를 판단할 수도 있다.
검정의 예
이제 서두에서 제기한 문제를 다시 풀어보자.
문제1
<blockquote> 
어떤 동전을 5번 던졌더니 4번이 앞면이 나왔다. 이 동전은 휘어지지 않은 공정한 동전(fair coin)인가?
</blockquote>
동전의 앞면이 나오는 것을 숫자 1, 뒷면이 나오는 것을 숫자 0으로 나타낸다면 이 문제는 베르누이 확률 변수의 모수 검정 문제로 생각할 수 있다. 판단하고자하는 귀무 가설은 베르누이 확률 분포 모수 $\theta = 0.5$이다. 
이 문제에 대한 검정 통계량은 15번 던져 앞면이 나온 횟수가 12이고 이 값은 자유도가 15인 이항 분포를 따른다. 이 경우의 유의 확률을 계산하면 
1.76% 이다.
$$ \text{Bin}(n \geq 12;N=15) = 0.017578125 $$
End of explanation
x = np.array([-0.025, -0.05, 0.043, -0.037, -0.056])
t = x.mean()/x.std(ddof=1)*np.sqrt(len(x))
t, sp.stats.t(df=4).cdf(t)
Explanation: 이 값은 5% 보다는 작고 1% 보다는 크기 때문에 유의 수준이 5% 라면 기각할 수 있으며(즉 공정한 동전이 아니라고 말할 수 있다.) 유의 수준이 1% 라면 기각할 수 없다.(즉, 공정한 동전이 아니라고 말할 수 없다.)
문제2
<blockquote> 
어떤 트레이더의 일주일 수익률은 다음과 같다.:<br>
-2.5%, -5%, 4.3%, -3.7% -5.6% <br>
이 트레이더는 돈을 벌어다 줄 사람인가, 아니면 돈을 잃을 사람인가? 
</blockquote>
수익률이 정규 분포를 따른 다고 가정하면 이 트레이더의 검정통계량은 다음과 같이 계산된다.
$$ t = \dfrac{m}{\frac{s}{\sqrt{N}}} = -1.4025 $$
이 검정 통계량에 대한 유의 확률은 11.67%이다.
$$ F(t=-1.4025;4) = 0.1167 $$
End of explanation
<END_TASK>