기본 콘텐츠로 건너뛰기

4. 통계적 추정(점추정,구간추정)

Ch1. 점추정

추정량은 우리가 알고 싶어하는 모수를 표본들을 이용하여 단 하나의 점으로 추측하는 통계량입니다. 그 과정을 점추정(Point estimation)이라고 하며, 그렇게 얻어진 통계량을 점주청량(Point estimator)라고 합니다. 점추정량은 다양한 방식으로 구할 수 있습니다.

  • 모평균을 추정하기 위한 표본평균 계산
  • 각 끝의 일정 부분씩은 무시하고 나머지 표본들의 평균 계산(절삭 평균, Trimmed Mean)

등의 방법들이 있습니다. 하지만 가장 많이 쓰는 척도는 표본평균입니다. 그 이유는 대표적으로 수리적인 확장성과 표본평균의 분포를 비교적 쉽게 알 수 있다는 점을 들 수 있습니다.

점추정은 단순히 모평균을 추정하는 것만이 아닌, 회귀식을 추정하였을 때의 회귀계수도 점추정이라고 할 수 있습니다. (회귀분석은 후에 다룰 예정입니다.)

다만, 이런 점추정에도 몇 가지의 장점과 단점이 있습니다.

점추정의 장점
  • 점추정량은 지극히 직관적이다.

통계를 모르는 누군가가 한국의 30대 여성의 평균 수입을 묻는다면 점추정량으로 즉각적인 답을 줄 수 있을 것입니다. 점추정량은 매우 직관적이며 합리적입니다.

  1. 점추정량은 우리가 원하는 수치를 대체할 구체적인 값을 제시해준다.

우리가 통계적인 모델링 혹은 함수를 작성하기 위해 30대 여성 수입의 평균치가 필요하나 모평균을 알 수 없을 때 점추정량으로 간단히 대체할 수 있습니다. 사실상 이는 대부분에 통계이론을 전개하는데 가장 중요한 역할을 합니다. 간단한 예를 말씀드리자면 모분산을 추정하기 위해서는 평균이 필요하기 때문에 표본평균을 이용합니다. 여기서 분산은 각 개별 값들이 평균에서 얼만큼 멀리 떨어져있는지에 대한 척도입니다. 그런데 우리는 '진짜 평균'을 알 수 없으니 아래 식과 같이 표본들의 평균으로 대체하는 것입니다.

여기서 평균 값을 표본평균으로 대체하였기에 표본분산은 n이 아닌 n-1으로 나누어 주게 됩니다. 이해를 돕기 위해 자유도에 대한 개념을 잠깐 다루도록 하겠습니다.

자유도

자유도(degree of freedom)는 자유롭게 값을 선택할 수 있는 데이터의 갯수라고 생각하시면 됩니다. 예를 들어,

  • 4명의 아이들에게 아이스크림을 사주려고 합니다.
  • 하지만 마켓에서 아이스크림은 종류가 다른 4개의 아이스크림밖에 없었습니다.
  • 첫 번째로 골라가는 아이는 4개 중에 먹고 싶은 것을 고를 수가 있습니다.
  • 두 번째로 골라가는 아이는 3개 중에 골라가고, 세 번째 아이는 2개 중에 골라갑니다.
  • 마지막 아이는 남는 것을 먹어야 됩니다.
  • 여기서 아이스크림을 자유롭게 선택한 아이는 총 3명, 자유도는 3이 됩니다.

즉, 이런 상황에서 자유도는 n-1이 됩니다. 그럼 이걸 표본평균을 사용함으로써 자유도를 통해 n-1이 계산되는 이유를 설명해드리면,

여기서 는 확률 실험을 통해 결과 값이 나오게 되는 확률 변수이며, 는 확률 변수의 평균값, 즉 상수(Constant)입니다. 즉 값이 고정되어 있다는 의미입니다. 순차적으로 생각하면, 은 값을 자유롭게 선택할 수 있습니다. ,도 마찬가지입니다. 그렇게 쭉 진행되서 까지, 확률변수 는 자유롭게 값을 선택할 수 있습니다. 하지만 마지막에 해당되는 은 자유롭게 값을 선택할 수가 없습니다. 그 이유는 고정되어 있는 값, 평균()을 맞추어 주는 값을 가져야 하기 때문입니다. 그런 관계로 표본평균을 사용하게 될 시, 자유도는 n이 아닌 n-1로 계산이 됩니다.

  1. 점추정량은 수리적 연산이나 비교에 유연하다.

경우에 따라서는 다른 집단과의 결합이나 다른 집단으로의 분리가 필요할 수 있습니다. 점추정량은 이런 경우에도 유연하게 사용될 수 있습니다.

