다운로드
작성자: admin 작성일시: 2018-06-04 22:32:33 조회수: 4441 다운로드: 235
카테고리: 기초 수학 태그목록:

7.1 확률적 데이터와 확률변수

확률은 데이터 분석에서 두 가지 관점으로 사용된다.

  1. 데이터 자체의 값이 어떤 특성을 가지는지를 표현하기 위한 수단 (빈도주의적 관점)
  2. 데이터로부터 얻은 법칙이나 규칙을 표현하기 위한 수단 (베이지안 관점)

여기에서는 빈도주의적 관점에서 데이터 자체의 값을 확률로 표현하는 방법에 대해 공부한다.

확률적 데이터

실험, 측정, 조사 등을 통해 어떤 데이터값을 반복적으로 혹은 동시에 병렬적으로 측정할 수 있는 경우를 생각하자. 이렇게 데이터값을 알아내었을 때 데이터값은 항상 같은 값이 나올 수도 있고 예측 불가능하게 달라질 수도 있다. 예를 들어 ‘사람의 사망 시 나이’를 조사하는 경우에 특정한 사망자의 사망 시 나이를 조사한다면 누가 어떤 상황에서 조사하더라도 같은 값이 나올 것이다. 하지만 누구인지를 특정하지 않고 ‘우리나라 국민의 사망 시 나이’라고만 한다면 조사하는 상황에 따라 표본(사람)이 달라지기 때문에 값이 달라질 것이며 정확히 어떤 값이 나올지 예측할 수도 없다.

항상 같은 값이 나오는 데이터를 결정론적 데이터(deterministic data), 예측할 수 없는 값이 나오는 데이터를 확률적 데이터(random data, probabilistic data, stochastic data)라고 한다. 우리가 다루는 대부분의 데이터는 확률적 데이터다.

데이터가 확률적이 되는 이유는

  • 대상을 특정하지 않고 넓은 범위의 대상을 목표로 하기 때문이거나
  • 여러 조건이나 상황에 따라 데이터값이 영향을 받기 때문일 수도 있고
  • 측정 시에 발생하는 오차 때문일 수도 있다.

하지만 확률적인 데이터라고 하더라도 아무런 예측도 하지 못하는 것은 아니다. 예를 들어 ‘우리나라 국민의 사망 시 나이’라는 데이터값은 절대로 음수가 나오지 않을 것이며 150보다 큰 수도 나오지 않을 것이다. 그리고 0살과 150살 사이에서도 많이 나오는 값이 있고 적게 나오는 값이 있을 것이다. 우리가 말하는 데이터에 대한 ‘지식’이라는 것은 대부분 이런 종류의 것, 즉 정확하게 어떤 하나의 값을 이야기할 수는 없지만 그렇다고 범위를 한정할 수 없는 것도 아닌 것들이다. 이러한 지식을 어떻게 정량적으로 표현할 수 있을까?

분포와 기술통계

확률적 데이터에서 어떠한 값이 자주 나오고 어떠한 값이 드물게 나오는가를 나타내는 특성을 분포(distribution)라고 한다. 흔히 히스토그램(histogram)을 사용하여 표현하는 것이 분포다. 분포가 어떤가는 데이터 값을 하나하나 표로 나타낼 수도 있고 히스토그램 등을 통해 시각적으로 표현할 수도 있다. 하지만 더 좋은 방법은 분포의 특징을 나타내는 어떤 숫자를 계산하여 그 숫자로서 분포를 표현하는 것이다. 이러한 값들을 기술통계(descriptive statistics)라고 한다. 대표적인 기술통계는 다음과 같다.

  • 표본평균, 표본중앙값, 표본최빈값
  • 표본분산, 표본표준편차
  • 표본왜도, 표본첨도

표본평균

정상인의 최고혈압(수축기혈압, systolic blood pressure)은 얼마인가라는 질문에 어떻게 답할 것인가?

