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

R plot: 이산형 분포의 근사

by 냉철하마 2021. 6. 9.

> # 1) 초기하분포의 이항근사

> # 초기값 설정 : N=20, p=0.05 (K=1)

> # n=5, x는 0부터 n=5까지, 반올림할 소수점 자리(eps=3) 지정

> N <- 20; p <- 0.05; K <- N*p; n <- 5

> x <- 0:n

> eps <- 3

> # (1) p = 0.05

> # n=5, p=0.05(N=20, K=1)일 때의 초기하분포, 이항분포의 pdf를 벡터로 생성하여 비교

> # round() 함수를 사용하여 소수점 eps (3)번째 자리까지 표시

> # Excel의 round(number, num_digits) 함수와 사용방식 동일

> round(hyper.v1 <- dhyper(x, K, N-K, n), eps)

[1] 0.75 0.25 0.00 0.00 0.00 0.00

> round(binom.v1 <- dbinom(x, n, K/N), eps)

[1] 0.774 0.204 0.021 0.001 0.000 0.000

> # N의 배수 지정: N을 20, 40, 60, 100, 1000, 10000까지로 만들기 위함

> N.times <- c(1, 2, 3, 5, 50, 500)

> # 초기하분포 행렬(hyper.m1)을 sapply와 N.times를 이용하여 생성

> hyper.m1 <- sapply(N.times, FUN=function(N.times)

+   dhyper(x, K*N.times, (N-K)*N.times, n))

> # 초기하분포 행렬의 이름을 입력

> dimnames(hyper.m1) = list(paste0("X=", x),

+                           paste("N=", N*N.times, sep=""))

> # 초기하분포 행렬 출력결과를 소수 형태로 변경

> format(hyper.m1, scientific=F, digits=1)

    N=20         N=40         N=60         N=100        N=1000       N=10000     

X=0 "0.75000000" "0.76282051" "0.76665693" "0.76958995" "0.77337253" "0.77374020"

X=1 "0.25000000" "0.22435897" "0.21697838" "0.21142581" "0.20437963" "0.20370161"

X=2 "0.00000000" "0.01282051" "0.01607247" "0.01838485" "0.02115016" "0.02140615"

X=3 "0.00000000" "0.00000000" "0.00029223" "0.00059306" "0.00107089" "0.00112237"

X=4 "0.00000000" "0.00000000" "0.00000000" "0.00000631" "0.00002652" "0.00002936"

X=5 "0.00000000" "0.00000000" "0.00000000" "0.00000001" "0.00000026" "0.00000031"

> # 이항근사를 확인하기 위해 초기하분포 행렬에 이항분포를 열에 삽입

> # 마찬가지로, 출력결과를 소수 형태로 변경

> format(cbind(hyper.m1, binom.v1), scientific=F, digits=1)

    N=20         N=40         N=60         N=100        N=1000       N=10000     

X=0 "0.75000000" "0.76282051" "0.76665693" "0.76958995" "0.77337253" "0.77374020"

X=1 "0.25000000" "0.22435897" "0.21697838" "0.21142581" "0.20437963" "0.20370161"

X=2 "0.00000000" "0.01282051" "0.01607247" "0.01838485" "0.02115016" "0.02140615"

X=3 "0.00000000" "0.00000000" "0.00029223" "0.00059306" "0.00107089" "0.00112237"

X=4 "0.00000000" "0.00000000" "0.00000000" "0.00000631" "0.00002652" "0.00002936"

X=5 "0.00000000" "0.00000000" "0.00000000" "0.00000001" "0.00000026" "0.00000031"

    binom.v1    

X=0 "0.77378094"

X=1 "0.20362656"

X=2 "0.02143438"

X=3 "0.00112813"

X=4 "0.00002969"

X=5 "0.00000031"

> # 초기하분포 행렬과 이항분포의 차이를 계산하되,