점추정량의 단점
  1. 점추정량은 그저 하나의 점입니다.

점추정량은 그 이름에서 알 수 있듯이 하나의 점으로 추정합니다.

  • 장점이면서 단점이 될 수 있습니다.

  • 직관적이지만 이 하나의 점만 믿고 다음 분석을 진행하기에는 너무 리스크가 많습니다.

    • 점추정량이 정확하게 모수를 추정하지 않고 동 떨어진 값을 보여줄 수 있을 뿐더러, 설령 정확하게 모수에 근접했다고 하여도 점추정량 하나만 보고서는 그 사실을 알 수 없습니다.
  • 점추정량은 모수를 대체할 수 있다는 장점이 있지만, 만약 모종의 이유로 인해 해당 점추정량 자체가 모수와 멀리 떨어져 있다면 점추정량을 이용해 만든 다른 추정량 및 통계 모형들은 무용지물이 될 수 있습니다.

이렇게 잘못된 판단을 내릴 수 있는 원인이 발생할 위험이 있습니다.

  1. 점추정량은 변동을 가집니다.

통계량 역시 확률변수이며, 확률분포를 가지는 특성이 있습니다. 이는 점추정량은 정해진 값이 아닌 변동(분산)을 갖는다는 것을 의미합니다. 우리가 한국 남성 키라는 모평균을 추정하기 위해 샘플링을 통해 표본평균을 구해보니 170이었다고 합시다. 이 170은 단지 이번 조사에서 나온 값에 불과합니다. 다음 조사에서는 168이 나올 수도 있고 172가 나올 수도 있습니다. 이것이 첨추정량의 변동(분산)이고 이 점추정량의 분포와 표본 수 n에 의하여 결정됩니다.

만약 그냥 점추정량 하나만 보고는 이 점추정량이 얼마나 높은 변동을 갖고 있는지 알 수가 없습니다. 만약 추정량의 변동이 너무 크다면 해당 추정량은 신뢰할 수 없습니다. 다시 조사하면 지금 값과 완전히 다른 값이 나올 것이기 때문이죠. 그렇기에 추정은 꼭 이 추정량의 변동과 함께 보아야 합니다. 이것이 구간추정이자 가설검정의 원리입니다. 자세한 것은 다음 챕터에서 다루도록 하겠습니다.

  1. 너무 적은 표본에서의 점추정량은 의미가 없다.

이는 2번과 근본적으로 같은 이유지만 표본 수라는 관점에서 바라보기 위해 일부러 분류하였습니다. 표본 수가 크지 않다면 어떤 방법을 이용하든 점추정은 이상점에 매우 취약합니다. 정말 말도 안되는 값이 나올 수도 있습니다. 물론 추정 방법에 따라 상대적으로 이상점의 영향을 덜 받는 추정량도 있기는 합니다만 그 어떤 것도 완전히 자유로울 수는 없습니다. 우리는 때때로 매우 적은 양의 표본만을 이용해야 할 때가 있습니다. 이 경우 점추정량을 해석하기 어려운 경우가 많습니다.

Ch2. 구간추정

구간추정(interval estimation)은 점추정량의 변동을 이용해서 어느 정도의 구간을 추정하는 방법으로 그 결과물이 많이 들어보셨을 신뢰구간(confidence interval, C.I)입니다. 신뢰구간의 길이는 당연히 짧으면 짧을 수록 좋고 길면 사실상 실무적으로 아무 의미가 없을 가능성이 큽니다. 구간추정의 방법은 추정량의 분포를 근사 혹은 가정하여 그 확률 구조를 이용하는 방법부터 여러번의 재추출을 통해 경험적인 방법을 이용하는 것까지 다양하지만 여기서는 전자만 다루도록 하겠습니다.