정상인의 최고혈압은 확률적 데이터다. 즉, 정상인 사람마다 그리고 측정하는 상황에 따라 다를 수 있다. 하지만 의사에게 같은 질문을 한다면 대부분 "120 mmHg 정도입니다"라고 말할 것이다. 여기에서 120이라는 값은 정상인의 최고혈압을 대표하는 값이다. 이렇게 확률적인 데이터값을 대표하는 몇 가지 기술통계가 있는데 그중 하나가 표본평균이다.

일반적으로 부르는 평균(mean, average)의 정확한 명칭은 표본평균(sample mean, sample average)이다. 표본평균은 데이터 분포의 대략적인 위치를 나타낸다. 표본평균의 기호로는 알파벳 $m$ 또는 데이터를 나타내는 변수 기호 위에 bar를 붙인 $\bar x$ 기호를 사용한다.

$$ \begin{align} m = \bar{x} = \dfrac{1}{N}\sum_{i=1}^{N} x_i \tag{7.1.1} \end{align} $$

이 식에서 $N$는 자료의 개수, $i$는 자료의 순서(index)를 뜻한다.

표본중앙값

표본중앙값(sample median)은 전체 자료를 크기별로 정렬했을 때 가장 중앙에 위치하는 값을 말한다. 표본 중앙값에도 몇 가지의 정의가 존재하지만 대표적인 정의는 다음과 같다.

전체 표본 개수가 $N$인 경우,

  • $N$이 홀수이면: 중앙값은 $(n + 1)/2$번째 표본의 값
  • $N$이 짝수이면: 중앙값은 $n/2$번째 표본의 값과 $n/2 + 1$번째 표본의 값의 평균

예를 들어 99명의 최고혈압을 측정한 데이터가 가장 낮은 값부터 가장 높은 값까지 순서대로 정렬했을 때 50번째 사람의 최고혈압이 이 데이터의 샘플중앙값이 된다. 사람 수가 100명이라면 50번째 데이터와 51번째 데이터의 평균값을 사용한다.

표본최빈값

표본최빈값(most frequent value, sample mode)은 데이터값 중 가장 빈번하게 나오는 값을 말한다. 혈액형, 나이, 남녀 구분 등 유한한 종류의 값만 있는 데이터에서는 최빈값을 쉽게 구할 수 있지만 혈압, 키, 몸무게 등 연속적인 값을 가지는 데이터에서는 (정밀도가 무한히 높다는 가정하에) 똑같은 값이 나올 확률이 아주 작기 때문에 최빈값을 구하기 어렵고 의미도 없다. 따라서 연속적인 값의 경우에는 일정한 구간 간격으로 나누어 가장 많은 데이터를 가진 구간의 대푯값을 그 데이터의 최빈값으로 가정하는 방법을 많이 사용한다. 하지만 이 방법도 구간을 어떻게 나누는가에 따라 달라질 수 있기 때문에 신뢰할 수 있는 방법이 아니다.

파이썬을 사용한 대푯값 계산

파이썬에서는 다음과 같은 NumPy 함수를 사용하여 각종 대푯값을 계산할 수 있다.

  • mean(): 표본평균 계산
  • median(): 표본중앙값 계산
  • argmax(): 이산데이터의 표본최빈값 계산
  • histogram(): 데이터를 구간으로 나누어 각 구간에 들어가는 데이터개수 계산.

예를 들어 다음과 같은 21개 데이터가 있다고 하자.

In [1]:
np.random.seed(0)
x = np.random.normal(size=21)
x
Out:
array([ 1.76405235,  0.40015721,  0.97873798,  2.2408932 ,  1.86755799,
       -0.97727788,  0.95008842, -0.15135721, -0.10321885,  0.4105985 ,
        0.14404357,  1.45427351,  0.76103773,  0.12167502,  0.44386323,
        0.33367433,  1.49407907, -0.20515826,  0.3130677 , -0.85409574,
       -2.55298982])

이 데이터를 -4부터 4까지 0.5 크기의 구간을 가진 히스토그램으로 나타내면 다음과 같다.

In [2]:
bins = np.linspace(-4, 4, 17)
sns.distplot(x, rug=True, kde=False, bins=bins)
plt.title("히스토그램으로 나타낸 데이터 분포")
plt.xlabel("x")
plt.show()

표본평균과 표본중앙값은 다음처럼 구한다.

