public bigdata

따라하며 배우는 데이터 과학 6장(통계의 기본 개념 복습)_중요 본문

데이터분석/따라하며 배우는 데이터 과학

따라하며 배우는 데이터 과학 6장(통계의 기본 개념 복습)_중요

public bigdata 2019. 7. 10. 22:43

6.1 통계, 올바른 분석을 위한 툴

※ 꼭 알아야하는 통계 개념

  • P-값이란?

  • 신뢰구간이란?

  • 표본분포란?

  • 통계학은 왜 어려운가?

6.2 통계학은 숨겨진 진실을 추구한다

  • 통계학은 알려지지 않은 참값이 있음을 가정한다. 멋진 말로 모수(population parameter)라고 한다.

  • 귀무가설 : 변화 없음, 효과 없음, 차이 없음을 나타낸다

  • 대립가설 : 변화 있음, 효과 있음, 차이 있음을 나타낸다

6.2.1 P값 해석

  • P값이 크면 귀무가설을 기각하지 못하고 귀무가설을 받아들이게 되는데 이것은 귀무가설이 옳음을 증명하는 것은 아니다 다만. 귀무가설을 기각할 만한 증거가 불충분하다는 것이지 귀무가설을 증명하는 증거가 있다는 것이 아니다.

6.3 통계학은 불확실성을 인정한다

※ 귀무가설과 대립가설 중에 어떤 것이 옳을까?, 그리고 참값은 과연 얼마일까? 통계학은 이 질문에 다음과 같은 절대적인 대답을 주지 않는다.

  • 이 수면제는 수면시간을 늘리는 효과가 있다.

  • 평균 수면시간의 증가는 0.75시간이다.

※ 대신 통계학은 다음과 같은 겸손한 대답을 내어놓는다.

  • 이 수면제가 효과가 없는데(귀무가설 하에서 검정통계량 계산) 이렇게 큰 표본평균 수면시간 증가값이 관측될 확률은 11%이다(P값)(여기서 '이렇게 큰'이란 귀무가설 하에서 구해진 검정통계량 값보다 크거나 같은 값을 가질 확률을 말한다)

  • 평균 수면시간의 증가에 대한 95%신뢰구간은 -0.53~2.03이다

※ 이것을 보면 통계학은 겸손하게 불확실성을 인정하고, 정확하게 (불확실성을 수량화한다) 추론을 하는 학문임을 알 수 있다.

6.4 통계학은 관측된 데이터가 가능한 여러 값 중 하나라고 생각한다

※ 통계의 가장 중요한 개념
> "우리가 현재 관측한 데이터는 모수의 어떤 값에서 관측될 수 있는 여러 가능한 데이터 중 하나다."

※ 귀무가설 : 수면제의 평균 수면시간 증가의 효과는 없다
> 우선개개인의 수면시간 증가값의 평균이 0이고 표준편차가 1.8인 종모양의 분포를 따른다고 가정해보자(정규분포) 해당 분포는 아래와 같이 생겼다.

> 그러면 이 가정에서 크기가 10개인 새로운 표본을 만들어낼 수 있다(수면제를 복용한 '어떤' 10명의 수면시간의 증가 관측치다. 그리고 그 10명의 평균 수면시간 증가도 구할 수 있다. 그리고 해당 값에 기반을 둔 새로운 t-통계량을 계산할 수 있다.)

> options(digits = 3)
> set.seed(1606)
> (y_star <- rnorm(10, 0, 1.8))
 [1]  0.05  1.02 -1.83  0.60
 [5] -1.69  3.43 -2.11 -1.43
 [9]  3.66  2.02
> mean(y_star-0); sd(y_star)
[1] 0.372
[1] 2.16
> (t_star <- mean(y_star - 0) / (sd(y_star) / sqrt(length(y_star))))
[1] 0.546

> 즉. 전혀 효과가 없는 약이더라도, 개인의 수면시간은 늘기도 하고 줄기도 한다. 개인차가 있기 때문이다. 
이 표본의 경우 평균 증가 수면시간은 0.372, 표본표준편차는 2.16, 그리고 t-통계량 값은 0.546이 나왔다. 

※ 위와 같은 실험을 컴퓨터를 이용해 쉽게 총 10,000개의 표본(각 표본은 10개의 관측치를 가진다)을 생성하고, 각 표본의 평균값, 표본표준편차, 그리고 t-통계량 값을 계산하여 10,000의 실험을 실행할 수 있다.
해당 결과를 시각화 하면 아래와 같다.