구간추정의 기본적인 원리는 점추정 값에 그 점추정량의 확률 구조와 점추정량의 변동 정도를 가미하는 것입니다. 구간추정의 기본 요소는 다음 3가지라고 할 수 있습니다.

  1. 점추정값

    말 그대로 점추정을 한 값입니다. 모평균의 신뢰구간을 구하고 싶다면 일반적으로 표본평균이을 사용합니다.

  1. 점추정량의 확률 구조

    구간추정은 점추정의 확률 구조를 반영합니다. 그럼 해당 추정량의 확률분포를 알아야겠고 그 확률분포를 결정하는 것은 일반적으로 두 가지가 있습니다.

    • 정확한 확률분포를 알고 있는 것

      • 이를 통해 구한 신뢰구간을 정확한 신뢰구간(exact confidence interval)이라고 합니다. 그러나 사실 실제로 우리가 이렇게 정확하게 분석을 할 수 있는 상황은 많지 않습니다.
    • 여러가지 통계적인 방법을 통하여 추정량의 근사적인 분포를 이용하는 방법

      • 이 경우 점근적인 신뢰구간(asymptotic confidence interval) 혹은 근사적인 신뢰구간(approximate confidence interval)이라고 합니다. 사실 우리가 구하는 대부분의 신뢰구간은 이 점근적 신뢰구간입니다.

    그렇다면 이 확률구조를 어떤 식으로 이용할 수 있을까요. 바로 어떤 확률 하에서 우연히 나올 수 있는 값을 반영하는 방법입니다. 그래서 95% 신뢰구간, 90% 신뢰구간 등 앞에 신뢰 정도를 확률로 나타내주는 것입니다. 다시 말해 추정량의 분포를 통해 허용할 수준을 결정하게 되는 것이지요. 만약 신뢰성을 높인다면 신뢰구간은 길어질 것이고 약간 느슨한 신뢰성을 요구하면 신뢰구간은 짧아질 것입니다.

  2. 추정량의 표준편차(변동의 척도)

    마지막으로 추정량의 표준편차를 반영합니다. 이 추정량의 표준편차를 흔히 표준오차(standard error)라고 표현하고 이는 단순히 모 표준편차처럼 각 점들이 평균과 얼마나 떨어져 있냐에 대한 것 말고도 해당 추정량의 변동 정도로, 신뢰성을 의미합니다. 변동이 적으면 신뢰할만한 추정량이고 그렇지 않다면 신뢰하기 힘든 추정량이 되겠지요. 만약 표준오차가 크다면 신뢰구간은 길어질 것이고 크지 않다면 짧아질 것입니다.

분포라는 것에 변동이 포함되어있기 때문에 2번과 3번은 사실 같은 내용입니만 표준오차에 대한 개념설명을 위해 분리해 두었습니다. 위 내용은 처음 읽고는 직관적으로 이해하기 어려울 수 있으니 꼭 밑의 예와 그래프를 보고 다시 읽어보시기 바랍니다.

신뢰구간의 길이는 곧 우리가 이 구간을 의미있게 사용할 수 없는가에 대한 척도인 동시에 가설검정을 했을 때의 기각할 범위를 알려줍니다. 구간추정의 원리는 가설검정의 원리와 정확히 일치합니다. 가설검정 역시 점추정량과 그확률분포, 변동 정도를 반영하여 실시하게 됩니다. 다만 가설검정은 한 점에대한 검정 결과고 구간추정은 전체적인 신뢰할만한 범위를 알려줍니다. 당연히 신뢰구간이 정보력이 훨씬 많습니다.

그럼 구체적인 예를 들어 알아보도록 하겠습니다.

한국 남성의 키는 정규모집단을 따른다고 했을 때 100명의 표본을 뽑아 평균 키를 구간추정 해보려고 합니다. 샘플링 결과 표본 평균은 170, 표본 표준편차는 10이 나왔고 이를 이용해 95% 신뢰구간을 구하려고 합니다. 이제 우리는 이 표본평균과 관련된 확률 구조가 필요합니다. 유명한 정리를 하나 사용해보도록 합시다. 모집단이 정규분포를 따른다고 가정하면 도 정규분포를 따를 것입니다. 그렇다면 스튜던트 정리에 의해 다음이 성립합니다.

이제 검정통계량의 분포를 도출하였기 때문에, t분포를 이용해 다음과 같이 검정통계량과 관련된 여러 확률을 계산할 수 있습니다.

만약 T가 정확하게 t분포를 따른다면 위 식은 자명한 사실일 것입니다. 풀어서 생각해보면 어렵지 않습니다.

  • T는 자유도가 n-1인 t분포를 따르므로 좌우 끝에 2.5%씩 제외한 영역에 포함될 확률이 95%입니다.
  • t분포는 중심이 0이고 좌우가 동일한 대칭분포이기 때문에, 좌우 2.5%의 영역을 나누는 기준 값이 부포만 다를 뿐 절댓값은 동일합니다.
  • 즉, 는 자유도가 n-1인 t분포에서 97.5%가 누적되었을 때의 값입니다. 그리고 과 부호만 다를 뿐, 절댓값은 똑같습니다. 이를 역확률값이라고 부릅니다.

우리는 100명의 표본을 뽑았으니 T값은 자유도가 99인 t분포를 따르게 되고, 양쪽 극단에 2.5%씩 남겨둔 역확률 값을 그림으료 표현하면 다음과 같습니다.

