Python/기타 코딩

[R 프로그래밍] 가능도 함수 그리기, 구간추정, 신뢰구간

AI 꿈나무 2020. 9. 23. 17:53
반응형

 

R을 이용하여 가능도 함수를 그리고, 신뢰구간을 시각화 해보겠습니다.

 


 

1. 가능도 함수 그리기

 X~B(10,theta)인 이항분포에서 가능도함수를 그려보도록 하겠습니다.

 이상분포의 확률질량함수는 다음과 같습니다.

 

 가능도함수는 다음과 같습니다.

 $\theta$에 관심을 갖은 함수입니다.

 

# 가능도함수 생성
# x : theta, y : x
L <- function(x,n,y)
{
  # x: theta, y: x
  choose(n,y)*x^y *(1-x)^(n-y)
}

# 시각화
# 12번중 5번 성공할 확률
curve(L(x,12,5),0,1,xlab=expression(theta),ylab=expression(L(theta)))

가능도함수 시각화

 

2. 구간추정과 신뢰구간

 $\mu$ = 10, $\sigma$ = 5 $n$ = 20 일때 구간추정을 하도록 하겠습니다.

# 구간추정
mu <- 10
sigma <- 5
n <- 20

x <- rnorm(n,mu,sigma) # r은 랜덤넘버

z <- qnorm(0.975)      # 왼쪽에서 97.5%에 해당하는 값
z <- qnorm(0.025,lower.tail=F) # 오른쪽 2.5%에 해당하는 값

 

이제 95% 신뢰 구간을 구현하겠습니다.

# 이 구간이 95% 신뢰 구간
lb <- mean(x)-z*sigma/sqrt(n) # 하한값
ub <- mean(x)+z*sigma/sqrt(n) # 상한값

plot(c(1,100),c(0,20),type="n",xlab="반복수",ylab="신뢰구간") # 그래프 생성

# 표본값이 신뢰구간에 포함되는지 확인
n <- 10 # 표본샘플 10개
plot(c(1,100),c(0,20),type="n",xlab="반복수",ylab="신뢰구간")
for (i in 1:100)
{
  x <- rnorm(n,mu,sigma)
  lb <- mean(x)-z*sigma/sqrt(n)
  ub <- mean(x)+z*sigma/sqrt(n)
  if (ub < mu | lb > mu)             # 신뢰구간을 벗어나면 빨강색으로 표기
    lines(c(i,i),c(lb,ub),col="red")
  else  
    lines(c(i,i),c(lb,ub))
}
abline(h=mu,col="blue")          # 평균값은 블루

신뢰구간

 

반응형