> # round() 함수를 이용하여 소수 eps째 자리까지 계산

> table1 <- round(binom.v1, eps) - round(hyper.m1, eps)

> # 분포 차이 테이블에 이름 부여: X축에는 "X=n", Y에는 HG(N;n,p)

> dimnames(table1) = list(paste("X=", x, sep=""), 

+                         paste0("HG(", N*N.times, ";n,p)"))

> # 테이블 출력

> table1

    HG(20;n,p) HG(40;n,p) HG(60;n,p) HG(100;n,p) HG(1000;n,p) HG(10000;n,p)

X=0      0.024      0.011      0.007       0.004        0.001             0

X=1     -0.046     -0.020     -0.013      -0.007        0.000             0

X=2      0.021      0.008      0.005       0.003        0.000             0

X=3      0.001      0.001      0.001       0.000        0.000             0

X=4      0.000      0.000      0.000       0.000        0.000             0

X=5      0.000      0.000      0.000       0.000        0.000             0

> # 이항분포 벡터의 그래프 생성: x가 0부터 5까지이므로 별도 지정하며,

> # type(그래프유형)을 막대형(h)로 지정

> # y축의 범위를 0부터 0.8까지로 제한 (최대값 약 0.77)

> # col(색), cex(점크기), lwd(선굵기) 지정

> plot(binom.v1, type="h", xlab="X", ylab="P(X=x)", x=0:5, ylim=c(0, 0.8), lwd=7, 

+      col="Pink", main="초기하분포의 이항 근사; X~HG(N; n=5, p=0.05) => B(5, 0.05)")

> # 이항분포 벡터의 점(type="p") 굵기(lwd), pch(점모양) 지정

> points(x=0:5, binom.v1, type='p', col="Pink", pch=15)

> # 초기하분포 결과에 해당하는 그래프 생성, 연결된 점선(type='o')형 그래프

> # 이 때 초기하분포의 행렬을 사용하므로 각 열의 성분을 추출

> # col(색깔)과 pch(점모양)는 1~6까지의 고유번호를 활용, lwd(선굵기)는 2로 고정

> points(x=0:5, hyper.m1[,1], type="o", col=1, lwd=2, pch=1)

> points(x=0:5, hyper.m1[,2], type="o", col=2, lwd=2, pch=2)

> points(x=0:5, hyper.m1[,3], type="o", col=3, lwd=2, pch=3)

> points(x=0:5, hyper.m1[,4], type="o", col=4, lwd=2, pch=4)

> points(x=0:5, hyper.m1[,5], type="o", col=5, lwd=2, pch=5)

> points(x=0:5, hyper.m1[,6], type="o", col=6, lwd=2, pch=6)

> # legend() : 범례 함수, x=3가 좌측이고 y=0.8가 상단인 범례 상자 생성

> # col(색상), pch(점모양), lwd(선굵기)는 각각의 분포와 같게끔 설정

> # legend=c()로 범례의 이름 설정

> legend(3, 0.8, col=c("Pink", 1:6), lwd=c(7, rep(2, 6)), pch=c(15, 1:6), 

+        legend=c("X~B(n=5, p=0.05)", "X~HG(N=20; n=5, p=0.05)", 

+                 "X~HG(N=40; n=5, p=0.05)", "X~HG(N=60; n=5, p=0.05)", 

+                 "X~HG(N=100; n=5, p=0.05)", "X~HG(N=1000; n=5, p=0.05)", 

+                 "X~HG(N=10000; n=5, p=0.05)"))

 

> # (2) p = 0.1

> # p를 0.1로 변경하고, 이에 맞춰 K값 또한 변경

> p <- 0.1; K <- N*p

> # n=5, p=0.1(N=20, K=2)일 때의 초기하분포, 이항분포의 pdf를 벡터로 생성하여 비교

> # round() 함수를 사용하여 소수점 eps (3)번째 자리까지 표시

