티스토리 뷰

반응형


  

#. 이항분포 in R

dbinom(x = 이산형 확률변수, size = 수행횟수, prob = 공확률)


# 동전을 10회 반복하여 던질 때, 앞 면이 나오는 사건, 각 확률변수가 취하는 분포 확인

n <- 10

p <- 0.5


> choose(10,0) * (0.5)^0 * (0.5)^10      # P(X=0) 10C0 x (1/2)0 x (1/2)10 

[1] 0.0009765625                                # 성공 횟수(10회 중 0번 성공) x 성공 확률 x 실패 확률 

> choose(10,1) * (0.5)^1 * (0.5)^9       # P(X=1)

[1] 0.009765625                                 # 1번 성공할 경우의 수 {앞뒤뒤뒤뒤뒤뒤뒤뒤뒤}, {뒤앞뒤뒤뒤뒤뒤뒤뒤뒤}, {뒤뒤앞뒤뒤뒤뒤뒤뒤뒤}, ..

> choose(10,2) * (0.5)^2 * (0.5)^8       # P(X=2)

[1] 0.04394531

...

> choose(10,10) * (0.5)^10 * (0.5)^0    # P(X=10)

[1] 0.0009765625


이항분포의 확률밀도함수를 사용한 확률 계산 

> dbinom(4, size = 10, prob = 0.5)      # 10회 중 4번 성공할 확률

[1] 0.2050781

> dbinom(0:10, size = 10, prob = 0.5)       # 0~10번 까지의 성공 확률

[1] 0.0009765625 0.0097656250 0.0439453125 0.1171875000 0.2050781250 0.2460937500

[7] 0.2050781250 0.1171875000 0.0439453125 0.0097656250 0.0009765625

 

# 이항분포의 시각화

> b1 <- dbinom(0:10, size = 10, prob = 0.5)

> names(b1) <- 0:10

> barplot(b1, ylim = c(0,0.3), xlab = '확률변수(X)', ylab = '성공확률(P(X=x))')   확률 질량함수


# n, p 값의 변화에 따른 이항분표 비교

# n의 변화에 따른 이항분표 비교

> p1 <- dbinom(0:30, 10, 0.3)   

p2 <- dbinom(0:30, 20, 0.3)  

p3 <- dbinom(0:30, 30, 0.3)    

p4 <- dbinom(0:30, 40, 0.3)

p5 <- dbinom(0:30, 50, 0.3)


plot(p1, type = 'l', col = 1, ylim = c(0,0.3), 

          xlab='성공횟수(X)', ylab='확률(P(X=x))')

lines(p2, type = 'l', col = 2)

lines(p3, type = 'l', col = 3) 

lines(p4, type = 'l', col = 4)

lines(p5, type = 'l', col = 5) 

legend(25,0.4, c('n=10','n=20','n=30','n=40','n=50'),  

              cex = 1, pch = 1, col = 1:5, lty = 1) 


# 이항분포에서 반복횟수가 커질수록 대칭형(종모형)에 가까워짐 -> 정규분포


# p의 변화에 따른 이항분표 비교

> p1 <- dbinom(0:10, 10, 0.1)   

p2 <- dbinom(0:10, 10, 0.3)  

p3 <- dbinom(0:10, 10, 0.5)    

p4 <- dbinom(0:10, 10, 0.7)

p5 <- dbinom(0:10, 10, 0.9)


plot(p1, type = 'l', col = 1, ylim = c(0,0.4), 

            xlab='성공횟수(X)', ylab='확률(P(X=x))')

lines(p2, type = 'l', col = 2)

lines(p3, type = 'l', col = 3) 

lines(p4, type = 'l', col = 4)

lines(p5, type = 'l', col = 5) 

legend(5,0.4, c('p=0.1','p=0.3','p=0.5','p=0.7','p=0.9'),  

              cex = 1, pch = 1, col = 1:5, lty = 1) 





#. 정규분포 in R