97.5%의 누적 역확률값은 1.984이고 2.5%의 누적 역확률 값은 -1.984입니다. T는 자유도가 99인 t분포를 따르므로 T가 -1.984와 1.984사이에 포함될 확률은 95%라는 것이 성립하는 것이죠. 이제 저 사실을 기초하여 식을 조금 바꿔 보겠습니다.

이런 식으로 정리하면 주어진 조건에서 모평균 가 저 구간에 포함될 확률이 95% 라는 식이 나옵니다. 이것이 구간추정의 원리이자 95% 신뢰구간입니다. 위의 한국 남성 키를 그대로 대입해보면 는 170, 는 10, n은 100이므로 라는 식이 성립합니다. 즉 한국 남성 키의 95% 신뢰구간은 [168.016, 171.984] 가 됩니다.

다시 한번 강조하지만 가장 중요한 것은 추정량은 확률 구조를 가지고 있는 확률변수라는 것이고 이는 구간추정에도 그대로 적용됩니다. 신뢰구간은 매 조사마다 달라집니다. 위에서 우리가 구한 [168.016, 171,984]는 절대적인 신뢰구간이 아닌 그냥 이번 조사에서 우리가 구한 하나의 신뢰구간에 불과합니다. 한번 더 조사하면 분명히 변할 것입니다.

그렇기에 엄밀히 따지면 [모수가 해당 신뢰구간 안에 있을 확률이 95%다] 라는 말은 정확한 말이 아닙니다. [해당 신뢰구간이 모수를 포함할 확률이 95%다] 라는 말이 정확합니다. 모수는 변수가 아닌 이미 정해진 수이고 바뀌는 건 신뢰구간이기 때문이죠. 더 정확히 이야기하면 [100번 조사를 해서 100개의 신뢰구간을 얻었을 때 그 중 평균적으로 95개의 신뢰구간은 모수를 포함하고있다] 정도가 될 것입니다.

이 블로그의 인기 게시물

6.1.2 고수들이 자주 쓰는 R코드 소개 2편 [중복 데이터 제거 방법]

Ch2. 중복데이터 제거하기 및 데이터 프레임 정렬 Ch2. 중복데이터 제거하기 및 데이터 프레임 정렬 흔하지는 않지만, 중복으로 입력되는 데이터 셋을 마주치는 일이 생기기 마련입니다. 보통 중복데이터는 데이터 수집단계에서 많이 발생합니다. 하지만 이를 하나하나 엑셀로 처리하는 것은 한계가 있기때문에, R에서 처리하는 방법에 대해 다루어 보고자 합니다. 1차원 벡터, 리스트에서의 중복 제거 A = rep(1:10, each = 2) # 1 ~ 10까지 2번씩 반복 print(A) ## [1] 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 # 중복 제거 unique(A) ## [1] 1 2 3 4 5 6 7 8 9 10 데이터 프레임에서의 중복 제거 다음과 같은 데이터 프레임을 예시로 삼겠습니다. 변수 설명 OBS : 번호 NAME : 환자 이름 ID : 환자 고유번호 DATE : 검사 날짜 BTW : Body total water 먼저, 환자 이름이 있고, 그 환자의 고유 ID가 있습니다. 세상에 동명이인은 많기 때문에 항상 고유 ID를 기록해둡니다. # 데이터 불러오기 DUPLICATE = read.csv("C:/R/DUPLICATED.csv") DUPLICATE ## OBS NAME ID DATE BTW ## 1 1 A A10153 2018-11-30 1 ## 2 2 A A10153 2018-11-30 3 ## 3 3 B B15432 2018-11-30 4 ## 4 4 A A15853 2018-11-29 5 ## 5 5 C C54652 2018-11-28 5 ## 6 6 C C54652 2018-11-27 6 ## 7 7 D D14

4.4.1 R 문자열(TEXT) 데이터 처리하기 1