In [3]:
print("표본평균 = {}, 표본중앙값 = {}".format(np.mean(x), np.median(x)))
표본평균 = 0.4206524782418389, 표본중앙값 = 0.4001572083672233

하지만 연속데이터에 대한 최빈값은 의미 없는 숫자가 나오므로 구간으로 나누어 최빈구간을 구해야 한다.

In [4]:
m = x[np.argmax(x)]
ns, _ = np.histogram(x, bins=bins)
m_bin = np.argmax(ns)
print("최빈값 = {}, 최빈구간 = {}~{}".format(m, bins[m_bin], bins[m_bin + 1]))
최빈값 = 2.240893199201458, 최빈구간 = 0.0~0.5

단봉분포와 다봉분포

분포의 모양에서 봉우리가 하나이면 단봉(uni-modal)분포, 봉우리가 여럿이면 다봉(multi-modal)분포라고 한다.

연습 문제 7.1.1

다음 명령으로 붓꽃의 꽃잎 길이(petal length) 데이터를 구하고 히스토그램을 그려 분포의 모양을 살핀다.

from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
sy = pd.Series(iris.target, dtype="category")
sy = sy.cat.rename_categories(iris.target_names)
df['species'] = sy

(1) 꽃잎 길이의 분포는 단봉분포인가 다봉분포인가?

(2) 데이터프레임에서 종(species) 이 virginica인 데이터만 뽑아서 히스토그램을 그려라. 이 분포는 단봉분포인가 다봉분포인가?

대칭분포

표본평균, 표본중앙값, 표본최빈값은 분포의 모양에 따라 다음과 같은 특성을 보인다.

  • 분포가 표본평균을 기준으로 대칭인 대칭(symmetric)분포이면 표본중앙값은 표본평균과 같다.
  • 분포가 대칭분포이면서 하나의 최고값만을 가지는 단봉분포이면 표본최빈값은 표본평균과 같다.
  • 대칭분포를 비대칭으로 만드는 데이터가 더해지면 표본평균이 가장 크게 영향을 받고 표본최빈값이 가장 적게 영향을 받는다.

다음 히스토그램은 대칭인 분포를 비대칭으로 만드는 데이터가 더해졌을 때 표본평균, 표본중앙값, 표본최빈값이 어떻게 변하는지를 보인다.

In [5]:
np.random.seed(1)
x = np.random.normal(size=1000)
x = np.hstack([x, 5 * np.ones(50)])
bins = np.linspace(-6, 6, 12 * 4 + 1)
ns, _ = np.histogram(x, bins=bins)

sample_mean = np.mean(x)
sample_median = np.median(x)
mode_index = np.argmax(ns)
sample_mode = 0.5 * (bins[mode_index] + bins[mode_index + 1])

sns.distplot(x, bins=bins)
plt.axvline(sample_mean, c='k', ls=":", label="표본평균")
plt.axvline(sample_median, c='k', ls="--", label="표본중앙값")
plt.axvline(sample_mode, c='k', ls="-", label="표본최빈값")
plt.title("표본평균, 표본중앙값, 표본최빈값의 차이")
plt.xlabel("x")
plt.legend()
plt.show()

연습 문제 7.1.2

(1) 붓꽃의 꽃잎 길이(petal length) 데이터에 대해 표본평균, 표본중앙값, 표본최빈값을 구하고 위와 같이 그림으로 그려라.

(2) 히스토그램의 구간 수를 2배, 10배, 20배로 세분화하여 다시 표본최빈값을 구하라. 표본최빈값이 어떻게 달라지는가?

분산과 표준편차

앞에서 정상인의 최고혈압 대푯값은 120이라고 했다. 그렇다면 어떤 사람의 최고혈압이 130이 나왔다면 그 사람은 정상이라고 할 수 없는 것일까? 이러한 판단을 하려면 데이터가 얼마나 변동(variation)하고 있는지를 알아야 한다. 이러한 정보를 알려주는 특징값이 표본분산(sample variance) 또는 표본표준편차(sample standard deviation)이다. 평균이나 기댓값이 분포의 위치를 대표하는 것이라면 분산은 분포의 폭(width)을 대표하는 값이다. 표준편차는 분산에 대한 양의 제곱근(square root)값이다.

