본문 바로가기
공부/IT-R프로그래밍

R프로그래밍 강좌 - [13] [기초통계] 확률개념, 추론 통계학

by 썸볼 2018. 1. 16.

1. 확률 개념

(1) 통계학에 확률이 필요한 이유
- 통계학을 수학적으로
 분석하는 데는 확률이 필요하다.
- 표본으로 부터 모집단의 특징을 추론할때 확률이 필요하다.

1) 전수조사와 표본조사
- 전수조사(전체 조사) : 대상 모두를 조사함, 오차 없이 정확하게 결과가 얻어지는 반면 막대한 비용과 수고가 따른다.
- 표본조사(샘풀 조사) : 대상의 일부를 추출해 조사함, 일부를 조사해서 그 전체를 추정하는 방법, 일부를 표본이라 하고 
  전체를 모집단이라 한다. 전수조사에 비해 수고나 비용을 줄일 수 있으나 표본의 선택 방법에 따라 오차(표본오차)가 생김,


2) 표본선택, 표본오차
- 표본조사에서는 전체(모집단)에서 표본을 추출해 모집단을 추정한다. 표본은 무작위로 추출한다.
- 모집단에서 복수의 표본을 무작위로 추출하면 모집단의 성질이 표본별로 달라져 표본오차가 생긴다.
- 표본 오차를 극복하는 것이 확률론이다.


                    ----> 무작위 표본추출1 (100명)  ----> 흡연율 20%
  
모집단 성인   ----> 무작위 표본추출2 (100명)  ----> 흡연율 19%
                    ----> 무작위 표본추출3 (100명)  ----> 흡연율 21%

  : 표본으로 추출된 흡연율의 차이를 표본오차라 한다.


(2) 확률의 의미
- 통계학에 의한 데이터 분석에서는 확률이 이론을 뒤받침하게 된다.
- 확률의 예
  동전던지기 해서 앞면이 나올 확률, 주사위 던지기 해서 2가 나올 확률

1) 시행과사상
- 주사위를 던져 눈의 수를 조사하는 확률실험에서 주사위를 던지는 행위를 시행(확률실험)이라 한다.
- 시행에서 얻을 수 있는 결과 중에 조건에 맞는 결과를 사상(사건)이라 한다.
- 시행에서 얻을 수 있는 결과의 모든 집합을 전사상(표본공간)이라 한다.
- 모집단(전사상)에서 표본(사상)추출도 시행이라 한다.
- 실험으로 나올수 있는 결과를 모두 알고 있지만 어떤 결과가 나올지 모르는 실험을 '확률실험'(시행)이라 한다.

2) 확률의 정의



 - 확률은 우리가 모르는 어떤 사실에 대해 말해주는 것이 아니라 이미 우리가 알고 있는 사실에 대한
   단순한 비율이다.

  
                           
                                문제의 사상(사건)이 일어나는 경우의 수
확률(수학적 확률) p =   ------------------------------------------------
                                일어날 수 있는 모든 경우의 수(표본공간의 모든 경우의 수)




※ 다른 확률의 예
- 확률 실험: 1에서 45까지 숫자가 적힌 공을 상자에 담아 임의로 6개를 뽑는 실험을 한다.
- 표본 공간(전사상): {1,2,3,4,5,6}, {1,2,3,4,5,7} .....{40,41,42,43,44,45} ....무수히 많음
- 모든 경우의 수 : 8,145,060 (아래 경우의 수공식에서 확인)
- 사건(사상) : 1 
- 확률 : 1/8145060

- 확률은 확률 실험, 표본 공간(전사상), 모든경우의 수, 사건, 사건의 경우의 수를 정확히 구분할 수 
  있어야 한다.

- 확률실험은 실험자가 정한다.
- 확률실험으로 일어나는 모든 결과를 알고 있어야 한다.
- 일어나는 전체 결과 수 대비 사건이 일어나는 결과 수가 확률이다.
- 일어나느 결과는 서로 공평하게 일어나야 한다.

                              


3) 경우의 수 계산
- 6개 상품 중 4개를 골라 세트로 구매할 수 있는 상품이 있다고 가정한다면 구성할 수 있는 세트는 몇 가지 일까?
- 위의 문제는 경우의 수를 구하는 문제이다. 이름 일반화 해서 말하면 
  n개에서 r개를 고르는 경우의 수  이다.

- 위의 일반화된 경우는 4가지로 나누어 지며, 이 4가지는 중복허용 여부, 순서 허용 여부에 따라 나누어진다.
- 순서허용 이면  {1,2}와 {2,1}은 다른 경우이다 순서허용하지 않으면 {1,2}와 {2,1} 같은 경우이다.
- 중복허용 이면  {1,1}은 허용되지만 중복허용이 아니면 {1,1}은 경우에 포함되지 않는다.
- 순열과 조합, 중복순열, 중복조합 으로 경우의 수를 계산한다.
  

4) 조합의 공식
- 종류가 다른 n개로 부터 r개를 추출할 수 있는 방법의 수는 다음의 nCr가지이다

                n!
   nCr = -------------
              r!(n-r)!


