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

R plot: 이산형 분포의 확률밀도함수

by 냉철하마 2021. 6. 8.

> ##### Theme 1. 이산형 분포의 pdf와 cdf #####

> # 1) 초기하분포의 확률밀도함수

> # 초기값을 N=20, K=4(p=0.2)로 설정

> # n=5, x는 0부터 n=5까지 지정

> N <- 20; K <- 4; p <- 0.2; n <- 5

> x <- 0:n

> # plot 영역을 행 우선으로 하여 2행 3열로 나눔 (모수 N을 6개 사용)

> phpar <- par(mfrow=c(2,3))

> # 초기하분포(hyper)의 pdf(p)이므로 변수 이름을 p.hyper로 지정

> # 모수의 초기값 N=20, K=4, n=5로 p.hyper1 생성

> p.hyper1 <- dhyper(x, K, N-K, n)

> # 모든 p.hyper의 값이 0.47을 초과하지 않으므로 y의 범위를 0부터 0.5로 고정

> # col(색상)은 "Red", "Green", "Blue", "Orange", "Skyblue", "Purple" 순으로 지정

> plot(0:5, p.hyper1, type='h', col='Red', ylab='f(x)', xlab='X', lwd=7, ylim=c(0, 0.5), 

+      main = c("X ~ HG(N=20; n=5, p=0.2); pdf"))

> # 모수 N을 30으로 변경하고 고정된 p값(0.2)을 이용하여 K를 변경(6) 후 p.hyper2 생성

> N <- 30; K <- N*p; p.hyper2 <- dhyper(x, K, N-K, n)

> # p.hyper2을 이용하여 초기하분포 pdf plot 생성

> plot(0:5, p.hyper2, type='h', col='Green', ylab='f(x)', xlab='X', lwd=7, ylim=c(0, 0.5), 

+      main = c("X ~ HG(N=30; n=5, p=0.2); pdf"))

> # 모수 N을 50으로 변경하고 고정된 p값(0.2)을 이용하여 K를 변경(10) 후 p.hyper3 생성

> N <- 50; K <- N*p; p.hyper3 <- dhyper(x, K, N-K, n)

> # p.hyper3을 이용하여 초기하분포 pdf plot 생성

> plot(0:5, p.hyper3, type='h', col="Blue", ylab='f(x)', xlab='X', lwd=7, ylim=c(0, 0.5), 

+      main = c("X ~ HG(N=50; n=5, p=0.2); pdf"))

> # 모수 N을 100으로 변경하고 고정된 p값(0.2)을 이용하여 K를 변경(20) 후 p.hyper4 생성

> N <- 100; K <- N*p; p.hyper4 <- dhyper(x, K, N-K, n)

> # p.hyper4을 이용하여 초기하분포 pdf plot 생성

> plot(0:5, p.hyper4, type='h', col='Orange', ylab='f(x)', xlab='X', lwd=7, ylim=c(0, 0.5), 

+      main = c("X ~ HG(N=100; n=5, p=0.2); pdf"))

> # 모수 N을 500으로 변경하고 고정된 p값을 이용하여 K를 변경(100) 후 p.hyper5 생성

> N <- 500; K <- N*p; p.hyper5 <- dhyper(x, K, N-K, n)

> # p.hyper5을 이용하여 초기하분포 pdf plot 생성

> plot(0:5, p.hyper5, type='h', col='Skyblue', ylab='f(x)', xlab='X', lwd=7, ylim=c(0, 0.5), 

+      main = c("X ~ HG(N=500; n=5, p=0.2); pdf"))

> # 모수 N을 1000으로 변경하고 고정된 p값을 이용하여 K를 변경(200) 후 p.hyper6 생성

> N <- 1000; K <- N*p; p.hyper6 <- dhyper(x, K, N-K, n)

> # p.hyper6을 이용하여 초기하분포 pdf plot 생성

> plot(0:5, p.hyper6, type='h', col='Purple', ylab='f(x)', xlab='X', lwd=7, ylim=c(0, 0.5), 

+      main = c("X ~ HG(N=1000; n=5, p=0.2); pdf"))

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

> par(phpar)

> # 3) 이항분포 확률밀도함수

> # plot 영역을 행 우선으로 하여 3행 5열로 나눔 (모수 n을 3개 * p를 5개 사용)

> # 모수 n = 20, 30, 50; p = 0.2, 0.3, 0.5, 0.7, 0.8을 사용할 예정

> pbpar <- par(mfrow=c(3,5))

> # 이항분포의 확률밀도함수 중 1행 1열에 위치한다는 뜻으로 변수이름을 p.binom11로 지정

> # n=20, p=0.2, x=0:n 일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom11 <- dbinom(0:20, 20, p=0.2)

> # col(색상)은 무지개 색의 일부인 "Red", "Orange", "Yellow", "Green", "Blue" 순으로 지정

> # p.binom 전체 원소의 최대값이 약 0.218이므로 y축의 범위는 0부터 0.22까지로 지정