> set.seed(1606)
> B <- 1e4
> n <- 10
> xbar_star <- rep(NA, B)
> sds_star <- rep(NA, B)
> ts_star <- rep(NA, B)
> for (b in 1:B) {
+   y_star <- rnorm(n, 0, 1.789)
+   m <- mean(y_star)
+   s <- sd(y_star)
+   xbar_star[b] <- m
+   sds_star[b] <- s
+   ts_star[b] <- m / (s/sqrt(n))
+ }
> opar <- par(mfrow = c(2, 2))
> hist(xbar_star, nclass = 100)
> abline(v = 0.75, col = 'red')
> hist(sds_star, nclass = 100)
> abline(v = 1.789, col = 'red')
> hist(ts_star, nclass = 100)
> abline(v = 1.3257, col = 'red')
> qqnorm(ts_star)
> qqline(ts_star)
> par(opar)

 

 

 

※ t-test

> 다음의 값을 가지는 표본이 있다고 하자 0.7, -1.6, -0.2, -1.2, -0.1, 3.4, 3.7, 0.8, 0.0, 2.0 해당 값을 토대로 평균이 0인지 t-test를 하면 아래와 같은 결과가 나온다. 해당 표본의 평균은 0.75, 분산은 1.789이다. t 통계량을 구하면 통계량은 t분포를 따르게 되고 아래와 같은 t-test를 수행하게 된다. 위에서 본 결과는 아래 t-test의 결과를 시뮬에이션을 통해서 구한 값이다. 각각 10개씩 10,000번의 표본을 구한 결과를 위에서 보았다. 해당 t-test에서는 모평균이 0인지 검정한다(z검정에서 모분산을 표본분산으로 추정해서 사용한게 t-test) t-test 동일하게 실험해 보기 위해서 위에서 수면시간증가 값의 평균이 0, 분산이 1.789인 정규분포를 따른다고 가정(t-test 수행 시에 수면시간 증가 값이 정규분포를 따른다는 가정을 하고 수행하기 때문에 동일하게 시뮬레이션 에서도 정규분포 가정!)하고 해당 정규분포에서 표본을 10,000번 반복해서 10개씩 구한 후에 통계량을 산출했다. 위의 첫번째 그래프에서 빨간 수직선은 아래 표본의 평균인 0.75이다. 그리고 첫번째 그래프는 표본평균의 분포이다. 즉. 표본평균의 분포(이론에 근사하는 분포)상에서 아래 표본의 평균이 어느 위치에 있는지를 알아볼 수 있고, 표본평균이 정규분포를 따른다는 가정하에서 t-통계량은 t분포를 따르게 되고 귀무가설 하에서 t-통계량 값이 t-분포의 평균 0에서 얼마나 멀리 있는지를 비교하여 결론을 내린다. 

> x <- c(0.7, -1.6, -0.2, -1.2, -0.1, 3.4, 3.7, 0.8, 0.0, 2.0 )
> t.test(x)

	One Sample t-test

data:  x
t = 1.3257, df = 9, p-value = 0.2176
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -0.5297804  2.0297804
sample estimates:
mean of x 
     0.75 

> 통계는 어렵다. 해당 부분은 반드시 책을 통해서 여러번 반복해서 보도록 하자. ㅎㅎ 

6.5 스튜던트 t-분포와 t-검정이란?

6.6 P-값을 이해하면 통계가 보인다

>P-값의 정의 : 귀무가설 하에서, 관찰된 통계량만큼의 극단적인 값이 관찰될 확률,
즉. 주어진 데이터가 얼마나 가능한지의 확률이다. (아마. 극단적인 값의 방향은 통계량 값이 대립가설을 지지하는 방향으로 설정되는 것으로 보인다) 

  • 높은 P값 p = 0.5 귀무가설 하에서 주어진 데이터만큼 크거나 작은 것이 충분히 관측될 만하다. 귀무가설에 대한 반박증거가 부족하다(증거 불충분)
  • 낮은 p값 p = 0.000001 귀무가설 하에서 주어진 데이터만큼 극단적인 데이터가 관측되는 것은 거의 불가능하다. 귀무가설을 반박할 수 있다(유죄 선고)

> 중요한 것은 P값을 가지고 어떠한 결론을 내리든 맞을 수도 있고, 아닐 수도 있다는 것이다.

  • P = 0.01088은 만약 약효가 없다면(귀무가설 하에서) 우리가 관측한 정도의 데잍어만큼 큰 t-통계량 값을 관측할 확률은 1.9%라는 것. 여기서 그 기준이 보통 5% 0.05보다 작으면 귀무가설을 기각하고 귀무가설 하에서 나타났다고 하기에 너무 낮다는 것이다. 그래서 귀무가설을 기각하는 것이다.

    다르게 말하면, 귀무가설이 실제로는 참인데 (약효가 없는데) 있다고 잘못 판단할 확률도 1.9%나 된다는 말이다.