$$ \text{standard deviation} = \sqrt{\text{variance}} $$

표본분산은 다음처럼 구한다. 식에서 $\bar{x}$은 표본평균이다.

$$ \begin{align} s^2 = \dfrac{1}{N}\sum_{i=1}^{N} (x_i-\bar{x})^2 \tag{7.1.2} \end{align} $$

다음 그림에서 볼 수 있듯이 이 식은 자료값과 평균 사이의 거리를 의미한다. 다만 자료값이 평균보다 작을 때는 음수가 나오므로 제곱을 하여 모두 양수로 만들어준 것이다.

만약 분포가 하나의 대푯값 근처에 모여있다면 대부분의 데이터는 "대푯값 $\pm$ 표준편차" 범위 안에 있다. 참고로 정상인의 최고혈압의 표준편차는 약 20이다. 따라서 대다수의 최고혈압 데이터는 $12 \pm 20$ 범위 안에 있다고 할 수 있으므로 130이라는 숫자는 비정상이라고 보기 힘들다.

그림 7.1.1 : 표본분산과 표본표준편차

위 식에서 구한 표본분산은 정확하게 말하면 편향오차를 가진 편향 표본분산(biased sample variance)이다. 이와 대조되는 비편향 표본분산(unbiased sample variance)은 다음과 같이 구한다.

$$ \begin{align} s^2_{\text{unbiased}} = \dfrac{1}{N-1}\sum_{i=1}^{N} (x_i-\bar{x})^2 \tag{7.1.3} \end{align} $$

파이썬을 사용한 표본분산 및 표본표준편차의 계산

파이썬에서 표본분산과 표본표준편차를 구할 때는 다음 함수를 사용한다. ddof 인수를 이용하면 비편향 표본분산과 표본표준편차를 구할 수 있다.

In [6]:
sp.random.seed(0)
x = sp.stats.norm(0, 2).rvs(1000)  # 평균=0, 표준편차=2 인 정규분포 데이터 생성
In [7]:
np.var(x), np.std(x) # 편향 표본분산, 표본표준편차
Out:
(3.896937825248617, 1.9740663173380515)
In [8]:
np.var(x, ddof=1), np.std(x, ddof=1)  # 비편향 표본분산, 표본표준편차
Out:
(3.900838663912529, 1.9750540913890255)

표본비대칭도

평균과의 거리의 세제곱을 이용하여 구한 특징값을 표본비대칭도(sample skewness)라고 한다. 표본비대칭도가 0이면 분포가 대칭이다. 표본비대칭도가 음수면 표본평균값을 기준으로 왼쪽에 있는 값을 가진 표본이 나올 가능성이 더 많다는 뜻이다.

$$ \begin{align} \text{sample sknewness} = \frac{\tfrac{1}{N} \sum_{i=1}^N (x_i-\overline{x})^3}{ \sqrt{\tfrac{1}{N-1} \sum_{i=1}^N (x_i-\overline{x})^2}^{\,3}} \tag{7.1.4} \end{align} $$

그림 7.1.2 : 분포에 따른 표본비대칭도

표본첨도

평균과의 거리의 네제곱을 이용하여 구한 특징값을 표본첨도(sample kurtosis)라고 한다. 표본첨도는 데이터가 중앙에 몰려있는 정도를 정밀하게 비교하기 위해 쓰인다. 사람의 눈으로 첨도를 구별하는 것은 어렵다.

$$ \begin{align} \text{sample kurtosis} = \frac{\tfrac{1}{N} \sum_{i=1}^N (x_i - \overline{x})^4}{\left(\tfrac{1}{N} \sum_{i=1}^N (x_i - \overline{x})^2\right)^2} - 3 \tag{7.1.5} \end{align} $$

표본모멘트

분산, 비대칭도, 첨도를 구하기 위해 제곱, 세제곱, 네제곱을 하는 것처럼 $k$제곱을 이용하여 구한 모멘트를 $k$차 표본모멘트(sample moment)라고 한다.