종류가 다른 n개로 부터 중복허용 하여  r개를 추출할 수 있는 방법의 수는 다음의 nHr가지이다

  nHr = n+r-1Cr


예) 5종류의 과일이 1개씩 있을때 3개 들어있는 과일 세트를 만들고 싶다 몇 가지를 만들수 있을까?

                   5!
              ------------
    nCr =     3!(5-3)!             = 10가지

                   7!
   
nHr =   -------------          = 35가지(중복허용)
                3!(7-3)!
                 


5) 순열의 공식
- 종류가 다른 n개로 부터 순서대로 r개를 취해 일렬로 늘어 놓는 방법은 nPr 가지이다.
  
                    n!
    nPr  = --------------
                  (n-r)!  



- 종류가 다른 n개로 부터 중복허용 하여 순서대로 r개를 취해 일렬로 늘어 놓는 방법은 nㅠr가지이다.

   nㅠr  =  n^r


예) 3명중에 2명을 선택해 1열로 늘어놓는 방법은 순열의 공식으로

                  3!
    3P2  = ------------ = 6가지
                 (3-2)!



     3ㅠ2  =  3 ^ 2    = 9가지



6) R에서 경우의 수 계산
- gtools 패키지 설치해서 사용한다.
- 순열: permutations(3,2)
- 조합: combinations(3,2)


install.packages("gtools")
library(gtools)
name <- c("A","B","C")
permutations(3,2,name) #순열
     [,1] [,2]
[1,] "A"  "B" 
[2,] "A"  "C" 
[3,] "B"  "A" 
[4,] "B"  "C" 
[5,] "C"  "A" 
[6,] "C"  "B" 
permutations(3,2,name,repeats.allowed = T) #중복허용 순열
     [,1] [,2]
 [1,] "A"  "A" 
 [2,] "A"  "B" 
 [3,] "A"  "C" 
 [4,] "B"  "A" 
 [5,] "B"  "B" 
 [6,] "B"  "C" 
 [7,] "C"  "A" 
 [8,] "C"  "B" 
 [9,] "C"  "C" 

fruit<-c("바나나","딸기","포도","체리","사과")
 
combinations(5,3,fruit) #조합 
     [,1]     [,2]     [,3]  
 [1,] "딸기"   "바나나" "사과"
 [2,] "딸기"   "바나나" "체리"
 [3,] "딸기"   "바나나" "포도"
 [4,] "딸기"   "사과"   "체리"
 [5,] "딸기"   "사과"   "포도"
 [6,] "딸기"   "체리"   "포도"
 [7,] "바나나" "사과"   "체리"
 [8,] "바나나" "사과"   "포도"
 [9,] "바나나" "체리"   "포도"
[10,] "사과"   "체리"   "포도"
 
combinations(5,3,fruit,repeats.allowed = T) #중복허용 조합
    [,1]     [,2]     [,3]    
 [1,] "딸기"   "딸기"   "딸기"  
 [2,] "딸기"   "딸기"   "바나나"
 [3,] "딸기"   "딸기"   "사과"  
 [4,] "딸기"   "딸기"   "체리"  
 [5,] "딸기"   "딸기"   "포도"  
 [6,] "딸기"   "바나나" "바나나"
 [7,] "딸기"   "바나나" "사과"  
 [8,] "딸기"   "바나나" "체리"  
 [9,] "딸기"   "바나나" "포도"  
[10,] "딸기"   "사과"   "사과"  
[11,] "딸기"   "사과"   "체리"  
[12,] "딸기"   "사과"   "포도"  
[13,] "딸기"   "체리"   "체리"  
[14,] "딸기"   "체리"   "포도"  
[15,] "딸기"   "포도"   "포도"  
[16,] "바나나" "바나나" "바나나"
[17,] "바나나" "바나나" "사과"  
[18,] "바나나" "바나나" "체리"  
[19,] "바나나" "바나나" "포도"  
[20,] "바나나" "사과"   "사과"  
[21,] "바나나" "사과"   "체리"  
[22,] "바나나" "사과"   "포도"  
[23,] "바나나" "체리"   "체리"  
[24,] "바나나" "체리"   "포도"  
[25,] "바나나" "포도"   "포도"  
[26,] "사과"   "사과"   "사과"  
[27,] "사과"   "사과"   "체리"  
[28,] "사과"   "사과"   "포도"  
[29,] "사과"   "체리"   "체리"  
[30,] "사과"   "체리"   "포도"  
[31,] "사과"   "포도"   "포도"  
[32,] "체리"   "체리"   "체리"  
[33,] "체리"   "체리"   "포도"  
[34,] "체리"   "포도"   "포도"  
[35,] "포도"   "포도"   "포도"  
 


7) 확률변수와 확률분포

- 확률변수 :
  1개의 주사위를 던지는 시행에서 나오는 눈을 X라 표시하기로 하자,
  이 X 는 주사위를 던져봐야 비로소 값이 확정된다. 이와같이 시행을 해야 비로소 값이 확정된는 변수를
  확률변수라 한다.

- 확률실험으로 얻게 되는 데이터는 수치형일수도 있고 범주형일 수도 있다. 수치형은 수치 그대로 사용할 수
  있지만 범주형인 경우에는 도수분포표를 만든 것처럼 수치로 바꿔야 한다.