> round(hyper.v2 <- dhyper(x, K, N-K, n), eps)

[1] 0.553 0.395 0.053 0.000 0.000 0.000

> round(binom.v2 <- dbinom(x, n, K/N), eps)

[1] 0.590 0.328 0.073 0.008 0.000 0.000

> # 초기하분포 행렬(hyper.m2)을 sapply와 N.times를 이용하여 생성

> hyper.m2 <- sapply(N.times, FUN=function(N.times)

+   dhyper(x, K*N.times, (N-K)*N.times, n))

> # 초기하분포 행렬의 이름을 입력

> dimnames(hyper.m2) = list(paste0("X=", x),

+                           paste("N=", N*N.times, sep=""))

> # 초기하분포 행렬 출력결과를 소수 형태로 변경

> format(hyper.m2, scientific=F, digits=1)

    N=20       N=40       N=60       N=100      N=1000     N=10000   

X=0 "0.552632" "0.572929" "0.579054" "0.583752" "0.589832" "0.590424"

X=1 "0.394737" "0.358081" "0.347432" "0.339391" "0.329147" "0.328159"

X=2 "0.052632" "0.065106" "0.068124" "0.070219" "0.072655" "0.072876"

X=3 "0.000000" "0.003830" "0.005240" "0.006384" "0.007929" "0.008083"

X=4 "0.000000" "0.000055" "0.000148" "0.000251" "0.000428" "0.000448"

X=5 "0.000000" "0.000000" "0.000001" "0.000003" "0.000009" "0.000010"

> # 이항근사를 확인하기 위해 초기하분포 행렬에 이항분포를 열에 삽입

> # 마찬가지로, 출력결과를 소수 형태로 변경

> format(cbind(hyper.m2, binom.v2), scientific=F, digits=1)

    N=20       N=40       N=60       N=100      N=1000     N=10000    binom.v2  

X=0 "0.552632" "0.572929" "0.579054" "0.583752" "0.589832" "0.590424" "0.590490"

X=1 "0.394737" "0.358081" "0.347432" "0.339391" "0.329147" "0.328159" "0.328050"

X=2 "0.052632" "0.065106" "0.068124" "0.070219" "0.072655" "0.072876" "0.072900"

X=3 "0.000000" "0.003830" "0.005240" "0.006384" "0.007929" "0.008083" "0.008100"

X=4 "0.000000" "0.000055" "0.000148" "0.000251" "0.000428" "0.000448" "0.000450"

X=5 "0.000000" "0.000000" "0.000001" "0.000003" "0.000009" "0.000010" "0.000010"

> # 초기하분포 행렬과 이항분포의 차이를 계산하되,

> # round() 함수를 이용하여 소수 eps째 자리까지 계산

> table2 <- round(binom.v2, eps) - round(hyper.m2, eps)

> # 분포 차이 테이블에 이름 부여: X축에는 "X=n", Y에는 HG(N;n,p)

> dimnames(table2) = list(paste("X=", x, sep=""), 

+                         paste0("HG(", N*N.times, ";n,p)"))

> # 테이블 출력

> table2

    HG(20;n,p) HG(40;n,p) HG(60;n,p) HG(100;n,p) HG(1000;n,p) HG(10000;n,p)

X=0      0.037      0.017      0.011       0.006        0.000             0

X=1     -0.067     -0.030     -0.019      -0.011       -0.001             0

X=2      0.020      0.008      0.005       0.003        0.000             0

X=3      0.008      0.004      0.003       0.002        0.000             0

X=4      0.000      0.000      0.000       0.000        0.000             0

X=5      0.000      0.000      0.000       0.000        0.000             0

> # 이항분포 벡터의 그래프 생성: x가 0부터 5까지이므로 별도 지정하며,

> # type(그래프유형)을 막대형(h)로 지정

> # y축의 범위를 0부터 0.6까지로 제한 (최대값 약 0.59)