dnorm(x=연속형 확률변수 , mean = 평균, sd = 표준편차



# 정규분포 그리기

> x1 <- seq(-3, 3, 0.01)

y1 <- dnorm(x1, 0, 1)        # 평균 0 표준편차 1 


plot(x1, y1, type = 'l', col = 'red', ylim = c(0,0.4), ann = F, axes = F)

abline(h=0)

abline(v=0, lty = 2) 

axis(1, c(-3:3))

axis(2, seq(0,0.4,0.1))


  

  


#. 확률분포 함수

각 함수의 차이점을 이해하는게 중요합니다. 


1. d 함수  

확률변수(X)의 분포

  - 확률질량함수 또는 확률밀도함수 제공

  - 확률변수(X)가 x일 때(X=x)의 매칭되는 y값(확률)을 제공

  - ex) dbinom(), dnorm(), dt ...


### 1. n=10, p=0.1 인 이항분포 출력 

# p(X=x) # 확률변수(X), 대응값(x)

> dbinom(0, 10, 0.1)  # P(X=0)

[1] 0.3486784

> dbinom(1, 10, 0.1)  # P(X=1)

[1] 0.3874205

> dbinom(2, 10, 0.1)  # P(X=2)

[1] 0.1937102

...


> p1 <- dbinom(0:10, 10, 0.1)  # P(X=x), 0 <= x <= 10

> plot(0:10, p1, type = 'l')       # n=10, p=0.1 일 때 이항분포



2. p 함수 

특정 확률변수(X) 이하일 경우 분포

  - P(X<=x) 값 제공

  - ex) pbinom(), pnorm(), pt ...


### 2. 위의 이항분포에서 성공횟수가 2회 이하일 확률(P(X<=2))

# P(X<=2) = P(X=0) + P(X=1) +  P(X=2)

> dbinom(0, 10, 0.1) + dbinom(1, 10, 0.1) + dbinom(2, 10, 0.1)

[1] 0.9298092

> pbinom(2, 10, 0.1)      # 성공횟수가 2회 이하 확률의 합

[1] 0.9298092


> plot(0:10, p1, type = 'l', ylim = c(0,0.5))

> abline(v=2)         # 수직선

> abline(h=0)         # 수평선 


# arrows(x_Start, y_start, x_end, y_end, length) : 화살표 그리기  =>  start, end : 좌표, length : 화살표 크기 

> arrows(2, 0.45, 1.5, 0.45, length = 0.05)


# text(x,y,text) : 그래프 위 원하는 위치에 글자 출력

> text(0.8, 0.45, "P(X<=2)")


# polygon(vector_x, vector_y, col) : 주어진 점을 채우기

> f <- function(x) {

     return(dbinom(x, 10, 0.1))

   }

> polygon(c(0,0,1,2,2), 

              c(0,f(0), f(1), f(2), 0), 

              col = 'red')



3. q 함수 

성공확률(p)에 해당하는 확률변수(X)

  - P(X<=x) = p 를 갖는 x값 출력 

  - 이항분포에서 80%이하의 확률을 갖는 확률변수(X=성공횟수)는 몇 일까?

  - 상위 n%의 확률변수(X) 구하기

  - 가설 기각에 주로 사용

  - ex) qbinom(), qnorm(), qt ...


### 4. P(X<=a) = p 인 값 찾기 (구간에 해당하는 값 찾기) 

> qbinom(0.8, 10, 0.1)    # 80%의 확률을 갖는 확률변수(X) = 2

[1] 2                            # 확률변수(X)가 연속형이 아니므로 정확한 값을 얻긴 어려움 

                                 

# P(X<=a) = 0.8을 만족하는 임계값(a) 시각화

> par(mar=c(5,3,1,1))

plot(0:10, p1, type = 'l', ylim = c(-0.05, 0.5), ann = F, axes = F)

axis(2, ylim = c(-0.05, 0.5))

abline(h=0)       # 수평선


> polygon(c(0,0,1,2,2), 

        c(0,f(0), f(1), f(2), 0), 

        col = 'red')

text(1, 0.2, '80%')  

arrows(2, -0.01, 2, 0, length = 0.05)

text(2, -0.03, '?', cex = 1)





반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday