빅데이터 시대가 되면서 표본추출(표집, 샘플링)이 더는 필요하지 않게 될 거라고 생각하는 것은 오해다. 데이터의 질과 적합성을 일정 수준 이상으로 담보할 수 없는데도 데이터 크기만 늘어나는 것이 오늘날의 일반적인 상황이기 때문.
따라서 다양한 데이터를 효과적으로 다루기 위한 표본추출의 필요성은 오히려 이전보다 더 커지고 있다고 보는 것이 옳다. 전통적인 통계학에서 표본으로부터 모집단을 추정하는 것에 초점을 맞춰왔다면, 현대의 통계학에서는 표본 자체에 대한 연구로 방향이 옮겨지는 추세다.
표본은 더 큰 데이터 집합으로부터 얻은 데이터의 부분집합이다. 이 '더 큰 데이터 집합'을 통계학에서는 모집단이라고 부른다.
임의표본추출은 모집단 내의 선택 가능한 원소들을 무작위로 추출하는 과정을 말하며, 각 추첨 과정에서 모든 원소가 뽑힐 확률은 동일하다. 이 결과로 얻은 샘플을 단순임의표본이라고 한다.
추첨 후 다음번에도 또 뽑힐 수 있도록 해당 샘플을 다시 모집단에 포함시키면 복원추출with replacement, 아니면 비복원추출without replacement이다.
다만, 이 '다시 포함시킨다'는 말 때문에 복원추출과 비복원추출에 대한 오해가 생길 수도 있다. 최대한 오해가 없게 다시 정의해 보면,
비복원추출 : 크기가 n인 표본을 뽑기 위해, n개의 원소를 하나씩 뽑는다. 원소 하나를 뽑을 때마다 복원하지 않고 다음 원소를 뽑는다. n개의 원소를 다 뽑으면 모집단에 돌려놓는다.
복원추출 : 크기가 n인 표본을 뽑기 위해, n개의 원소를 하나씩 뽑는다. 원소 하나를 뽑을 때마다 복원하고 다음 원소를 뽑는다. n개의 원소를 다 뽑으면 모집단에 돌려놓는다.
핵심은 '뽑을 때' 복원이 적용되느냐의 여부.
데이터의 대표성을 담보하는 방법에는 여러 가지가 있지만, 결국 핵심은 임의표본추출이다. 다만 임의표본추출을 잘 하기 위해서는 접근 가능한 모집단을 적절하게 정의할 수 있어야 하고, 표본추출 절차도 정교하게 정해두어야 한다.
층화표본추출에서는 모집단을 여러 층으로 나누고 층에서 무작위로 샘플을 추출한다. 예를 들어 어떤 정치 설문에서 백인, 흑인, 라틴계 유권자들의 투표 성향을 조사한다고 했을 때, 단순임의표본에서는 흑인과 라틴계 인구가 지역에 따라 너무 적게 나올 수 있다. 이 경우 해당 층에 높은 가중치를 두는 표본추출을 통해 계층마다 동일한 표본크기를 얻을 수 있다.
선택편향은 데이터를 의식적이든 무의식적이든 선택적으로 고르는 관행을 말한다. 어떤 가설을 세우고 그 가설을 시험하기 위해 잘 설계된 실험을 수행한다면 그 결과에 대해 강하게 확신할 수 있다. 하지만 이런 경우는 극히 드물고, 보통은 가지고 있는 데이터를 먼저 확인한 후 그 안에서 패턴을 찾고자 한다.
1의 결과로 뭔가 패턴이 나오더라도 그것이 원래 데이터가 갖고 있던 참된 패턴인지, 아니면 단순히 데이터 스누핑을 통해 나온 결과인지는 알 수 없다. 뭔가 흥미로운 것이 나올 때까지 데이터를 너무 샅샅이 뒤진 결과가 아닐지 의심할 필요가 있단 얘기.
빅데이터를 반복적으로 조사하는 것이 데이터 과학의 중요한 가치 명제로 받아들여지기 때문에, 선택편향에 대해 조심할 필요가 있다. 선택편향을 일으킬 수 있는 여러가지 상황은 비임의표본추출, 데이터 체리피킹, 특정한 통계적 효과를 강조하는 시계열 선택, 그럴듯한 결과가 나왔을 때 실험 중단하기 등이다. 어째 한번씩은 다 해본 것 같다.
통계의 표본분포는 하나의 동일한 모집단에서 얻은 여러 샘플에 대한 표본통계량의 분포를 나타낸다.
평균과 같은 표본통계량의 분포는 데이터 자체의 분포보다 규칙적이고 종 모양일 가능성이 높다. 통계의 기반이 되는 표본이 클수록 그렇고, 표본통계량의 분포가 좁아진다.
아래 히스토그램은 랜딩 클럽에 대출을 신청한 사람들을 평가하기 위해 연간 소득 정보를 활용하는 예시다. 이 데이터로부터
1. 단순히 1,000개의 값으로 이루어진 표본
2. 5개 값의 평균 1,000개로 이루어진 표본
3. 20개 값의 평균 1,000개로 이루어진 표본
이렇게 세 개의 표본을 뽑는다고 가정해 보자.
read_csv의 결과를 데이터프레임으로 받을 게 아니라 series로 받을 거라서 제일 뒤에 squeeze('columns')를 추가해 주었다.
개별 데이터들의 히스토그램은 넓게 분산되어 있고 한쪽으로 쏠려있는 반면, 5개와 20개의 평균값을 기준으로 그린 히스토그램은 갈수록 좁고 종 모양을 띤다.
3에서 설명한 현상을 중심극한정리라고 한다. 모집단이 정규분포를 따르지 않더라도, 표본 크기가 충분하고 데이터가 정규성을 크게 이탈하지 않는다면 여러 표본에서 추출한 평균이 정규분포를 따른다는 의미다. (표본의 분포가 아니라 표본평균의 분포가 정규분포를 따른다는 것에 주의)
표준오차는 통계에 대한 표본분포의 변동성을 하나로 압축해서 보여주는 단일 측정지표metric다. 표본값들의 표준편차 s와 표본크기 n을 알고 있다면, 표준오차는 s를 n의 제곱근으로 나누어 구할 수 있다.
통계량이나 모델 파라미터의 표본분포를 추정하는 쉽고 효과적인 방법은 현재 있는 표본에서 추가적으로 표본을 복원추출하고 각 표본에 대한 통계량과 모델을 다시 계산하는 것이다. 이 방법을 부트스트랩bootstrap이라고 하며, 이 때 데이터나 표본통계량이 꼭 정규분포를 따라야 하는 것은 아니다.
부트스트랩은 재표본화resampling 기법 중 하나로, 원래 표본을 수천, 수만 번 복제하는 것이라고 관념적으로 이해할 수 있다. 다만 실제로 표본을 복제한다는 것은 아니고, 각 표본을 뽑은 후 다시 원래 표본의 자리로 돌려놓는, 즉 복원추출의 원리를 이용하는 것이다. 부트스트랩 방식의 재표본추출 알고리즘은 아래와 같다.
부트스트래핑의 반복횟수 R은 임의로 설정한다. R이 클수록 표준오차나 신뢰구간에 대한 추정이 더 정확해진다. 판다스에서는 직접적으로 부트스트래핑을 수행할 수 있는 라이브러리는 없고, 사이킷런의 resample 메서드를 이용해 구현할 수 있다.
부트스트래핑을 1,000회 수행했을 때 기준으로, 중간값의 원래 추정치는 62,000달러인데, 부트스트랩 분포는 추정치에서 약 -72달러의 편향bias이 있고, 약 214달러의 표준오차가 있는 것으로 나타난다.
다변량 데이터에도 부트스트랩을 적용할 수 있다. 여기서의 각 행은 여러 변수들의 값을 포함하는 하나의 샘플을 의미한다. 의사결정 트리Decision tree를 사용할 때 여러 부트스트랩 샘플을 갖고 트리를 여러 개 만든 다음 각 트리에서 나온 예측값을 평균하는 것이 단일 트리를 사용하는 것보다 일반적으로 더 효과적인데, 이 기법을 배깅이라고 부른다.
신뢰구간은 구간 범위로 추정값을 표시하는 일반적인 방법이다. 사람들은 불확실성을 인정하면서도 어떤 단일 수치(점추정)로 제시될 때 추정치에 과도한 믿음을 보내는 경향이 있는데, 구간 단위로 추정치를 제시하는 것이 이러한 경향을 막는 방법이 될 수 있다. 신뢰구간은 통계적 샘플링 원칙에 근거한다.
신뢰구간은 항상 90%, 혹은 95%와 같이 백분율로 포함되는 포함 수준과 함께 나온다. 예컨대 90% 신뢰구간이란 표본통계량의 부트스트랩 표본분포의 90%를 포함하는 구간을 말한다.
신뢰구간과 관련된 백분율을 신뢰수준이라고 부른다. 신뢰수준이 높을수록 구간이 더 넓어진다. 또, 표본이 작을수록 구간이 넓어진다. (즉, 불확실성이 더 커진다.) 이 두 가지는 충돌하는 문장이 아닌데, 더 확실할수록, 데이터가 적을수록, 확실히 참값을 얻기에 충분한 신뢰구간을 확보해야 한다.
전통적인 통계의 상징인 종 모양의 정규분포Normal distribution는 확률, 통계에 관련된 여러 가지 수학 공식을 개발하는 데 중요한 전제이자 강력한 도구가 된다.
어떤 데이터가 정규분포를 따른다면, 전체 데이터의 68%는 평균의 표준편차 내에 확률적으로 속한다. 전체 데이터의 95%는 표준편차 2배수 내에 있다. 데이터의 99.7%는 평균의 표준편차 3배수 내에 있다.
정규분포 중에서도 x축의 단위가 평균의 표준편차로 표현되는 정규분포를 표준정규분포라고 부르는데, 데이터를 표준정규분포와 비교하려면 데이터에서 평균을 뺀 다음 표준편차로 나누면 된다. 이 과정을 정규화normalization 또는 표준화standardization라고 한다. 이렇게 변환한 값을 z 점수z-score라고 하며, 정규분포를 z 분포z-distribution라고도 한다.
표본이 특정 분포(예컨대 정규분포)에 얼마나 가까운지를 시각적으로 보고 싶으면 QQ 그림을 그려보면 된다.
아래는 QQ 그림을 그려본 예시.
데이터와 표본분포 파트는 내용이 많아서 1,2로 잘라서 올릴 예정.
최종프로젝트 중이지만 짬이 날 때마다 부지런히 달려보자🔥