> # col(색), cex(점크기), lwd(선굵기) 지정

> plot(binom.v2, type="h", xlab="X", ylab="P(X=x)", x=0:5, ylim=c(0, 0.6), lwd=7, 

+      col="Pink", main="초기하분포의 이항 근사; X~HG(N; n=5, p=0.1) => B(5, 0.1)")

> # 이항분포 벡터의 점(type="p") 굵기(lwd), pch(점모양) 지정

> points(x=0:5, binom.v2, type='p', col="Pink", pch=15)

> # 초기하분포 결과에 해당하는 그래프 생성, 연결된 점선(type='o')형 그래프

> # 이 때 초기하분포의 행렬을 사용하므로 각 열의 성분을 추출

> # col(색깔)과 pch(점모양)는 1~6까지의 고유번호를 활용, lwd(선굵기)는 2로 고정

> points(x=0:5, hyper.m2[,1], type="o", col=1, lwd=2, pch=1)

> points(x=0:5, hyper.m2[,2], type="o", col=2, lwd=2, pch=2)

> points(x=0:5, hyper.m2[,3], type="o", col=3, lwd=2, pch=3)

> points(x=0:5, hyper.m2[,4], type="o", col=4, lwd=2, pch=4)

> points(x=0:5, hyper.m2[,5], type="o", col=5, lwd=2, pch=5)

> points(x=0:5, hyper.m2[,6], type="o", col=6, lwd=2, pch=6)

> # legend() : 범례 함수, x=3가 좌측이고 y=0.6가 상단인 범례 상자 생성

> # col(색상), pch(점모양), lwd(선굵기)는 각각의 분포와 같게끔 설정

> # legend=c()로 범례의 이름 설정

> legend(3, 0.6, col=c("Pink", 1:6), lwd=c(7, rep(2, 6)), pch=c(15, 1:6), 

+        legend=c("X~B(n=5, p=0.1)", "X~HG(N=20; n=5, p=0.1)", 

+                 "X~HG(N=40; n=5, p=0.1)", "X~HG(N=60; n=5, p=0.1)", 

+                 "X~HG(N=100; n=5, p=0.1)", "X~HG(N=1000; n=5, p=0.1)",

+                 "X~HG(N=10000; n=5, p=0.1)"))

> # (3) p = 0.5

> # p를 0.5로 변경하고, 이에 맞춰 K값 또한 변경

> p <- 0.5; K <- N*p

> # n=5, p=0.5(N=20, K=10)일 때의 초기하분포, 이항분포의 pdf를 벡터로 생성하여 비교

> # round() 함수를 사용하여 소수점 eps (3)번째 자리까지 표시

> round(hyper.v3 <- dhyper(x, K, N-K, n), eps)

[1] 0.016 0.135 0.348 0.348 0.135 0.016

> round(binom.v3 <- dbinom(x, n, K/N), eps)

[1] 0.031 0.156 0.312 0.312 0.156 0.031

> # 초기하분포 행렬(hyper.m3)을 sapply와 N.times를 이용하여 생성

> hyper.m3 <- sapply(N.times, FUN=function(N.times)

+   dhyper(x, K*N.times, (N-K)*N.times, n))

> # 초기하분포 행렬의 이름을 입력

> dimnames(hyper.m3) = list(paste0("X=", x),

+                           paste("N=", N*N.times, sep=""))

> # 초기하분포 행렬 출력결과를 소수 형태로 변경

> format(hyper.m3, scientific=F, digits=4)

     N=20    N=40    N=60    N=100   N=1000   N=10000  

X=0 "0.01625" "0.02356" "0.02609" "0.02814" "0.03094" "0.03122"

X=1 "0.13545" "0.14726" "0.15054" "0.15295" "0.15594" "0.15622"

X=2 "0.34830" "0.32918" "0.32337" "0.31891" "0.31313" "0.31256"

