# 기초 통계 - 데이터를 수집하고 표본 추출하는 방법 - 중심의 측정, 분산, 상대적 비교 - z-score를 사용해 데이터 정규화 - 경험적 법칙 ## 통계란? 통계 분야의 목표는 우리 주변의 세계를 설명하고 모델화하는 것이다. 그렇게 하려면 모집단을 살펴봐야 한다. 실험이나 모델의 전체 주제로서 `모집단`population 을 정의할 수 있다. 예를 들어 1000명의 직원에게 모두 물어보고 100명이 약물을 사용 중이라면 약물 사용률은 10%다. 여기에서 모수는 10%다. 통계는 모집단의 표본이 가진 특성을 설명하는 수치적 측정치로 정의할 수 있다. 통계는 단지 모수의 추정치다. 모집단의 하위 집합을 설명해 전체 모집단을 설명하려고 시도하는 숫자다. ## 데이터를 얻고 표본 추출하는 방법 ### 데이터 얻기 분석을 위해 데이터를 수집하는 두 가지 주요 방법이 있는데, `관측` 및 `실험`이다. #### 관측 구체적인 특성을 측정하지만 연구 대상을 변경하지 않을 경우 `관측`Observational 방법을 통해 데이터를 얻을 수 있다. #### 실험 `실험`Experimental은 대상에 대한 효과를 관측하고 처리하는 것으로 구성된다. 실험의 대상을 실험 단위라고 한다. ## 표본 추출 데이터 통계는 모집단의 표본을 측정한 결과라는 것을 기억하자. 측정하는 표본을 무엇으로 할지 결정하는 매우 일반적인 방법 두 가지에 대해 이야기하려고 한다. 이 절에서는 표본 크기와 표본 구성원을 결정하는 가장 일반적인 방법인 무작위 표본 추출이라는 주요 표본 추출 유형에 대해 설명한다. ### 확률 표본 추출 확률 표본 추출은 모집단에서 표본을 추출하는 방법으로, 모든 사람이 선택될 가능성이 있지만, 그 확률의 수는 사용자마다 다를 수 있다. 가장 간단한 확률 표본 추출법은 무작위 표본 추출이다. ### 무작위 표본 추출 `교란 요인`confounding factor 은 직접 측정하는 것이 아니라 측정되는 변수를 연결하는 변수다. #### 불균등 확률 표본 추출 ## 통계를 측정하는 방법 ### 중심 측정 중심의 측정은 데이터셋의 가운데 또는 중심을 정의하는 방법이다. 중심 측정값은 데이터셋의 '가운데' 값이다. #### 편차 측정 중심의 측정은 데이터의 가운데를 정량화하는 데 사용되지만, 이제는 수집한 데이터가 어떻게 '퍼져 있는가'를 측정하는 방법을 모색할 것이다. 표준 편자를 계산 하는 일반적인 수식은 다음과 같다. $$ s = \frac{\sum(x-\bar{x})^2}{n} $$ 여기서는 다음과 같다. - s 는 표본 표준 편차다. - x 는 각각의 개별 데이터 포인트이다. - $\bar{x}$ 는 데이터의 평균이다. - n 은 데이터 포인트의 수다. 파이썬 접근 방식을 취하면 프로그래밍 방식으로 이 모든 작업을 수행할 수 있다. ```python np.std(friends) # == 425.2 ``` ### 상대적 위치의 측정 상대적 위치의 척도를 만들기 위해 중심과 편차의 척도를 결합할 수 있다. 전체 데이터셋과 관련해서 특정 데이터 값이 위치하는 것을 측정하는 것이 `편차 측정값`measure of variation이다. 통계에서 매우 중요한 값인 z-score를 알아보자. z-score 는 단일 데이터 값이 평균으로부터 얼마나 멀리 떨어져 있는지 알려주는 방법이다. x 데이터 값의 z-score 는 다음과 같다. $$ z = \frac{x-\bar{x}}{s} $$ - x 는 데이터 포인트다. - $\bar{x}$ 는 평균이다. - s 는 표준 편차다. ```python z_scores = [] m = np.mean(friends) s = np.std(friends) for friend in friends: z = (friend - m)/s z_scores.append(z) ``` 데이터의 성격을 감안할 때 가설에는 다음과 같은 세 가지 옵션만 있다. - 온라인 친구들의 수와 행복 사이에 긍정적인 연관성이 있다. (하나가 올라갈 때 다른 하나도 올라간다) - 그들 사이에 부정적인 연관성이 있다. (친구의 수가 늘어나면 행복이 줄어든다.) - 변수 간에 연관성이 없다 (하나가 변경될 때 다른 하나는 실제로 그렇게 많이 변경되지 않는다.) `상관 계수` correlation coefficients 는 두 변수 간 연관성/관계의 강도를 설명하는 양적 측정이다. ```python friends = [109, 1017, 1127, 418, 625, 957, 89, 950, 946, 797, 981, 125, 455, 731, 1640, 485, 1309, 472, 1132, 1773, 906, 531, 742, 621] happiness = [.8, .6, .3, .6, .6, .4, .8, .5, .4, .3, .3, .6, .2, .8, 1, .6, .2, .7, .5, .3, .1, 0, .3, 1] import pandas as pd df = pd.DataFrame({'friends':friends, 'happiness':happiness}) df.head() ```
friends happiness
0 109 0.8
1 1017 0.6
2 1127 0.3
3 418 0.6
4 625 0.6
```python # 변수들 사이의 상관관계 df.corr() ```
friends happiness
friends 1.000000 -0.216199
happiness -0.216199 1.000000
```python from sklearn import preprocessing df_scaled = pd.DataFrame(preprocessing.scale(df), columns=['friends_scaled', 'happiness_scaled']) df_scaled.head() ```
friends_scaled happiness_scaled
0 -1.599495 1.153223
1 0.536040 0.394939
2 0.794750 -0.742486
3 -0.872755 0.394939
4 -0.385909 0.394939
```python # 평균의 표준 편차 1 이내의 사람들의 비율 찾기 within_1_std = df_scaled[(df_scaled['friends_scaled'] <= 1) & (df_scaled['friends_scaled'] >= -1)].shape[0] within_1_std / float(df_scaled.shape[0]) ``` 0.75 ```python # 평균의 표준 편차 2 이내의 사람들의 비율 찾기 within_2_std = df_scaled[(df_scaled['friends_scaled'] <= 2) & (df_scaled['friends_scaled'] >= -2)].shape[0] within_2_std / float(df_scaled.shape[0]) ``` 0.9166666666666666 ```python # 평균의 표준 편차 3 이내의 사람들의 비율 찾기 within_3_std = df_scaled[(df_scaled['friends_scaled'] <= 3) & (df_scaled['friends_scaled'] >= -3)].shape[0] within_3_std / float(df_scaled.shape[0]) ``` 1.0