- 확률변수는 반드시 숫자가 되어야 한다. 그래야 다양한 해석이 가능하고, 수학적으로 계산하여 의미를 찾을 수
  있다.

- 확률변수는 주사위의 눈처럼 비연속 수치를 취하는 이산형 확률변수와 키나 체중처럼 연속하는 수치를 취하는
  연속형 확률변수가 있다.

예제1) 이산형 확률변수 만들기
- 슈퍼마켓의 A,B,C,D,E,F 과자의 총 팔린수가 1000개이고 각각의 팔린수와 마진률를 조사했다





- 위 과자명 A,B,C,D,E,F는 상품마다 판매 비율이 있으니 이것을 확률변수로 나타낼 수 있을 것이다. 
  하지만 문자형이라 확률변수로 사용할 수 없다. 만약사용한다면 상품마다 팔릴 확률은 몇인지 말고는
  더이상 나아갈 것이 없기 때문이다.

- 판매가격은 동일하게 3000원이기때문에 상수이다. 변수로 사용할 수 없다.

- 마진값은 수치이면서 변수이기때문에 확률변수로 사용할 수 있다.

- 확률변수(마진값을 순서대로 나열), 판매개수,판매비율(확률),기대값(확률에 확률변수를 곱해서 더한다.)



- 위 표에서 확률변수비율을 더한값이 630이며 이값은 확률변수의 평균값이 되며 이렇게
  확률변수로서 확률적 의미로서 기대할 수 있는 값이라 하여 기대값이라 부른다.

- 데이터를 확률적인 방법으로 설명하였기 때문에 기대값을 통해 평균을 말하면 이 값은 모집단의
  특성이라고 말할 수 있다. 이런 것을 모수라 부른다.




※ 모수란?

모수는 모집단의 특성(모평균,모분산 등..)을 나타내는 값으로, 이 값을 모집단을 전수조사해야만 알수있는 값이다.
그러나 실질적으로 모집단의 크기와 범위가 너무 방대하기에 전수조사를 실지하지 않고 표본조사를 하는데
표본평균,표본분산 등으로 모평균, 모분산등을 추정할수가 있
다.


 ※ 참고
  기댓값      μ(Mu)  = x1p1 + x2p2 + ...... + xnpn
  분산         σ²(sigma)   = (x1-
μ)² p1 + (x2-μ)² p2 + ...... + (xn-μ)² pn
   표본오차   σ(sigma)    =  분산의 정의 제곱근  √σ² 


- 확률분포 : 확률변수가 특정한 값을 가질 확률을 나타내는 함수를 의미한다.
  예를 들어, 주사위를 던졌을 때 나오는 눈에 대한 확률변수가 있을 때, 그 변수의 확률분포는
  이산확률분포가 된다.

 
- 확률분포는 확률변수가 어떤 종류의 값을 가지는가에 따라서 크게 이산 확률분포와 연속 확률분포 중 하나에
  속하며, 둘 중 어디에도 속하지 않는 경우도 존재한다.




8) 이산 확률분포 
- 실험에서 성공/실패, 앞면/뒤면, 합격/불합격, 생존/사망, 사고/미사고 의 확률변수가 나오는 경우이며
  베르누이 시행을 한다.
- 베르누이 시행의 특징은
  결과는 성공/실패가 나타난다.
  각 시행의 확률은 동일하다(앞면:1/2  뒤면:1/2   주사위3: 1/6  주사위1: 1/6)
  각 시행은 독립적이다. 
(앞의 시행에 영향을 받지 않는다.)

- 이산 확률분포에는 이항분포및 기아분포가 포함되어있다.

이항분포
문제 : 배너의 클릭률이 0.0009인 시스템에서 한번에 30000명에게 배포한다면 이시스템으로 27명이
        클릭할 확률은 얼마인가?


- 먼저 개별확률이 0.0009이고 10000명에 노출시켰을 때 확률인 그래프를 그려보면 아래 와 같다.


 y <- dbinom(0:20, size=10000, prob=0.0009)
 plot(0:20, y, type='h', lwd=5, col="grey", ylab="Probability", xlab="확률변수 X", 
           main = c("X ~ B(10000, 0.0009)"))
 





- 위 그래프를 해석하면 9명일때 확률이 가장 높고 이때 확률은 0.13이다. 이말은 10000명에게 이배너를 
  노출하면 9명이 클릭할 확률이 13%라는 것이다. 또한 그래프를 보면 15명이 클릭할 확률은 0.02이다.

- 위처럼 이항분포는 개별 p확률을 가진 상황에서 n번 시행했을때 성공하는 횟수의 확률 분포를 나타내는 것이다.
  
 이항분포 식 :  X-Bin(n,p)   -> X-Bin(10000,0.0009)
 R사용 함수  :  dbinom(9,10000,0.0009)

- 문제를 R사용하여 확률 구해보면 아래와 같다.


z <- dbinom(0:30,30000,0.0009)
z
plot(0:30, z, type='h', lwd=5, col="grey", ylab="Probability", xlab="확률변수 X", 
     main = c("X ~ B(30000, 0.0009)"))