X=3 "0.34830" "0.32918" "0.32337" "0.31891" "0.31313" "0.31256"

X=4 "0.13545" "0.14726" "0.15054" "0.15295" "0.15594" "0.15622"

X=5 "0.01625" "0.02356" "0.02609" "0.02814" "0.03094" "0.03122"

> # 이항근사를 확인하기 위해 초기하분포 행렬에 이항분포를 열에 삽입

> # 마찬가지로, 출력결과를 소수 형태로 변경

> format(cbind(hyper.m3, binom.v3), scientific=F, digits=4)

     N=20    N=40    N=60    N=100   N=1000  N=10000 binom.v3 

X=0 "0.01625" "0.02356" "0.02609" "0.02814" "0.03094" "0.03122" "0.03125"

X=1 "0.13545" "0.14726" "0.15054" "0.15295" "0.15594" "0.15622" "0.15625"

X=2 "0.34830" "0.32918" "0.32337" "0.31891" "0.31313" "0.31256" "0.31250"

X=3 "0.34830" "0.32918" "0.32337" "0.31891" "0.31313" "0.31256" "0.31250"

X=4 "0.13545" "0.14726" "0.15054" "0.15295" "0.15594" "0.15622" "0.15625"

X=5 "0.01625" "0.02356" "0.02609" "0.02814" "0.03094" "0.03122" "0.03125"

> # 초기하분포 행렬과 이항분포의 차이를 계산하되,

> # round() 함수를 이용하여 소수 eps째 자리까지 계산

> table3 <- round(binom.v3, eps) - round(hyper.m3, eps)

> # 분포 차이 테이블에 이름 부여: X축에는 "X=n", Y에는 HG(N;n,p)

> dimnames(table3) = list(paste("X=", x, sep=""), 

+                         paste0("HG(", N*N.times, ";n,p)"))

> # 테이블 출력

> table3

    HG(20;n,p) HG(40;n,p) HG(60;n,p) HG(100;n,p) HG(1000;n,p) HG(10000;n,p)

X=0      0.015      0.007      0.005       0.003        0.000         0.000

X=1      0.021      0.009      0.005       0.003        0.000         0.000

X=2     -0.036     -0.017     -0.011      -0.007       -0.001        -0.001

X=3     -0.036     -0.017     -0.011      -0.007       -0.001        -0.001

X=4      0.021      0.009      0.005       0.003        0.000         0.000

X=5      0.015      0.007      0.005       0.003        0.000         0.000

> # 이항분포 벡터의 그래프 생성: x가 0부터 5까지이므로 별도 지정하며,

> # type(그래프유형)을 막대형(h)로 지정

> # y축의 범위를 0부터 0.6까지로 제한 (추후 범례 위치를 위해 범위 넓힘)

> # col(색), cex(점크기), lwd(선굵기) 지정

> plot(binom.v3, type="h", xlab="X", ylab="P(X=x)", x=0:5, ylim=c(0, 0.6), lwd=7, 

+      col="Pink", main="초기하분포의 이항 근사; X~HG(N; n=5, p=0.5) => B(5, 0.5)")

> # 이항분포 벡터의 점(type="p") 굵기(lwd), pch(점모양) 지정

> points(x=0:5, binom.v3, type='p', col="Pink", pch=15)

> # 초기하분포 결과에 해당하는 그래프 생성, 연결된 점선(type='o')형 그래프

> # 이 때 초기하분포의 행렬을 사용하므로 각 열의 성분을 추출

> # col(색깔)과 pch(점모양)는 1~6까지의 고유번호를 활용, lwd(선굵기)는 2로 고정

> points(x=0:5, hyper.m3[,1], type="o", col=1, lwd=2, pch=1)

> points(x=0:5, hyper.m3[,2], type="o", col=2, lwd=2, pch=2)

> points(x=0:5, hyper.m3[,3], type="o", col=3, lwd=2, pch=3)