> plot(0:20, p.binom11, type='h', col='Red', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(20, 0.2); pdf"))

> # n=20, p=0.3일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom12 <- dbinom(0:20, 20, p=0.3)

> plot(0:20, p.binom12, type='h', col='Orange', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(20, 0.3); pdf"))

> # n=20, p=0.5일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom13 <- dbinom(0:20, 20, p=0.5)

> plot(0:20, p.binom13, type='h', col='Yellow', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(20, 0.5); pdf"))

> # n=20, p=0.7일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom14 <- dbinom(0:20, 20, p=0.7)

> plot(0:20, p.binom14, type='h', col='Green', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(20, 0.7); pdf"))

> # n=20, p=0.8일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom15 <- dbinom(0:20, 20, p=0.8)

> plot(0:20, p.binom15, type='h', col='Blue', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(20, 0.8); pdf"))

> # n=30, p=0.2일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom21 <- dbinom(0:30, 30, p=0.2)

> plot(0:30, p.binom21, type='h', col='Red', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(30, 0.2); pdf"))

> # n=30, p=0.3일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom22 <- dbinom(0:30, 30, p=0.3)

> plot(0:30, p.binom22, type='h', col='Orange', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(30, 0.3); pdf"))

> # n=30, p=0.5일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom23 <- dbinom(0:30, 30, p=0.5)

> plot(0:30, p.binom23, type='h', col='Yellow', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(30, 0.5); pdf"))

> # n=30, p=0.7일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom24 <- dbinom(0:30, 30, p=0.7)

> plot(0:30, p.binom24, type='h', col='Green', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(30, 0.7); pdf"))

> # n=30, p=0.8일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom25 <- dbinom(0:30, 30, p=0.8)

> plot(0:30, p.binom25, type='h', col='Blue', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(30, 0.8); pdf"))

> # n=50, p=0.2일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom31 <- dbinom(0:50, 50, p=0.2)

> plot(0:50, p.binom31, type='h', col='Red', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(50, 0.2); pdf"))

> # n=50, p=0.3일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom32 <- dbinom(0:50, 50, p=0.3)

> plot(0:50, p.binom32, type='h', col='Orange', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(50, 0.3); pdf"))

> # n=50, p=0.5일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom33 <- dbinom(0:50, 50, p=0.5)

> plot(0:50, p.binom33, type='h', col='Yellow', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(50, 0.5); pdf"))

> # n=50, p=0.7일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom34 <- dbinom(0:50, 50, p=0.7)

> plot(0:50, p.binom34, type='h', col='Green', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(50, 0.7); pdf"))

> # n=50, p=0.8일 때 이항분포의 pdf 변수 및 plot 생성

> p.binom35 <- dbinom(0:50, 50, p=0.8)

> plot(0:50, p.binom35, type='h', col='Blue', ylab='P(X=x)', xlab='X', ylim=c(0, 0.22), 

+      lwd=3, main = c("X ~ B(50, 0.8); pdf"))

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

> par(pbpar)

> # 5) 포아송분포의 확률밀도함수

> # plot 영역을 행 우선으로 하여 2행 4열로 나눔 (모수 lambda=n*p를 8개 사용)

> pppar <- par(mfrow=c(2,4))

> # n*p를 6까지 지정할 예정이므로 x를 0부터 15까지로 지정

> x <- 0:15

> # lambda=n*p=0.5부터 6까지, x=0:15 일 때 포아송분포의 pdf 변수 및 plot 생성

> # col(색상)의 고유번호는 1부터 8까지 순환하므로 모수 n*p를 8개까지 사용

> # p.pois의 전체 원소 중 최댓값이 약 0.606이므로 y축의 범위는 0부터 0.6까지 지정

> # 포아송분포의 pdf 변수 p.pois의 순서 번호는 모수 lambda에 맞춰 지정

> # n*p=lambda=0.5일 때의 포아송분포 pdf 변수(p.pois0.5)와 plot 생성

> p.pois0.5 <- dpois(x, 0.5)

> plot(x, p.pois0.5, type='h', col=1, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(0.5); pdf"))

> # n*p=lambda=1일 때의 포아송분포 pdf 변수(p.pois1)와 plot 생성

> p.pois1 <- dpois(x, 1)

> plot(x, p.pois1, type='h', col=2, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(1); pdf"))

> # n*p=lambda=1.5일 때의 포아송분포 pdf 변수(p.pois1.5)와 plot 생성

> p.pois1.5 <- dpois(x, 1.5)

> plot(x, p.pois1.5, type='h', col=3, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(1.5); pdf"))

> # n*p=lambda=2일 때의 포아송분포 pdf 변수(p.pois2)와 plot 생성

> p.pois2 <- dpois(x, 2)

> plot(x, p.pois1, type='h', col=4, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(2); pdf"))

> # n*p=lambda=3일 때의 포아송분포 pdf 변수(p.pois3)와 plot 생성

> p.pois3 <- dpois(x, 3)

> plot(x, p.pois3, type='h', col=5, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(3); pdf"))

> # n*p=lambda=4일 때의 포아송분포 pdf 변수(p.pois4)와 plot 생성

> p.pois4 <- dpois(x, 4)

> plot(x, p.pois4 , type='h', col=6, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(4); pdf"))

> # n*p=lambda=5일 때의 포아송분포 pdf 변수(p.pois5)와 plot 생성

> p.pois5 <- dpois(x, 5)

> plot(x, p.pois5, type='h', col=7, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(5); pdf"))

> # n*p=lambda=6일 때의 포아송분포 pdf 변수(p.pois6)와 plot 생성

> p.pois6 <- dpois(x, 6)

> plot(x, p.pois6, type='h', col=8, ylab='f(x)', xlab='X', ylim=c(0, 0.6), lwd=5, 

+      main = c("X ~ P(6); pdf"))

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

> par(pppar)

 

댓글