반응형

/*******************************************************************************************************************
-- Title : [Stats] 정규분포 및 분위수, 난수 생성
-- Reference : http://rfriend.tistory.com/102
-- Key word : 정규분포 균등분포 지수분포 t분포 F분포 카이제곱분포 plot norm unif exp t() f() chisq dnorm
                  pnorm lower.tail qnorm rnorm hist 누적 분포 함수 분위수 함수
*******************************************************************************************************************/

-- Chart

-- 연속형 확률 분포
    * 정규 분포 (nomal distribution) : norm()
    * 균등 분포 (uniform distribution) : unif()
    * 지수 분포 (exponential distribution) : exp()
    * t-분포 (t-distribution) : t()
    * F-분포 (F-distribution) : F()
    * 카이제곱 분포 (chisq-distribution) : chisq()

-- R Script

# ------------------------------

# -- 정규분포 그래프

# ------------------------------

par(mfrow=c(1,1))


# -- 정규분포 곡선(Normal distribution plot, X~N(0,1))

x <- seq(-3, 3, length=200)

plot(x, dnorm(x, mean=0, sd=1), type='l', main="Normal distribution, X~N(0,1)") 

    

# -- 누적 정규분포 곡선Cumulative normal distribution plot, X~N(0,1)

x <- seq(-3, 3, length=200)

plot(x, pnorm(x, mean=0, sd=1), type='l', main="Cumulative normal distribution, X~N(0,1)")



# ------------------------------

# -- 정규분포의 누적분포함수 계산 : pnorm()

# ------------------------------

#    lower.tail = TRUE 면 분위수 q를 기준으로 왼쪽 -inf부터 q까지 면적 합계 계산

#    lower.tail = FALSE면 분위수 q를 기준으로 q부터 오른쪽 +inf까지 면적 합계 계산


# -- P(-1 <= X <= +1)

pnorm(q=c(1), mean=0, sd=1)                                # 0.8413447

pnorm(q=c(-1), mean=0, sd=1)                               # 0.1586553

pnorm(q=c(1), mean=0, sd=1) - pnorm(q=c(-1), mean=0, sd=1) # 0.6826895

pnorm(q=c(2), mean=0, sd=1)                                # 0.9772499

pnorm(q=c(-2), mean=0, sd=1)                               # 0.02275013

pnorm(q=c(2), mean=0, sd=1) - pnorm(q=c(-2), mean=0, sd=1) # 0.9544997


# -- P(-3 <= X <= +3)

pnorm(q=c(3), mean=0, sd=1)                                # 0.9986501

pnorm(q=c(-3), mean=0, sd=1)                               # 0.001349898

pnorm(q=c(3), mean=0, sd=1) - pnorm(q=c(-3), mean=0, sd=1) # 0.9973002


# -- lower.tail=FALSE

pnorm(q=c(1), mean=0, sd=1, lower.tail = TRUE)             # 0.8413447

pnorm(q=c(1), mean=0, sd=1, lower.tail = FALSE)            # 0.1586553



# ------------------------------

# -- 분위수 함수 : qnorm(p, mean=0, sd=1, lower.tail=TRUE/FALSE)

# ------------------------------

#    정규분포를 따르는 모집단에서 특정 누적분포함수 값 p에 해당하는 분위수 q 를 알고 싶을 때 사용


pnorm(q=c(1), mean=0, sd=1)                                        # 누적분포함수

qnorm(p=0.8413447, mean=0, sd=1, lower.tail = TRUE)        # 분위수함수

qnorm(pnorm(1))



# ------------------------------

# -- 정규분포 난수 발생 : rnorm()

# ------------------------------

random_norm_100 <- rnorm(100, mean=0, sd=1)

random_norm_100

hist(random_norm_100)


반응형

+ Recent posts