> dbinom(27,30000,0.0009)
[1] 0.07657436
 

- 이항분포의 평균 : np, 이항분포의 분산 : np(1-p)



기하분포 
문제 : 30%의 시험관 아기를 성공하는 병원에서 3번만에 성공할 확률은 얼마인가?

- 먼저 개별 확률이 20%일때 기하분포 그래프를 그려보면 아래와 같다.


x<-dgeom(1:20,0.2)
 
plot(1:20, x, type='h', lwd=5, col="grey", ylab="Probability", xlab="확률변수 X", 
     main = c("dgeom(1:20,0.2)"))





- 첫번째 시행했을때 성공할 확률은 16%정도이며, 두 번째에 성공할 확률은 13%이다.
  세 번째 성공할 확률은 10% 이다.
  이렇게 맨 처음이 성공할 확률이 가장 높고 뒤로 갈수록 급격하게 확률은 떨어지게 됩니다.

- 위의 분포를 활용할 수 있는데 20%의 성공률을 보이는 실험에서 세번만에 성공할 확률을 구할 수 있다.
  이것은 첫 번째, 두 번째, 세 번째를 모두 더하면 된다.

  16
+ 13 + 10= 39 % 

- 위의 문제에서 실험할때 마다 큰비용이 발생하는 시험관 아기를 해주는 병원의 성공확률이 30%라면 한 부부가 
  3번째 성공할 확률은 다음과 같이 구할 수 있다.



z<- dgeom(1:20, 0.3)
z
plot(1:20, z, type='h', lwd=5, col="grey", ylab="Probability", xlab="확률변수 X", 
     main = c("dgeom(1:20,0.3)"))





> sum(z[1:3]) #45%의 확률을 구할수 있다.
[1] 0.4599


확률변수 X가 0에서 시작한다면 X번 실패하고 처음으로 성공할 확률이 되며,
  확률변수 X가 1부터 시작하다면 X번 째에 성공할 확률이 된다.


  

9) 연속 확률분포
- 확률실험에서 얻은 데이터가 연속변수라면 확률변수를 만드는 것이 쉽다. 연속변수 자체를 그대로 확률변수로
  사용하면 된다.


- 연속형 확률변수의 확률 분포표는 계급으로 구분한 상대도수분포표의 형식을 취하게 된다.

  키의 확률분포표
  --------------------  
      계급      |
  이상  미만  | 확률
  --------------------
  150 ~ 155  | 0.00 

  155 ~ 160  | 0.05 
  160 ~ 165  | 0.15 
  165 ~ 170  | 0.30 
  170 ~ 175  | 0.25 
  175 ~ 180  | 0.20 
  180 ~ 185  | 0.05 
  185 ~ 190  | 0.00
  ------------------------
          총계    1

- 연속형 확률변수에 의한 확률분포에서 가장 중요한 분포는 정규분포이다. 
  연속평 변수 1과 2사이에는 무수히 많은 값들이 존재한다.

- 정규분포의 그림을 그려보면 마치 종 모양을 하고 있는데 가운데 볼록한 부분이 데이터의 평균이다.
  그리고 퍼져 있는 정도는 데이터의 분산이다
.

- 이렇게 평균을 중심으로 종 모양인 분포를 정규분포라 한다. 식으로 X-N(평균,분산)로 표기한다.


x <- seq(1, 100, length=200)  #1~100에서 200개 뽑기
x
 
plot(x, dnorm(x, mean=50, sd=10), type='l', main="Normal distribution, X~N(50,10)") 

 



- 표준정규분포 : 정규분포 그래프중에 평균이 0이고 분산이 1인 그래프를 특히 표준정규분포라 한다.
  기호로  X~N(0,1) 이다.


y <- seq(-3,3,length=200)
y
plot(y,dnorm(y, mean=0,sd=1), type="l", main="Normal distribution, X~N(0,1)")



- 각각의 해당 자료의 평균과 표준편차를 표준화 해서 나타내면 모든 자료의 다양한 분포를
  단 하나의 함수식으로 표현할 수 있다.
  이렇게 다양한 분포를 표준화 해서 나타낸것이 표준정규분포이다. 


- 중심극한정리
  연속변수를 가진 모집단은 정규분포를 따르거나 따르지 않을 수 있다. 정규분포와 상관없이 모집단의 평균은 있다.
  이런 가운데 모집단에서 어떤 값을 30번 이상 반복해서 표집했다면 모집단이 정규분포도에 따르던 따르지 않던
  상관없이 표집한 데이터의 그래프는 거의 정규분포를 따른다는 개념이다.

10) 정규분포 
- 정규분포 : 연속형 확률변수의 분포이다. 확률밀도함수를 갖는 확률분포를 정규분포라 한다.
- 정규분포의 그래프는 아래처럼 기댓값을 중심으로 자우대칭 종 모양이 된다.
  이 확률분포에 따르는 확률변수의 기대값은 μ , 분산은 σ² 가 된다.




- 정규분포 그래프의 [기댓값±표본오차]의 구간은 68%이상의 면적이 들어가고,
  [기댓값±2×표본오차]의 구간에 95% 이상의 면적이 들어간다.
  어느 구간에 확률현상이 일어날 확률은 그 구간에서 확률밀도함수 그래프와 가로축으로 둘러싸인 부분의
  면적으로 표시되므로 