6.7 p값보다 유의성만 보고하는 오류

> 통계적으로 유의한지만 보고하고 p값을 보고하지 않는 경우가 있는데 이유는

  • 예전엔 컴퓨터가 없어서 통계분포 테이블에 의존했기 때문에 
  • 의미적으로 몇 퍼센트에서 유의한지 아닌지 전달만 하는 것이 편하고 쉽기 때문에

> p값에 절대적 의미를 부여하는 것은 설득력이 없다. 5% 기준일 때 5.1%이면 효과가 없고 4.9%이면  효과가 있다고 하는 것은 설득력이 없다.

> p값은 ''효과가 없다는 귀무가설이 맞을 확률'등으로 설명하는 경우가 많은데 이는 틀렸다. 모수는 랜덤변수가 아닌 상수다. 그렇기에 베이지안에서는 예외지만 전통 통계에서 이렇게 해석해서는 안된다.

6.7.3 높은 p값을 귀무가설이 옳다는 증거로 이해하는 오류

> 높은 p값은 대립가설을 입증하는 증거가 불충분함을 의미한다. 실제로 대립가설이 옳고, 효과가 아주 강해도, 데이터 관측치가 적으면 p값이 높을 수 있다. 즉. 높은 p값은 증거 데이터 불충분으로 이해해야 한다. 가설검정에서 귀무가설을 '증명'하는 것은 불가능하다.

> 또한 표본평균의 차이가 매우 작더라도 표본의 크기가 매우 크면 작은 p값을 가질 수 있다. 가설검정의 민감도가 높아진다고 표현한다. 민감해지면 아무리 작은 차이라도 발견해내고, 알람을 울려대는 것이다. 

> 표본의 크기가 너무 크고, 표본평균의 증가 값 자체가 너무 작다면 낮은 p값자체로는 의미가 없다 낮은 p값만으로 샴페인을 너무 일찍 터뜨리지 말자.

> p값 자체는 통계적 유의성이라는 쓸모 있지만 실용적인 의미는 직접 전달하지 않는 수치다. p값과 더불어 신뢰구간을 사용하자.

> p값의 잘못된 이해와 사용의 문제가 워낙 심각해서 최근 미국통계학회에서는 p값의 올바른 사용과 해석을 위한 여섯 가지 지침을 발표할 정도였다. 그 지침은 아래와 같다.

  1. p값은(통계적 유의성보다는)가정된 모형이 데이터와 별로 맞이 않음을 나타낼 수 있다. ?
  2. p값은 주어진 가설이 참인 확률이나, 데이터가 랜덤하게 생성된 확률이 아니다. ?
  3. 과학적 연구 결과와 비즈니스, 정책결정 과정은 p값이 어떤 경계값보다 크거나 작은 것에 근거해서는 안된다.
  4. 제대로 된 추론을 위해서는 연구과정 전반에 대한 보고서와 투명성이 필요하다.
  5. p값이나 통계적 유의성은 효과의 크기나 결과의 중요성을 나타내지 않는다.
  6. p값 자체만으로는 모형이나 가설에 대한 증거가 되지 못한다.

6.8 신뢰구간의 의미

> 95% 신뢰구간의 의미는 무엇인가?

> 많은 사람들이 생각하는 것은 '모수가 주어진 신뢰구간에 포함될 확률. 즉 평균 수면시간 증가가 -0.53에서 2.03사이일 확률이 95%이다'. 이는 정확하지 않다. 무엇보다도 모수는 값을 모르는 상수지 확률변수가 아니므로 '모수가 xxx할 확률'이라고 이야기할 수 없다. 이미 구해진 신뢰구간은 참 모수를 포함하든가 아니면 포함하지 않든가, 둘 중 하나이다.

> 95% 신뢰구간의 정확한 정의는 '같은 모형에서 반복해서 표본을 얻고, 신뢰구간을 얻을 때 신뢰구간이 참 모수값을 포함할 확률이 95%가 되도록 만들어진 구간'이다.

> 95% 신뢰구간이라고 하더라도 내가 구한 신뢰구간이 그 여러번의 표본에서 구한 신뢰구간들 중에서 모수를 포함하는 95% 비율의 신뢰구간인지 아닌지 확인할 수 없다.

6.9 통계학은 어렵다.

> 맞다 어렵다 .. ㅎㅎ