본문 바로가기

[학습] 데이터분석방법론: R

Introductory statistics with R: chapter 3

*참고자료: introductory statistics with R, 기타 블로그 및 R 개론서

 

* 한마디

Exercise 문제가 배운 내용에 비해 난이도가 있는 듯 하다. 열심히 풀어서 내 것으로 만들자.

 

* 범위: chapter 3

 


* 기본 명령어

summary(): 해당 데이터의 최대/최소/평균/중간값 등

연산을 위한 기본 명령어들.

prod(벡터): 벡터 내 값들을 모두 곱한 값을 리턴함. factorial 계산에 사용됨.

    5!를 나타내고 싶을 땐 prod(5:1)

 

* Random sampling

 

sample(x, n, replace=T/F, prob=벡터)

x는 sample값들의 벡터, n은 sample size.

x는 원래 벡터값을 넣어야 하지만, single number가 들어가면 자동으로 1부터 x까지 정수값 범위로 추출을 하지만, 항상 명확히 벡터를 지정하는 것이 좋은 듯.

replace=T/F, T인 경우 복원추출 / F인 경우 비복원추출. 기본값은 비복원추출임.

prob에는 sample 값들이 나올 각각의 확률을 벡터값으로 입력할 수 있다. 기본값은 균등 확률.

* Combinatorics 확률조합

choose()

확률에서의 C 기능을 한다. 즉, 40C5 = 40! / (5! * 35!) 이 되는 이 연산을 하기 위해  prod(40:36)/prod(5:1)과 같은 factorial 연산을 직접 수행할 수도 있지만, 간단히 choose(40,5)를 하면 40C5 값을 구해준다.

 

* Discrete distribution 이산 확률분포 - binomial distribution 이항분포

이항분포를 따르는 확률변수 X에 대해, 확률질량함수 f(x) = P(X=x)라고 정의한다면

위와 같이 나타낼 수 있다. 

 

* Continuous distribution 연속 확률분포

연속 확률 분포에서는 x에 대한 점확률은 0에 수렴하므로 특정 구간에 대한 확률을 계산해야 한다.

F(x)는 P(X<=x)이며, 확률밀도함수 x를 -무한대부터 x까지 적분한 값과 같다.

정규분포를 따르는 함수의 확률밀도함수는 아래와 같이 알려져 있다.

정규분포의 확률밀도함수.

* Built-in distributions in R

R 내부에는 통계 실험에 사용되는 표준 분포들이 built-in 되어있음. 이 챕터에서는 정규분포와 이항분포만 다룸.

 

통계 분포를 계산할 때, 가장 기본이 되는 4가지 아이템은 아래와 같다.

1) 확률 밀도 혹은 점확률

2) 누적 확률, 밀도 함수

3) 사분위수

4) Pseudo-random numbers (유사난수): 난수를 흉내내기 위해 알고리즘으로 생성되는 값을 가리킨다. (위키)

 

R에 삽입된 모든 통계 분포들은 위 4가지 아이템에 대한 함수들을 모두 가지고 있다.

정규분포에서는 순서대로 dnorm, pnorm, qnorm, rnorm 함수가 위의 값들을 구해준다. 차례로 알아보자.

 

* Density

"d-function"들은 해당 벡터들을 가정한 확률 밀도/질량 함수에 넣은 확률값들을 반환해준다.

 

dnorm()

정규분포를 따른다고 가정했을 때의 확률 밀도값을 반환해줌. 기본값은 mu=0, sd^2=1, mean이랑 sd argument로 변경이 가능하다.

x<- c(1,2,3,4) 일 때, dnorm(x)를 하면 mu=0, sd=1인 정규분포의 확률밀도함수 f(x)에 대해 다음 벡터가 반환된다: c(f(1), f(2), f(3), f(4)) 

따라서 x축을 x, y축을 dnorm(x)로 하고 plot을 하는 경우 정규분포 그래프가 그려지는 것.