[기댓값±2×표본오차]에 거의 확실(95% 이상)하게 확률현상이 나타난다.

- 평균값을 중심으로 [95%와 99%를 덮는 범위]는 통계학에서 곧잘 이용된다. 이들 경계점을 정규분포
  양측 5%점, 양측 1%점 이라한다(%는 백분위수라고 읽는다.)
  또한 왼쪽에서 오른쪽에 걸친 95%의 범위도 통계학에서 많이 이용된다. 이들 오른쪽 경계점을 정규분포의
  상위 5%점, 상위 1%점이라 한다.

- 표준정규분포:기댓값이 0 표본오차 1이 되는 경우를 표준정규분포라 한다.

11) R에서 확률관련 값 구하기
- 난수(랜덤값) 생성하기, 분포이름앞에 r를 붙여 사용한다.
   정규분포에 따르는 난수 : rnorm()
   이항분포를 따르는 난수 : rbinom()
   기하분포를 따르는 난수 : rgeom()
   균등난수 : runif()


runif(10) # 분포에 속하지 않는 균일한 랜덤값 10개 생성

runif(50, min=0, max=100) #0부터 100까지의 랜덤값 50개 생성
 
rnorm(10,mean=100,sd=15) # 정규분포에 따르는 평균이 100, 표준편차 15인 난수 10개 생성
rnorm(1000,mean=452,sd=80) #평균이 452 ,표준편차 80인 난수 1000개 생성
 
rbinom(100,size=1,prob=0.5) #50%확률로 1이 나오는 100개의 이항분포 난수값 구하기
rbinom(100,size=1,prob=1/6) #주사위처럼 확률이 1/6인 경우의 성공(1이라 칭함) 난수 구하기 

#문자열로 변경했을경우
a<- rbinom(100,size=1,prob=1/6)

a
a[a==1]<-"성공"
a[a==0]<-"실패"
a

- 확률계산하기
정규분포를 따르는 확률밀도함수와 이항분포를 따르는 확률질량함수의 확률을 구할 수 있다. 난수 함수처럼
분포이름 앞에 d, p 붙이면 된다.




- 평균이 30이고 표준편차가 7인 정규분포에서 확률변수 15의 확률구하기

 dnorm(15,mean=30,sd=7)
 
 
- 평균이 550이고 표준편차가 80인 정규분포에서 확률변수 450의 확률 구하기

  dnorm(450,mean=550,sd=80)
 
 
- 이항분포의 확률은 성공의 개수, 시행횟수, 단일 사건의 확률이 있으면 확률을 구할 수 있다
  동전을 1000번 던져 490번 앞면이 나올 확률 구하기


  dbinom(490,size=1000,prob=0.5)
 
 
- 흡연율이 25%로 알려진 1020명이 있는 A대학에서 무작위로 50명을 뽑았을때 흡연자일 확률은?
 

   dbinom(50,size=1020,prob=0.25)

- 기하분포는 앞서도 말한 것처럼 0으로 시작하는 경우와 1로 시작하는 경우가 다르다.
  R에서는 pgeom()는 0을 포함한다. 즉, 누적기하분포를 구하면 확률변수 X는 n번 실패하고
  처음으로 성공할 확률이 된다. 

 #20% 성공률 실험에서 3번째 성공할 확률

 dgeom(3,prob = 0.2)
 
 #20% 성공률 실험에서 3번 실패후 처음으로 성공할 확률
 pgeom(3,prob=0.2)
 



> dnorm(15,mean=30,sd=7)

[1] 0.005737297
> dnorm(450,mean=550,sd=80)
[1] 0.002283114
> dbinom(490,size=1000,prob=0.5)
[1] 0.02065635
> dbinom(50,size=1020,prob=0.25)
[1] 1.327799e-66
> dgeom(3,prob = 0.2)
[1] 0.1024
> pgeom(3,prob=0.2)
[1] 0.5904





2. 추론 통계학  
- 추론 통계는 단순히 숫자를 요약하는 것을 넘어 어떤 값이 발생할 확률을 계산하는 통계 기법이다

(1)통계적인 검정의 개념
- 확률에 관련된 문제에서 논리의 과오를 설득하기는 어렵다. 상대가 그건우연이야 라고 하면 달리 방법이 
  없기 때문에 확률관련 문제에 대해 상대를 설득하기 위해 특별한 기술이 필요한데 그것이 통계적인 검정이다.


귀무가설 : 부정하고 싶은 가설
- 대립가설 : 주장하고 싶은 가설
- 유의수준(p-value)

  구체적인 확률값을 정해두고 그확률을 유의수준이라 하여 그 확률값(5%-0.05)보다 작다면 우연이 아니라
  필연적인 의미가 있다고 하는 의미이다.


(2) 단측검정과 양측검정
 - 검정이란 귀무가설이 잘못됐다고 확률론적으로 설득하는 논법이다. 귀무가설에 대해 대립가설을 어디에 두느냐에
   따라 양측검정과 단측검정으로 분류된다.

   
- 단측검정과 양측검정의 대립가설을 다르다

   귀무가설 : 동전의 앞면과 뒷면이 나올 확률은 같다.(부정하고 싶은 가설)

   단측검정의 예: 뒤면이 나오기 쉽다  
   대립가설: 뒷면이 나올 확률>0.5(주장하고 싶은 가설)

   양측검정의 예: 앞면과 뒷면이 나올 확률은 같지 않다.
   대립가설 : 뒤면이 나올 확률 ≠ 0.5(주장하고 싶은 가설)


- 통계적인 검정의 실례
  초등학교 5학년 어린이들의 15년전 키평균 기록은 148.5, 분산은 7.8 식생활 개선으로 성장에 변화가
  일어났다고 생각하여, 현대 초등 5학년 어린이 100명을 무작위로 추출하여 평균를 확인하여보니 149.2였다
  키의 변화가 있는지를 검정해본다

  귀무가설 : 평균키는 148.5
 
  양측검정의 대립가설 : 키에 변화가 생겼다고 주장하고 싶으므로 평균키는 148.5와 다르다.
  
  단측검정의 대립가설 : 평균키는 148.5보다 크다 

(3) p값
- 귀무가설 아래에서 얻을 수 있는 데이터(검정통계량값-확률변수)이상으로 대립가설에 유리한 데이터를
  얻을 수 있는 확률를  p값이라 한다.
- p값이 유의수준보다 작으면 귀무가설은 기각되고, 대립가설이 채택된다.
- 통계분석 소프트웨어에서 p값을 사용하며 5%의 유의수준과 비교한다.

연습문제1: 토익학원 학습법 가설검정

A 토익 학원의 토익점수 평균은 623점, 표준편차 90으로 알려져 있다. 이 토익학원은 자신들의 새로운 학습법을
적용하면 평균은 700점이 넘는다고 주장한다. 이를 가설검정한다.

귀무가설: 토익점수 평균은 623점이다
대립가설: 토익점수 평균은 700점 이상이다. 

우리는 위쪽 신뢰구간을 넘는지 확인할 것이다. 이렇게 한쪽만 검증하는 것을 단측 검정이라 부른다.'

Step1. 모집단의 신뢰구간(5%~95%)의 확률변수 값을 구한다.


c1 <- qnorm(c(0.05,0.95), mean = 623,sd=90)
> c1
[1] 474.9632 771.0368

- 475~771까지 신뢰할 수 있는 구간이며 단측검정이므로 771이상이지만 5% 구간도 같이 구했다.
  신뢰구간은 90%, 95%, 99%중 하나를 사용하는데 이번에는 90% 신뢰구간을 사용했다.

- 표본의 평균을 구해 값이 이안에 있으면 귀무가설은 기각되지 않고 이영역에서 벗어나면 기각된다.

Step2. 표본데이터 읽어오기


sample <- read.csv("./data/example_test_statistic_ex1_sample.csv")
> head(sample,3)
  X    point
1 1 547.8331
2 2 615.9035
3 3 651.0697
> sample<- sample[-1]
> head(sample,3)
     point
1 547.8331
2 615.9035
3 651.0697

Step3. 모집단의 신뢰구간과 표본의 평균을 비교한다.

> c1
[1] 474.9632 771.0368
> mean(sample$point)
[1] 640.4372

- 표본의 평균이 640.4372로 모집단의 신뢰구간에서 벗어나지 않았기 때문에 귀무가설은 기각되지
  않는다. 표본평균이 771.0368 초과일때 귀무가설은 기각된다.

- 이학원의 주장은 일반화 될 수 없다.

연습문제2: 국어 선생님의 학습법 가설검정

A고등학교의 언어영역 평균 점수는 82점으로 알려져 있다. 국어선생님의 새로운 학습법을 적용한 후
국어선생님은 학생들의 언어영역 평균 점수는 82점이 아니라고 주장한다. 이른 가설 검정으로 검증한다.

귀무가설:영어영역 평균점수는 82점이다.
대립가설:언어영역 평균점수는 82점이 아니다.

이를 검정하기 위해서는 신뢰구간 양쪽을 모두 검증해야 한다. 이런 검증을 양측검정이라 한다.

Step1. 모집단 점수를 불러온다.
- 관측치 3000이며 A고등학교 국어점수 이다.


korea <- read.csv("./data/example_test_statistic_ex2_population.csv")
> head(korea)
  X point
1 1    72
2 2    72
3 3    78
4 4    78
5 5    75
6 6    72

Step2. 필요없는 첫 번째 열을 삭제합니다.
 korea <- korea[-1]
> head(korea)
  point
1    72
2    72
3    78
4    78
5    75
6    72

Step3. 평균과 표준편차를 알아본다.

> mean(korea$point)
[1] 71.985
> sd(korea$point)
[1] 4.071974

Step4. 모집단의 신뢰구간(5%~95%)의 확률변수 값을 구한다.


c1<- qnorm(c(0.05,0.95),mean=mean(korea$point),sd=sd(korea$point))
> c1
[1] 65.2872 78.6828

