본문 바로가기

대학교 2-2/회귀

2.4 연습문제

확률벡터 X의 공분산행렬 A=

1 0 0
0 9 0
0 0 16

 

(a)

rank(A)를 구하시오

 

> A=matrix(c(1,0,0,0,9,0,0,0,16),ncol=3)

> library(Matrix)

> rankMatrix(A)

[1] 3

attr(,"method")

[1] "tolNorm2"

attr(,"useGrad")

[1] FALSE

attr(,"tol")

[1] 6.661338e-16

 

rank 란?

행렬에 대하여 기본 행연산을 시행하여 행 사다리꼴(row echelon form)으로 변환시켜 놓으면 그 행렬의 계수(rank)를 쉽게 알 수 있음 행 사다리꼴 행렬의 0 아닌 행의 개수를 세면 되기 때문

R로 행렬의 계수(rank)를 구할 때는 rank() 함수를 사용하면 안되며, Matrix 패키지의 rankMatrix() 함수를 사용해야 합니다. R rank() 함수를 쓰면 크기 순서대로 랭킹이 나옴

 

(b)

A의 고유값과 고유벡터, 단위 고유벡터를 구하시오

> lamda=eigen(A)

> lamda

$values

[1] 16  9  1

 

$vectors

     [,1] [,2] [,3]

[1,]    0    0    1

[2,]    0    1    0

[3,]    1    0    0

> unit_eigenvectors = lamda$vectors / sqrt(rowSums(lamda$vectors^2))

> unit_eigenvectors

     [,1] [,2] [,3]

[1,]    0    0    1

[2,]    0    1    0

[3,]    1    0    0

 

lamda$vectors는 고유벡터

sqrt(rowSums(lamda$vectors^2))는 고유벡터들의 제곱합을 행으로 더하고 루트 씌운 값 = 벡터의 크기

벡터 v / 벡터 v의 크기 = 단위(고유)벡터 v

 

(c) A^(-1)을 구하시오

 

> B=solve(A)

> B

     [,1]      [,2]   [,3]

[1,]    1 0.0000000 0.0000

[2,]    0 0.1111111 0.0000

[3,]    0 0.0000000 0.0625

 

A의 역행렬 구하기

 

(d) A를 스펙트럼 분해로 표현하시오

> A_spectrum=lamda$vectors%*%diag(lamda$values)%*%t(lamda$vectors)

> A_spectrum

     [,1] [,2] [,3]

[1,]    1    0    0

[2,]    0    9    0

[3,]    0    0   16

 

lamda$vectors는 고유벡터

t( lamda$vectors)는 고유벡터의 전치행렬

diag(eigen_values)는 대각 행렬 생성

 

스펙트럼 분해란?

A=

여기서

Q: A의 고유벡터로 구성된 행렬

Λ(Lambda): A의 고유값들을 대각선에 가진 대각행렬

 

 

(e) A^(-1)의 고유값과 고유벡터를 구하시오

> B=solve(A)

> B

     [,1]      [,2]   [,3]

[1,]    1 0.0000000 0.0000

[2,]    0 0.1111111 0.0000

[3,]    0 0.0000000 0.0625

> lamda2=eigen(B)

> lamda2

$values

[1] 1.0000000 0.1111111 0.0625000

 

$vectors

     [,1] [,2] [,3]

[1,]    1    0    0

[2,]    0    1    0

[3,]    0    0    1

 

(f) A는 양정치 행렬인가?

> is_positive=all(eigen(A)$values>0)

> is_positive

[1] TRUE

 

all(...) : 모든 요소가 true인지 확인 ( 논리연산자)

양정치 행렬이란:

모든 고유값이 양수: 행렬의 고유값이 모두 0보다 크면, 그 행렬은 양정치행렬입니다.

모든 비영 벡터에 대한 양의 이차형: 임의의 비영 벡터 x에 대해 다음이 성립합니다:  x^TAx>0     

여기서 A는 양정치행렬, x는 0이 아닌 벡터

 

(g) A를 이용하여 X의 상관행렬을 구하시오

> D=diag(diag(A))
> sigma =sqrt(diag(D))
> correlation_matrix = A / outer(sigma, sigma)
> correlation_matrix
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
> D = diag(sqrt(diag(A)))
> correlation_matrix = solve(D) %*% A %*% solve(D)
> correlation_matrix
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
 

상관행렬과 공분산 행렬끼리의 관계

공분산 행렬을 상관 행렬로 변환하기 위해서는 다음과 같은 과정을 거칩니다: R=D^(−1/2)AD^(−1/2)

여기서 A의 대각 원소들(변수의 분산)로 구성된 대각행렬

공분산행렬 A -> A의 대각원소들로 구성된 D 구하기 -> 의 대각 원소의 제곱근을 취해 표준편차 벡터 σ를 구하기 -> 상관행렬 R 구하기

R[i,j]=A[i,j]/ σ[i]σ[j]

또는 

R=D^(1)AD^(1)

D는 공분산 행렬 의 대각 원소의 제곱근으로 구성된 대각 행렬

 

방법1에서는 

 

이렇게 되고 방법 2에서는

D는

이렇게 된다

 

(h) |A|를 구하고 고유값들의 곱과 같은지 알아보시오

> det(A)

[1] 144

> prod(lamda$values)

[1] 144

(i) tr(A)를 구하고 고유값들의 합과 같은지 알아보시오

'대학교 2-2 > 회귀' 카테고리의 다른 글

5.3 연습문제  (0) 2024.11.28
3.10 연습문제  (2) 2024.11.08
3.9 연습문제  (0) 2024.10.16
2.3 연습문제  (2) 2024.09.29
2.5 연습문제  (0) 2024.09.28