본문 바로가기
데이터 [Data]/R

R Distributions: 이항분포의 누적분포함수

by 냉철하마 2021. 6. 5.

> ##### 실습2. 이항분포의 누적분포함수 #####

> opar <- par(mfrow=c(2,3))                     # plot 영역을 행 우선으로 하여 2행 3열로 나눔

> p <- 0.1; n <- 10; x <- 0:10                  # 확률 0.1, 시행횟수 10회일 때 0~10회 성공할 확률분포

> binom.pdf <- dbinom(0:n, size=n, prob=p)      # 이항분포로 변수 생성

> cumsum(binom.pdf)                             # 누적확률분포 계산(1) = dbinom + cumsum

 [1] 0.3486784 0.7360989 0.9298092 0.9872048 0.9983651 0.9998531 0.9999909 0.9999996

 [9] 1.0000000 1.0000000 1.0000000

> (binom.cdf.1 <- cumsum(binom.pdf))            # 누적확률분포 값을 새 변수로 생성

 [1] 0.3486784 0.7360989 0.9298092 0.9872048 0.9983651 0.9998531 0.9999909 0.9999996

 [9] 1.0000000 1.0000000 1.0000000

> plot(x, binom.cdf.1, type='S', ylab='F(x)', xlab='x', ylim=c(0,1), 

+      main="X ~ B(10, 0.1); CDF", lwd=5, col="Red", cex=2)                           # plot 생성

> points(x-1, binom.cdf.1, type='h', col="white", lwd=5)  # type='h', col='white'로 하얀 세로막대선 생성, cdf에서 불필요한 y축 선을 하얀 선으로 덮는 효과 적용

> points(x-1, binom.cdf.1, pch=16)              # 폐구간(시작점)

> points(x, binom.cdf.1, pch=1)                 # 개구간(종료점)

> # 확률을 0.3으로 변경

> p <- 0.3

> (binom.cdf.2 <- pbinom(0:n, size=n, prob=p))     # 누적확률분포 계산 (2)

 [1] 0.02824752 0.14930835 0.38278279 0.64961072 0.84973167 0.95265101 0.98940792

 [8] 0.99840961 0.99985631 0.99999410 1.00000000

> plot(x, binom.cdf.2, type='S', ylab='F(x)', xlab='x', ylim=c(0,1), 

+      main="X ~ B(10, 0.3); CDF", lwd=5, col="Green", cex=2)

> points(x-1, binom.cdf.2, type='h', col="white", lwd=5)

> points(x-1, binom.cdf.2, pch=16)

> points(x, binom.cdf.2, pch=1)

> # 확률을 0.5으로 변경

> p <- 0.5

> (binom.cdf.3 <- pbinom(0:n, size=n, prob=p))

 [1] 0.0009765625 0.0107421875 0.0546875000 0.1718750000 0.3769531250 0.6230468750

 [7] 0.8281250000 0.9453125000 0.9892578125 0.9990234375 1.0000000000

> plot(x, binom.cdf.3, type='S', ylab='F(x)', xlab='x', ylim=c(0,1), 

+      main="X ~ B(10, 0.5); CDF", lwd=5, col="Blue", cex=2)

> points(x-1, binom.cdf.3, type='h', col="white", lwd=5)

> points(x-1, binom.cdf.3, pch=16)

> points(x, binom.cdf.3, pch=1)

> # 확률을 0.7로 변경하여 실행

> p <- 0.7

> (binom.cdf.4 <- pbinom(0:n, size=n, prob=p))

 [1] 0.0000059049 0.0001436859 0.0015903864 0.0105920784 0.0473489874 0.1502683326

 [7] 0.3503892816 0.6172172136 0.8506916541 0.9717524751 1.0000000000

> plot(x, binom.cdf.4, type='S', ylab='F(x)', xlab='x', ylim=c(0,1), 

+      main="X ~ B(10, 0.7); CDF", lwd=5, col="Orange", cex=2)

> points(x-1, binom.cdf.4, type='h', col="white", lwd=5)

> points(x-1, binom.cdf.4, pch=16)

> points(x, binom.cdf.4, pch=1)

> # 확률을 0.9로 변경하여 실행

> p <- 0.9

> (binom.cdf.5 <- pbinom(0:n, size=n, prob=p))

 [1] 0.0000000001 0.0000000091 0.0000003736 0.0000091216 0.0001469026 0.0016349374

 [7] 0.0127951984 0.0701908264 0.2639010709 0.6513215599 1.0000000000

> plot(x, binom.cdf.5, type='S', ylab='F(x)', xlab='x', ylim=c(0,1), 

+      main="X ~ B(10, 0.9); CDF", lwd=5, col="Skyblue", cex=2)

> points(x-1, binom.cdf.5, type='h', col="white", lwd=5)

> points(x-1, binom.cdf.5, pch=16)

> points(x, binom.cdf.5, pch=1)

> # 확률을 0.95로 변경하여 실행

> p <- 0.95

> (binom.cdf.6 <- pbinom(0:n, size=n, prob=p))

 [1] 9.765625e-14 1.865234e-11 1.605078e-09 8.198398e-08 2.754583e-06 6.368983e-05

 [7] 1.028498e-03 1.150356e-02 8.613836e-02 4.012631e-01 1.000000e+00

> plot(x, binom.cdf.6, type='S', ylab='F(x)', xlab='x', ylim=c(0,1),

+      main="X ~ B(10, 0.95); CDF", lwd=5, col="Purple", cex=2)

> points(x-1, binom.cdf.6, type='h', col="white", lwd=5)

> points(x-1, binom.cdf.6, pch=16)

> points(x, binom.cdf.6, pch=1)

> # plot을 원래의 형태(mfrow=c(1,1))로 복원

> par(opar)

 

댓글