$$ \begin{align} \text{sample moment} = \frac{1}{N}\sum_{i = 1}^{N} x^k_i \tag{7.1.6} \end{align} $$$$ $$

2차 표본모멘트 이상은 평균을 뺀 표본중앙모멘트(sample centered moment)값을 사용하기도 있다.

$$ \begin{align} \text{sample centered moment} = \frac{1}{N}\sum_{i = 1}^{N} (x_i - \bar{x})^k \tag{7.1.7} \end{align} $$$$ $$

따라서 평균은 1차 모멘트, 분산은 2차 모멘트, 비대칭도와 첨도는 3차 모멘트와 4차 모멘트에서 유도된 값이다.

확률적 데이터의 비교

현실 세계에서 어떤 고정된 모집합 또는 물리적 대상으로부터 데이터를 수집하는 경우를 생각하자. 이러한 데이터는 측정 시마다 달라질 수 있는 확률적 데이터다. 예를 들어 두 사람의 연구원이 동일한 엔진으로 10번씩 자동차 엔진의 오염물질 배출량을 아주 높은 정밀도로 측정했다고 가정하자. 모든 조건을 동일하게 하도록 노력을 한다고 하더라도 항상 미세하게나마 다른 값이 나올 것이다. 즉 두 데이터 집합 각각에 포함된 숫자 10개, 통틀어 숫자 20개 중에서 같은 숫자는 없을 것이다. 하지만 만약 같은 엔진으로 실행한다면 두 데이터 집합이 내포하는 본질적인 정보는 같아야 한다.

그렇다면 데이터 집합에서 본질적인 정보란 무엇인가? 바로 데이터 분포다. 데이터 하나하나의 값이 다르더라도 두 데이터 집합의 분포가 같다면 같은 정보를 내포하고 있다고 본다.

따라서 두 확률적 데이터를 비교할 때는 기술통계값을 사용하여 분포를 비교한다. 만약 무한대까지의 모든 차수의 분포 표본모멘트값이 완전히 같다면 두 데이터 집합은 완전히 동일한 정보를 가지고 있다. 하지만 현실적으로는 보통 평균, 분산, 비대칭도, 첨도까지의 4차 표본모멘트의 값이 비슷하면 같은 확률적 데이터로 본다.

기술통계값의 분포

표본평균과 같은 기술통계값은 표본집합이 달라지면 같이 달라지며 어떤 값이 나올지 예측할 수 없으므로 기술통계값 자체도 확률적 데이터다. 데이터 분석에서는 데이터 자체의 분포뿐 아니라 이 분포를 설명하는 기술통계값의 분포도 중요하다.

연습 문제 7.1.3

  1. 넘파이를 사용하여 100개의 숫자를 무작위로 생성한 후 히스토그램을 그리고 표본평균을 구한다.
  2. 1번과 같이 숫자 100개 생성 및 표본평균 계산을 50번 반복하여 표본평균 50개를 구한다.
  3. 2번에서 구한 표본평균 50개의 히스토그램을 그리고 1번에서 구한 히스토그램과 겹쳐서 그린다.

데이터 모형

확률적 데이터는 어떤 실험(experiment) 행위에 의해 얻어지는 경우가 많다. 예를 들어

  • 주사위를 던지는 실험
  • 자동차 엔진의 출력을 측정하는 실험
  • 혈압을 측정하는 실험

등을 같은 조건에서 여러 번 반복하여 확률적 데이터를 얻을 수 있다. 이 확률적 데이터들에는 데이터를 생성하게 한 주사위, 자동차 엔진, 사람 등의 데이터 생성기(data generator)가 명확하게 존재한다.

이러한 상황을 더 확장하면 데이터가 숫자로만 주어지고 그 데이터가 어떤 과정을 통해 얻어졌는지 전혀 알지 못한다고 해도 앞에서 예로 든 주사위, 자동차 엔진처럼 이 데이터를 생성한 무언가가 존재한다고 가정할 수 있다. 데이터 모형(data model)은 해당 데이터를 만들어내는 가상의 데이터 생성기를 말한다.

데이터 모형이 갖추어야 할 조건은 다음과 같다.

  • 해당 데이터와 분포(distribution)가 같은 데이터를 만들 수 있어야 한다.
  • 데이터 분포를 수학적으로 기술할 수 있고 알고리즘을 사용하여 데이터 표본을 구할 수 있어야 한다.

데이터 모형에 따르면 두 개의 데이터 집합의 분포가 완전히 같으면 같은 데이터 모형(생성기)으로부터 나온 것이다. 만약 어떤 수학적인 방법으로 우리가 가진 데이터와 완전히 같은 분포 특성을 가지는 데이터를 만들 수 있다면 그 데이터의 모형(생성기)을 확보한 것이다.

확률변수

가장 단순한 데이터 모형은 확률변수(random variable)다. 확률변수의 수학적 정의는 확률이 정의된 표본공간의 모든 표본을 실수인 숫자로 바꾸는 함수다.

$$ \begin{align} \omega \in \Omega \;\;\; \xrightarrow{\text{random variable}} \;\; x \in \mathbf{R} \tag{7.1.8} \end{align} $$

보통은 $X$ 등의 대문자 알파벳을 사용하여 확률변수를 표기한다. 확률변수에 의해 할당된 실수는 $x$와 같이 소문자 알파벳으로 표시한다. 경우에 따라서는 소문자 알파벳으로 확률변수를 표기하는 경우도 있다.

$$ \begin{align} X(\omega) = x \;\; (x \in \mathbf{R}) \tag{7.1.9} \end{align} $$

이산확률변수

플레잉카드에서 나올 수 있는 모든 무늬(suit)의 집합인 표본집합 $\{\spadesuit, \heartsuit, \diamondsuit, \clubsuit\}$ 내의 모든 표본에 대해 다음과 같이 숫자를 할당하면 1부터 4까지 값을 가지는 확률변수가 된다. 이렇게 확률변수값이 연속적(continuous)이지 않고 떨어져(discrete) 있도록 정의할 수 있으면 이산확률변수(discrete random variable)라고 한다.

$$ \begin{eqnarray} X(\spadesuit) &=& 1 \\ X(\heartsuit) &=& 2 \\ X(\diamondsuit) &=& 3 \\ X(\clubsuit) &=& 4 \end{eqnarray} $$

표본공간의 원소의 개수가 무한대인 경우도 이산확률변수가 될 수 있다. 예를 들어 기하 분포(geometric distribution)나 포아송 분포(Poisson distribution) 등은 양의 정수값을 가지는 이산 분포이지만 무한한 개수의 양의 정수가 0이 아닌 확률을 가질 수 있다.

연속확률변수

주사위가 아닌 원반의 각도 문제처럼 연속적이고 무한대의 실수 표본값을 가지는 확률변수를 연속확률변수(continuous random variable)라고 한다. 모든 표본이 실수인 숫자로 변한다면 모든 사건은 구간사건의 조합으로 표시된다. 즉, 확률이 어떻게 할당되었는가를 나타내는 정보인 확률분포를 수학적인 확률분포함수로 나타낼 수 있다는 뜻이다.

확률변수와 데이터

현실적으로는 확률변수를 실수인 데이터를 생성하는 주사위같은 데이터생성기로 생각하면 된다. 다만 반드시 확률분포함수가 존재해야 한다. 몇가지 확률변수의 예를 들어보자.

  • 공정한 주사위에서 나오는 숫자는 1부터 6까지의 숫자가 나오고 균일분포 확률분포함수를 가진 이산확률변수다.
  • 정상인의 최고혈압은 실수가 나오고 120 mmHg 근처에서 기댓값을 가지는 단봉분포 모양의 확률분포함수를 가진 연속확률변수다.

데이터 모형에 따르면 우리가 가진 현실 세계의 데이터는 확률변수가 가진 확률분포에 따라 실수 표본공간에서 선택된 표본이다. 이렇게 확률분포함수에 따라 표본공간의 표본이 현실 세계의 데이터로 선택되는 것을 실현(realization) 혹은 표본화(sampling)라고 한다. 표본화는 다른 의미로도 사용되는데 많은 수의 데이터 집합에서 일부 데이터만 선택하는 과정도 표본화라고 한다.

실현은 이상적이고(ideal), 추상적이며(abstract), 수학적인(mathematical) 세계에서 현실로 넘어가는 과정이다. 확률변수라는 데이터 모형에 따르면 현실의 표본 데이터는 이러한 수학적인 세계가 현실 세계에 투영된 그림자에 지나지 않는다. 따라서 히스토그램이나 기술통계 등 분포의 특성이 깨끗한 형태를 지니지 않지만 이는 실현 혹은 표본화 과정에서 생긴 잡음일 뿐이면 그 내면에는 원래의 수학적 특성을 내포하고 있다.

따라서 확률변수와 실제 데이터는 다음과 같은 관계가 있다.

  • 확률변수로부터 데이터를 여러 번 생성하는 경우 실제 데이터 값은 매번 달라질 수 있지만 확률 모형 자체는 변하지 않는다.
  • 확률변수의 확률분포함수는 우리가 직접 관찰할 수 없다. 다만 확률변수에서 만들어지는 실제 데이터 값을 이용하여 확률분포함수가 이러한 것일 거라고 추정할 뿐이다.
  • 확률변수에서 만들어 지는 실제 데이터값은 확률변수가 가진 특성을 반영하고 있다. 데이터 개수가 적을수록 확률변수가 가진 특징을 정확하게 표현하지 못하지만 데이터 개수가 증가하면 보다 정확하게 확률분포함수를 묘사할 수 있게 된다.

그림 7.1.3 : 확률변수

연습 문제 7.1.4

위에서 구한 붓꽃 데이터에서는 몇 개의 확률변수를 정의할 수 있는가? 각 확률변수의 기술통계값을 구하라.

확률변수를 사용한 데이터 분석

확률변수를 사용하게 되면 데이터 분석은 보통 다음과 같은 순서로 이루어진다.

  1. 데이터를 확보한다.
  2. 확보된 데이터를 어떤 확률변수의 표본으로 가정한다.
  3. 데이터의 특성으로부터 확률변수의 특성을 추정한다.
  4. 구해진 확률변수의 특성으로 해당 확률분포함수의 모양을 결정하고 모수를 추정한다.
  5. 구해진 확률변수으로부터 다음에 생성될 데이터나 데이터 특성을 예측한다.

즉 데이터를 확률변수라고 가정하고 데이터값에서 확률변수의 확률분포함수를 역설계(reverse-engineering)하여 만들어내는 것이 데이터 분석의 1차 목표다.

질문/덧글

질문 skyj*** 2018년 7월 21일 8:37 오전

"두 확률적 데이터의 비교"에서 질문이 있습니다.
"평균, 분산, 왜도, 첨도까지의 1~4차 모멘트가 같으면 같은 확률적 데이터로 보는 것이 일반적이다." 라고 하셨는데요.
"같다"에 대해 명확하게 이해가 안되는 부분이 있습니다. 제가 이해하기론 소수점자리수 까지 같아야 한다라는 것을 의미한 것은 아닌것 같아서요.
같다는 것을 보이려면 샘플 t-test나 signed rank test 같은 걸로 확률적으로 유의미한 차이가 없다는 것을 보이면 되려나요?
감사합니다.

답변: 질문 관리자 2018년 7월 21일 8:45 오전

signed rank test는 두 paired set이 같은 분포에서 나왔다는 것을 보이는 non-parametric test이고 본문에서 이야기하고자 하는 것은 그런 방법을 쓰지 않고 단순히 mean-equality test, variance-equality test 등을 사용하여 일정 차수 이상의 모멘트값만 같으면 관행적으로(practically) 같은 분포에서 나온 것으로 본다는 의미입니다.

질문 gus8*** 2019년 2월 26일 5:28 오후

항상 좋은 강의 잘 보고 있습니다.
그런데 np.argmax 메소드는 넘파이 행렬 내에서 최대값을 구하는 메소드 아닌가요? 이로 어떻게 최빈값을 구할 수 있나요?

답변: 질문 관리자 2019년 2월 26일 8:49 오후

히스토그램의 높이(y)가 가장 높은 위치(x)를 찾습니다.