본문 바로가기

공부 : 금융공학, 금융, 통계, 공학, 경제 등

예제 4.9 합과 혼합: 컨볼루션 convolution, chisq의 사례로.

정규분포의 합성곱(convolution)을 통해 카이제곱분포를 만들어내는 문제다.

Zv~N(0,1) 의 제곱의 합 sum(Zv^2 ... Zv^2)은 Chisq(v)을 따른다.

convolution 개념이 여기서도 나오는구나...?

그럼 코드 보자. 예제에서는 v=2, n(표본 개수)=10000을 다룬다.

1000은 적으니 10000으로 합시다.

# 내가 직접 짠 방법
n <- 10000
v.1 <- rnorm(n,0,1)
v.2 <- rnorm(n,0,1)
chi <- v.1 ** 2 + v.2 **2
q <- qchisq(ppoints(n),2)
hist(chi,q,cex=0.25)

mean(q); mean(chi);
sd(q);sd(chi);

#책에서 제안한 방법: vector 대신 matrix(2차원) 이용
n <- 10000
nu <- 2 #아 v가 아니라 greek nu였구나.
X <- matrix(rnorm(n*nu),n,nu)^2 #data, n_row, n_col순 입력.
# 잠깐만 **이랑 ^ 둘 다 지원한다고..?
#X[1:5] # X[:5]처럼 앞에 자른 index는 인식하지 않음.
y.1 <- rowSums(X) #방법1: 행 합해서 chisq(2) 만들기
y.2 <- apply(X,MARGIN=1,FUN=sum)
#apply: 대상(X)의 k(=1)번째 축(=행)에 FUNction(여기서는 sum) 적용.
mean(chi); mean(y.1); mean(y.2); mean(q)
sd(chi); sd(y.1); sd(y.2); sd(q); #결과:4개 다 비슷함.

cf. R이 내부적으로 사용하는 자료구조는

  • Vector #1차원/동일한 변수형.
  • Matrix #2차원/동일한 변수형
  • Array #3차원/동일한 변수형
  • Dataframe #여러 변수형으로 이루어진 2차원 Matrix.
  • List #가장 포괄적인 자료형이래요. 잘은 모름. list()

의 5가지라고 한다. 필요할 일 있으면 나중에 또 알아보자.

근데 하다 보니까 R이 어느정도 손에 익는다. 맨 윗 코드는 책 안 보고 그냥 짰거든. 근데 잘 돌아간다. 조금만 더 하면 더 익숙해질 것 같다.