위와 같은 정규분포 그래프를 dnorm을 이용한 plot, 혹은 curve 함수를 이용해 얻을 수 있다.

dbinom()

이항분포를 따르는 경우의 확률 질량값을 반환해줌. argument로 size, 그리고 prob.를 갖는다.

위와 마찬가지로 x<-c(1,2,3,4)를 위 함수에 넣는 경우(dbinom(x,size=4,prob=확률p)), 다음 벡터가 반환된다: c(P(1),P(2),P(3),P(4)), 이 때 E(x)=np, V(x)= npq

 

* Cumulative distribution functions

p-function은 누적확률값을 반환해준다. 그래프는 density만큼의 정보를 얻을 수 없고, 주로 값 자체를 얻는데 이용.

 

만약, 어떤 혈액검사 수치가 mean=132, sd=13의 정규분포를 따른다고 가정하자. 어떤 환자의 수치가 160 이상인 확률을 구해보면

즉, X=160 이상의 값을 갖는 확률은 1.5% 밖에 안된다. 특정값 이상/이하를 가질 확률을 계산하는데 유용하다.

 

또한 간단한 통계 검증에 사용할 수 있다. 20명의 환자를 대상으로 A치료, B치료를 시행했을 때 A를 좋아하는 비율이 16명, B가 4명이라고 하자. 이 때 A와 B 치료의 선호도에 대한 차이가 있는가? 를 검증할 때, A와 B의 선호도가 같다고 생각하고 n=20, prob=0.5의 이항분포를 기대값으로 생각할 수 있다. 만약 이 이항분포에서 P(x>=16)의 확률값이 크다면 A=B를 기각하지 못하는 것이고, 확률값이 매우 작다면 A!=B를 채택할 수 있다.

P(X>=16)을 구하러면 1-pbinom(16)이 아니라 1-pbniom(15)를 빼줘야 한다. (P(x=16)은 포함되어야 하니까!) 

Two-tailed test를 시행하려면 좌측 꼬리값을 더해주면 된다.

 

 

* Quantiles

q-function은 특정 확률 분포의 지점(예를 들면, median-50%)의 X값을 반환해준다. 어떻게 보면 누적분포함수의 역함수 개념으로 볼 수도 있다. (X값을 주면 해당 지역까지의 확률을 알려줌 <-> 해당 확률 지점에 해당하는 X값을 알려줌)

 

qnorm(p) 

정규분포를 가정했을 때, 누적확률이 p인 점에 해당하는 x값을 반환해준다.

 

qnorm은 신뢰구간을 계산할 때 사용할 수 있다. 확률변수 X가 정규분포를 따르는 경우, 95% 신뢰구간은 다음과 같다.

X bar를 83, sigma를 12, n을 5라고 가정 하고 signa/sqrt(n) 값을 sem(standard error of mean)이라는 변수에 넣자.

즉, 신뢰구간은 72.48~93.52 이며, 이것이 의미하는 바는 표본평균이 83, 표준편차가 12, 표본 크기가 5인 경우 모집단의 평균 mu가 95% 확률로 존재하는 구간은 72.48~93.52라는 것이다.

 

뒤에 Q-Q plot을 할 때도 사용 된다고 한다. (Section 4.2.3)

 

* Random numbers

컴퓨터는 사실 예측 가능하게 행동하기 때문에 완전한 의미의 random을 만들 수는 없다. 따라서 random하게 뽑은것 처럼 보이고 행동하는 "pseudo-random"한 값을 뽑아 반환해주는 것이다. r-function은 특정 분포를 가정한 난수를 생성해 벡터로 리턴해준다.

 

rnorm(n)

n개 만큼의, 정규분포를 따르는 random number를 반환해준다. argument로는 mean, sd를 가지며 기본값은 0, 1이다.

 

rbinom(n)

n개 만큼의, 이항분포를 따르는 random number를 반환해준다. size와 prob을 입력해야 함.