> points(x=0:5, hyper.m3[,4], type="o", col=4, lwd=2, pch=4)

> points(x=0:5, hyper.m3[,5], type="o", col=5, lwd=2, pch=5)

> points(x=0:5, hyper.m3[,6], type="o", col=6, lwd=2, pch=6)

> # legend() : 범례 함수, x=3가 좌측이고 y=0.65가 상단인 범례 상자 생성

> # col(색상), pch(점모양), lwd(선굵기)는 각각의 분포와 같게끔 설정

> # legend=c()로 범례의 이름 설정

> legend(3, 0.65, col=c("Pink", 1:6), lwd=c(7, rep(2, 6)), pch=c(15, 1:6), 

+        legend=c("X~B(n=5, p=0.5)", "X~HG(N=20; n=5, p=0.5)", 

+                 "X~HG(N=40; n=5, p=0.5)", "X~HG(N=60; n=5, p=0.5)", 

+                 "X~HG(N=100; n=5, p=0.5)", "X~HG(N=1000; n=5, p=0.5)", 

+                 "X~HG(N=10000; n=5, p=0.5)"))

 

> # 2) 이항분포의 포아송근사

> # 초기값 설정: 이항분포의 모수 n=5, p=0.2일 때

> # 포아송분포의 모수 lambda=n*p=1로 근사하는 지를 확인

> n <- 5; p <- 0.2

> # x = 0부터 5까지, round() 함수로 반올림할 소수의 자리수(eps) = 3

> x <- 0:5; eps <- 3

> # n=5, p=0.2일 때의 이항분포와 포아송분포의 pdf를 벡터로 생성하여 비교

> round(binom.v <- dbinom(x, n, p), eps)

[1] 0.328 0.410 0.205 0.051 0.006 0.000

> round(pois.v <- dpois(x, n*p), eps)

[1] 0.368 0.368 0.184 0.061 0.015 0.003

> # n의 배수 지정: n을 5, 10, 20, 50, 100, 1000까지로 만들기 위함

> n.times <- c(1, 2, 4, 10, 20, 200)

> # 이항분포 행렬(binom.m)을 sapply와 n.times를 이용하여 생성

> binom.m <- sapply(n.times, FUN=function(n.times)

+   dbinom(x, n*n.times, p/n.times))

> # 이항분포 행렬의 이름을 입력

> dimnames(binom.m) = list(paste0("X=", x),

+                          paste("n=", n*n.times, sep=""))

> # 이항분포 행렬을 소수 형식으로 출력

> format(binom.m, scientific=F, digits=3)

     n=5      n=10     n=20    n=50     n=100    n=1000   

X=0 "0.32768" "0.34868" "0.35849" "0.36417" "0.36603" "0.36770"

X=1 "0.40960" "0.38742" "0.37735" "0.37160" "0.36973" "0.36806"

X=2 "0.20480" "0.19371" "0.18868" "0.18580" "0.18486" "0.18403"

X=3 "0.05120" "0.05740" "0.05958" "0.06067" "0.06100" "0.06128"

X=4 "0.00640" "0.01116" "0.01333" "0.01455" "0.01494" "0.01529"

X=5 "0.00032" "0.00149" "0.00224" "0.00273" "0.00290" "0.00305"

> # 포아송근사를 확인하기 위해 이항분포 행렬에 포아송분포를 열에 삽입

> format(cbind(binom.m, pois.v), scientific=F, digits=3)

     n=5      n=10    n=20     n=50     n=100   n=1000  pois.v   

X=0 "0.32768" "0.34868" "0.35849" "0.36417" "0.36603" "0.36770" "0.36788"

X=1 "0.40960" "0.38742" "0.37735" "0.37160" "0.36973" "0.36806" "0.36788"

X=2 "0.20480" "0.19371" "0.18868" "0.18580" "0.18486" "0.18403" "0.18394"