- 65.2872~78.6828까지 신뢰할 수 있는 구간이다. 표본의 평균이 이 안에 있다면
  귀무가설은 기각되지 않고 이영역을 벗어나면 기각된다.

Step5. 표본의 데이터를 불러온다


sample <- read.csv("./data/example_test_statistic_ex2_sample.csv")
> head(sample,3)
  X point
1 1    85
2 2    83
3 3    74
> sample <- sample[-1]
> head(sample,3)
  point
1    85
2    83
3    74

Step6. 모집단의 신뢰구간과 표본의 평균을 비교한다.

> c1
[1] 65.2872 78.6828
> mean(sample$point)
[1] 80.845

- 모집단의 신뢰구간을 벗어나 있기 때문에 귀무가설은 기각된다.
  이학교 국어 선생님의 학습법의 효과가 있다는 것을 통계적으로 증명했으니 일반화 될 수 있다.

 


(4) 척도(Scale)   
 - 자로 재는 길이의 표준 혹은 평가하거나 측정할 때 의거할 기준

 - 척도는 조사 대상을 측정하기 위해 임의로 부여한 숫자간의 관계를 말한다. 즉 가치판단을 할수있는 정보(data)를 말한다.
 - 명목척도(Nominal Scale) : 상징적인 의미를 숫자로 부여해 분류하는데 사용되는 척도, 덧셈뺄셈 불가능, 비교불가능하다.
 - 서열척도(Ordianl Scale)  : 측정 대상들의 우열 관계를 특정 짓는 척도를 말한다. 순위만 유지되면 수치를 변환해도 문제가 없다. 
                                     덧셈 뺄셈불가능 비교만 가능하다.
 - 등간척도(Interval Scale)  : 
명목척도와 서열척도의 특성을 모두 갖고 있으면서 측정치의 차이가 동일한 간견을 가지는 척도이다.
                                     덧셈뺄셈가능
 - 비율척도(Ratio Scale)     : 비율 분석이 가능한 척도이다. 0의 개념이 있으며, 덧셈뺄셈,곱셈나눗셈이 가능하다.

   
(5) 척도의 비교




(6) 통계적 검정 

 - 통계학에서 통계 결과치에 대한 검정은  t-검정, F-검정, x2-검정 3가지가 있다.
 - t-검정과 F-검정은 비율척도 자료에 적용하며, x2 검정은 명목척도 자료에 적용된다.

1) 통계적 검정의 유형및 적용



2) x2 (
chi_square) 검정
- 가감승제가 불가능한 비연속형 변수 간의 통계적 관련성 유무를 평가하는 분석 방법이다.
- 때로는 가감승제가가 가능한 연속형변수를 비연속형 변수로 변환하여 x2 검정에 적합한 통계적 
  가설검정을 실시 할 수 도 있다.
- 범주형 자료에서 변수들 간의 독립성 여부를 검정하는 방법이라고 할 수 있다.
- x2 검정은 크게 2 x 2 분할표, 2 x m 분할표,  n x m 분할표로 구분된다.
- 2 x 2 :  행과 열의 양분성인 표를 말한다.
- 2 x m : 행 또는 열은 양분성인 자료이지만 다른 행 또는 열의 자료는 세가지 이상의 범주로 분류되는 표를 말한다.
- n x m : 행과 열 모두 세가지 이상의 범주로 분류되는 표를 말한다.



3) 독립성 검정(범주형 변수)
- iris$Species(종)를 복사하여 두 종들의  범주형 변수들의 독립성을 검사한다.
- 2 x m 분할표를 만들고 독립성 검정을 실행한다.
- table()를 이용해 분할표 생성후 summary함수로 x2-검정을 수행한다.


summary(iris)
lapply(as.list(iris),summary)
str(iris)
 
iris$Species2 <- as.factor(sample(1:5,150, replace=T))
sample(1:5,150,replace=T)
 
summary(iris)
lapply(as.list(iris),summary)
str(iris)
 
#독립성 검정
> summary(table(iris$Species,iris$Species2))
Number of cases in table: 150 
Number of factors: 2 
Test for independence of all factors:
Chisq = 4.87, df = 8, p-value = 0.7714

- p-value 값이 5%(0.05) 보다 크므로 두개의  종들의 범주형 변수들은 독립적이다.





(7)통계량 검증 예제 

유의확률은 실제로는 집단간 차이가 없는데 우연히 차이가 있는 데이터가 추출될 확률을 의미한다.
- 통계분석을 실시한 결과 유의확률이 크게 나타났다면 집단간의 차이가 통계적으로 유의하지 않다고 해석한다.
  이는 실제로 차이가 없더라도 우연에 의해 차이가 관찰될 가능성이 크다는 의미이다.
- 반대로 유의확률이 작다면 집단 간 차이가 통계적으로 유의하다고 해석한다.  우연히 이정도의 차이가 관찰될 가능이 작다,
  즉 우연이라고 보기 힘들다는 의미
이다.



1) 상관분석 - 두변수의 관계성 분석
- 상관분석(Correlation Analysis) : 두 연속 변수가 서로 관련이 있는지 검정하는 통계 분석 기법이다.
- 상관분석을 통해서 도출된 상관계수(Correlation Cofficient)로 두변수가 얼마나 관련되어 있는지, 관련성의 
  정도를 파악할 수 있다