Ch4. 문자열 데이터 다루기 1 데이터 다운로드 링크: https://www.kaggle.com/PromptCloudHQ/imdb-data # 데이터 불러오기 DATA=read.csv("C:\\R/IMDB-Movie-Data.csv") Ch4. 문자열 데이터 다루기 1 이번에는 문자열 데이터를 처리하는 방법에 대해 다루겠습니다. 문자열을 다룰 때 기본적으로 숙지하고 있어야 하는 명령어는 다음과 같습니다. 문자열 대체 : gsub() 문자열 분리 : strsplit() 문자열 합치기 : paste() 문자열 추출 : substr() 텍스트마이닝 함수: Corpus() & tm_map(), & tdm() # 문자열 추출 substr(DATA$Actors[1],1,5) # 첫번째 obs의 Actors변수에서 1 ~ 5번째에 해당하는 문자열 추출 ## [1] "Chris" # 문자열 붙이기 paste(DATA$Actors[1],"_",'A') # 첫번째 obs의 Actors변수에서 _ A 붙이기, 기본적으로 띄어쓰기르 구분 ## [1] "Chris Pratt, Vin Diesel, Bradley Cooper, Zoe Saldana _ A" paste(DATA$Actors[1],"_",'A',sep="") # 띄어쓰기 없이 붙이기 ## [1] "Chris Pratt, Vin Diesel, Bradley Cooper, Zoe Saldana_A" paste(DATA$Actors[1],"_","Example",sep="|") # |로 붙이기 ## [1] "Chris Pratt, Vin Diesel, Bradley Cooper, Zoe Saldana|

3. Resampling 방법론(Leave one out , Cross Validation)

Ch4. Resampling 방법론 이전 챕터에서는 앙상블에 대해 다루었습니다. 앙상블을 요약하자면, Training Set을 Resampling할 때 마다, 가중치를 조정할 것인지 말 것인지를 다루는 내용이었습니다. 이번에는 구체적으로 Resampling 방법들에 대해 다루어 보고자 합니다. 1. Resampling의 목적과 접근 방식 모형의 변동성(Variability)을 계산하기 위해서 입니다. Training Set으로 모형을 만들고, Test Set으로 Error rate를 계산하며, 이를 반복합니다. 각 실행 별, Error Rate 값이 계산이 될 것이며, 해당 Error rate의 분포를 보고 모형의 성능을 평가할 수 있습니다. Model Selection : 모형의 성능을 Resampling 방법론을 통해 평가한다면, 모델링 과정에서 어떤 변수를 넣어야 하고, 혹은 모형의 유연성(Flexibility)을 어느정도로 조절하는 것이 적당한지 결정을 할 수 있기 때문에 매우 중요한 방법론 중 하나입니다. 모형의 유연성에 대해서는 다음 챕터에서 설명하도록 하겠습니다. 2. Leave-One-Out Cross Validation(LOOCV) LOOCV는 n개의 데이터에서 1개를 Test Set으로 정하고 나머지 n-1개의 데이터로 모델링을 하는 방법을 의미합니다. LOOCV 방법은 데이터 수 n이 크다면, n번의 모델링을 진행해야되기 때문에, 시간이 오래 걸립니다. 회귀, 로지스틱, 분류모형 등에 다양하게 적용할 수 있습니다. 3. K - Fold Cross - Validation 연산시간이 오래걸린 다는 것은 곧, 작업시간이 길어진다는 의미이며 이는 곧 야근을 해야된다는 소리와 다를게 없어집니다. 그래서 시간이 오래걸리는 LOOCV를 대채하기 위하여 K-Fold Cross - Validation이 존재합니다. 위 그림은 데이터 셋을 총 4개의 Set로 구성하였습니다. Cross -

3.2.3 R 시각화[ggplot2] 2편 (히스토그램, 밀도글래프, 박스플롯, 산점도)

R 데이터 시각화 2편 R 데이터 시각화 2편 데이터 다운로드 링크: https://www.kaggle.com/liujiaqi/hr-comma-sepcsv # 시각화 이전에 처리 되어 있어야 하는 시각화 DATA = read.csv('C:/R/HR_comma_sep.csv') DATA$left = as.factor(DATA$left) DATA$Work_accident = as.factor(DATA$Work_accident) DATA$promotion_last_5years = as.factor(DATA$promotion_last_5years) 히스토그램(Histogram) [연속형 변수 하나를 집계 내는 그래프, 1차원] 히스토그램은 연속형변수를 일정 범위로 구간을 만들어, x축으로 설정하고 y축은 집계된 값(Counting)을 나타내는 그래프입니다. library(ggplot2) # 기본 ggplot(DATA,aes(x=satisfaction_level))+ geom_histogram() ## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`. # 구간 수정 및 색 입히기 ggplot(DATA,aes(x=satisfaction_level))+ geom_histogram(binwidth = 0.01,col='red',fill='royalblue') # col은 테두리, fill은 채우기 밀도그래프(Density Plot)[연속형 변수 하나를 집계 내는 그래프, 1차원] 밀도그래프는 연속형변수를 일정 범위로 구간을 만들어, x축으로 설정하고 y축은 집계된 값(percentage)을 나타내는 그래프입니다. # 기본 ggplot(DATA,aes(x=satisfaction_level))+ geom_density() # 색 입히기 ggplot(DATA,a