X=3 "0.05120" "0.05740" "0.05958" "0.06067" "0.06100" "0.06128" "0.06131"

X=4 "0.00640" "0.01116" "0.01333" "0.01455" "0.01494" "0.01529" "0.01533"

X=5 "0.00032" "0.00149" "0.00224" "0.00273" "0.00290" "0.00305" "0.00307"

> # 이항분포 행렬과 포아송분포의 차이를 계산하되,

> # round() 함수를 이용하여 소수 eps째 자리까지 계산

> table4 <- round(pois.v, eps) - round(binom.m, eps)

> # 분포 차이 테이블에 이름 부여: X축에는 "X=n", Y에는 B(n,p)

> dimnames(table4) = list(paste("X=", x, sep=""), 

+                         paste0("B(", n*n.times, ",", p/n.times, ")"))

> # 테이블 출력

> table4

      B(5,0.2) B(10,0.1)   B(20,0.05) B(50,0.02)   B(100,0.01)    B(1000,0.001)

X=0    0.040     0.019      0.010      0.004       0.002             0

X=1   -0.042    -0.019     -0.009     -0.004      -0.002             0

X=2   -0.021    -0.010     -0.005     -0.002      -0.001             0

X=3    0.010     0.004      0.001      0.000       0.000             0

X=4    0.009     0.004      0.002      0.000       0.000             0

X=5    0.003     0.002      0.001      0.000       0.000             0

> # 포아송분포 벡터의 그래프 생성: x가 0부터 5까지이므로 별도 지정하며,

> # type(그래프유형)을 막대형(h)로 지정, y축의 범위를 0부터 0.4로 제한 (최대값 약 0.409)

> # col(색), cex(점크기), lwd(선굵기) 지정

> plot(pois.v, type="h", xlab="X", ylab="P(X=x)", x=0:5, ylim=c(0, 0.4), 

+      col="Brown", lwd=7, main="이항분포의 포아송 근사; X~B(n=5, p=0.2) => P(n*p=1)")

> # 포아송분포 벡터의 점(type="p") 굵기(lwd), pch(점모양) 지정

> points(x=0:5, pois.v, type='p', col="Brown", pch=15)

> # 이항분포 결과에 해당하는 그래프 생성, 연결된 점선(type='o')형 그래프

> # 이 때 이항분포의 행렬을 사용하므로 각 열의 성분을 추출

> # col(색깔)은 무지개색, pch(점모양)는 1~6까지의 고유번호를 활용, lwd(선굵기)는 2로 고정

> points(x=0:5, binom.m[,1], type="o", col="Red", lwd=2, pch=1)

> points(x=0:5, binom.m[,2], type="o", col="Orange", lwd=2, pch=2)

> points(x=0:5, binom.m[,3], type="o", col="Yellow", lwd=2, pch=3)

> points(x=0:5, binom.m[,4], type="o", col="Green", lwd=2, pch=4)

> points(x=0:5, binom.m[,5], type="o", col="Blue", lwd=2, pch=5)

> points(x=0:5, binom.m[,6], type="o", col="Purple", lwd=2, pch=6)

> # legend() : 범례 함수, x=3가 좌측이고 y=0.4가 상단인 범례 상자 생성

> # col(색상), pch(점모양), lwd(선굵기)는 각각의 분포와 같게끔 설정

> # legend=c()로 범례의 이름 설정

> legend(3, 0.4, 

+        legend=c((paste("X~P(1)")), 

+                 "X~B(5, 0.2)","X~B(10, 0.1)", "X~B(20, 0.05)", 

+                 "X~B(50, 0.02)", "X~B(100, 0.01)", "X~B(1000, 0.001)"),

+        col=c("Brown", "Red", "Orange", "Yellow", "Green", "Blue", "Purple"), 

+        pch=c(15, 1:6), lwd=c(7, rep(2,6))

+ )

댓글