- 상관계수 : -1~1사이에 값을 지니고-1,1에 가까울수록 관련성이 크다, 0에 가까울수록 관련성이 적다.
- 상관계수가 양수면 정비례, 음수면 반비례이다.


- 실업자 수와 개인 소비 지출의 상관관계
- ggplot2 패키지의 economics데이터를 이용해서 unemploy(실업자수)와 pce(개인 소비 지출)간에 통계적으로 유의한
  상관관계가 있는지 알아본다.
- R에 내장된 cor.test()를 이용하면 상관분석을 할 수 있다.


> economics <- as.data.frame(ggplot2::economics)
> cor.test(economics$unemploy, economics$pce)
 
Pearson's product-moment correlation
 
data:  economics$unemploy and economics$pce
t = 18.605, df = 572, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.5603164 0.6625460
sample estimates:
      cor 
0.6139997 


- 출력결과를 보면 p-value가 0.05 미만이므로, 실업자 수와 개인 소비 지출의 상관이 통계적으로 유의하다고 할 수 있다.
- 출력결과 맨 아래 'cor'이 상관계수를 의미한다. 상관계수가 양수 0.61이므로, 실업자 수와 개인 소비 지출은 한 변수가 
  증가하면 다른 변수가 증가하는 정비례 관계임을 알 수 있다.



2) 상관행렬 히트맵 만들기
- 여러변수의 관련성을 한 번에 알아보고자 할 경우, 모든 변수의 상관 관계를 나타낸 상관 행렬(Correlation Matrix)을 
  만든다. 상관행렬을 보면 어떤 변수끼리 관련이 크고 적은지 파악할 수 있다.
- R에 내장된 mtcars데이터를 이용해 상관 행렬을 만든다. mtcars는 자동차 32종의 11개 속성에 대한 정보를 담고 있다.
cor()를 이용하여 상관 행렬을 만든후 소수점 셋째 자리에서 반올림해 출력한다.


> head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
 
> car_cor <- cor(mtcars)  # 상관행렬 생성
 
> round(car_cor, 2)       # 소수점 셋째 자리에서 반올림해서 출력
        mpg   cyl   disp    hp  drat    wt  qsec    vs    am  gear  carb
mpg   1.00 -0.85 -0.85 -0.78  0.68 -0.87  0.42  0.66  0.60  0.48 -0.55
cyl     -0.85  1.00  0.90  0.83 -0.70  0.78 -0.59 -0.81 -0.52 -0.49  0.53
disp   -0.85  0.90  1.00  0.79 -0.71  0.89 -0.43 -0.71 -0.59 -0.56  0.39
hp     -0.78  0.83  0.79  1.00 -0.45  0.66 -0.71 -0.72 -0.24 -0.13  0.75
drat    0.68 -0.70 -0.71 -0.45  1.00 -0.71  0.09  0.44  0.71  0.70 -0.09
wt     -0.87  0.78  0.89  0.66 -0.71  1.00 -0.17 -0.55 -0.69 -0.58  0.43
qsec   0.42 -0.59 -0.43 -0.71  0.09 -0.17  1.00  0.74 -0.23 -0.21 -0.66
vs      0.66 -0.81 -0.71 -0.72  0.44 -0.55  0.74  1.00  0.17  0.21 -0.57
am     0.60 -0.52 -0.59 -0.24  0.71 -0.69 -0.23  0.17  1.00  0.79  0.06
gear   0.48 -0.49 -0.56 -0.13  0.70 -0.58 -0.21  0.21  0.79  1.00  0.27
carb  -0.55  0.53  0.39  0.75 -0.09  0.43 -0.66 -0.57  0.06  0.27  1.00



- 위의 출력된 상관행렬을 보면 mtcars의 11개 변수가 얼마나 서로 관련되어 있는지 알수 있다.
- mpg(연비)행과 cyl(실린더 수)열이 교차되는 부분을 보면 상관계수가 -0.85이므로, 연비가 높을수록 실린더 수가 
  적은 경향이 있다는 것을 알 수 있다.
- cyl(실린더 수)과 wt(무게)의 상관계수가 0.78이므로, 실린더 수가 많을수록 자동차가 무거운 경향이 있다는 것을 알 수 있다.


 


- 상관행렬을 많은 숫자로 구성되기 때문에 변수들의 관계를 파악하기 힘들때 corrplot패키지의 corrplot()를 이용해 상관행렬
  히트맵을 만들어 변수들의 관계를 쉽게 파악할 수 있다.


install.packages("corrplot")
library(corrplot)
 
corrplot(car_cor)
 



- 출력된 히트맵을 보면 상관계수가 클수록 원의 크기가 크고 색깔이 진하다.
- 상관계수가 양수면 파란색, 음수면 빨간색 계열로 표현된다.


- corrplot()의 파라미터를 이용하여 그래프 형태를 다양하게 바꿀수 있다.
  mothod = "number"를 지정하면 원 대신 상관계수를 표현되게 설정할 수 있다.


corrplot(car_cor)
 
corrplot(car_cor, method = "number")


댓글