기본 콘텐츠로 건너뛰기

라벨이 선형대수인 게시물 표시

통계관련 함수와 메서드 사전

A B C d E F G H I K L M N O P Q R S T U V W Z A statsmodels.ap.stats.anova_lm(x) statsmodels.formula.api.ols 에 의해 생성되는 모형 즉, 클래스 인스턴스(x)를 인수로 받아 anova를 실행합니다. np.argsort(x, axis=-1, kind=None) 객체 x를 정렬할 경우 각 값에 대응하는 인덱스를 반환합니다. Axis는 기준 축을 지정하기 위한 매개변수로서 정렬의 방향을 조정할 수 있음(-1은 기본값으로 마지막 축) pandas.Series.autocorr(lag=1) lag에 전달한 지연수에 따른 값들 사이의 자기상관을 계산 B scipy.stats.bernoulli(x, p) 베르누이분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 p: 단일 시행에서의 확률 scipy.stats.binom(x, n, p) 이항분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 n: 총 시행횟수 p: 단일 시행에서의 확률 C scipy.stats.chi2.pdf(x, df, loc=0, scale=1) 카이제곱분포의 확률밀도함수를 계산 $$f(x, k) =\frac{1}{2^{\frac{k}{2}−1}Γ(\frac{k}{2})}x^{k−1}\exp\left(−\frac{x^2}{2}\right)$$ x: 확률변수 df: 자유도 pd.concat(objs, axis=0, join=’outer’, …) 두 개이상의 객체를 결합한 새로운 객체를 반환. objs: Series, DataFrame 객체. Axis=0은 행단위 즉, 열 방향으로 결합, Axis=1은 열단위 즉, 행 방향으

선형변환(Linear transformation)

내용 선형변환 변환 영변환과 항등변환 표준기저 특별한 선형변환 동일차원으로 선형변환의 경우 일정각도의 이동 선형변환(Linear transformation) 선형변환 선형변환(Linear transformation, T: U → V)은 어떤 벡터 공간의 U를 다른 벡터 공간 V로 옮기는 함수입니다. 이러한 함수는 식 6.1를 만족해야 합니다. $$\begin{align}\tag{1} &\forall \; \text{u}_1,\; \text{u}_2 \in \text{U} \rightarrow T(\text{u}_1 + \text{u}_2) = T(\text{u}_1)+T(\text{u}_2)\\ &\forall \; \text{u} \in \text{U} \cap α \in \text{C} \rightarrow T(\alpha \text{u}) = \alpha T(\text{u}) \end{align}$$ 위 식에서 U와 C는 각각 벡터와 스칼라입니다. 식 1은 벡터들의 선형결합 의 조건과 같습니다. 즉, 선형결합이 성립되는 벡터들은 선형 변환이 가능하다는 것을 의미합니다. 예)  다음 식이 선형변환인지를 결정합니다. $$\begin{align}&T\left( \begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix}\right)=\begin{bmatrix} 2x_1+x_3\\-4x_2\end{bmatrix}\\ &A=\begin{bmatrix} 2&0&1\\0&-4&0 \end{bmatrix} \end{align}$$ 정의역의 x 1 , x 2 , x 3 에 대한 위 변환이 성립되면 변환의 결과(T 1 , T 2 )에 대한 행렬방정식은 다음과 같습니다. $$Ax = T \right

변환(Transform)과 핵 그리고 치역(Kernel and Range)

내용 정의역, 치역과 공역의 관계 가역행렬 변환(Transform)과 핵 그리고 치역(Kernel and Range) 변환은 어떤 수 x를 식에 대입하여 그 값에 대응하는 결과인 y를 반환하는 함수를 의미합니다. 함수에 입력되는 값의 범위와 개수는 항상 결과의 범위나 개수를 확정하지 못합니다. 즉, 함수에 따라 1개의 실수 입력 값은 여러 개의 유리수를 포함하는 값으로 출력될 수도 있습니다. 함수에 입력 범위를 정의역 (domain), 가능한 모든 결과물들의 범위를 공역 (codomain)이라고 합니다. 예로서 python에서는 모든 수를 정수로 만들기 위해 int() 함수를 사용합니다. 이 경우 정의역은 실수이지만 공역은 정수가 될 것입니다. import numpy as np import numpy.linalg as la import sympy as sp import matplotlib.pyplot as plt from matplotlib import rcParams rcParams['font.family'] = 'nanumgothic' rcParams['font.weight'] = 'bold' rcParams['font.size'] = '11' x=3.24 y=int(x) y 3 공역 중 함수의 결과들을 상 (image)이라 하며 이 상들의 집합을 치역 (range)이라고 합니다. 치역은 공역의 부분 집합이 됩니다. 예를 들어 이러한 정의역(x)과 상(치역)의 관계는 변환에 관계된 행렬 A에 의해 식 1과 같이 선형결합의 형태로서 다음과 같이 작성할 수 있습니다. $$A= \begin{bmatrix} -2&-1\\0&-4 \end{bmatrix},\quad \text{x(정의역)}=\begin{bmatrix} -3\\1 \end{bmatrix},\quad \text{

마코브 체인(Markov Chains)

내용 확률행렬의 조건 마코브 체인(Markov Chains) Andrey Markov의 이름을 딴 Markov 체인은 한 "상태"(상황 또는 값 집합)에서 다른 "상태"로 이동하는 수학적 시스템입니다. 예를 들어, 아기의 행동에 대한 Markov 체인 모델을 만든 경우 "놀기", "먹기", "자고 있음" 및 "울음"을 상태로 포함할 수 있으며 다른 행동과 함께 상태 공간 (state space)을 형성할 수 있습니다. 또한, 상태 공간의 맨 위에 있는 Markov 체인은 한 상태에서 다른 상태로의 "전환" 확률을 알려줍니다. 예를 들어 현재 놀이 중인 아기가 다음 상태에서 먼저 울지 않고 5분이내에 잠들 확률을 계산할 수 있습니다. 그림 1. 위 그림은 두 개의 상태(A 및 B)가 있는 경우로 4개의 가능한 전환이 있습니다(상태가 다시 자체로 전환될 수 있기 때문에 2가 아님). 우리가 'A'에 있으면 'B'로 전환하거나 'A'에 머무를 수 있습니다. 'B'에 있으면 'A'로 전환하거나 'B'에 머무를 수 있습니다. 이 두 상태 다이어그램에서 어떤 상태에서 다른 상태로 전환될 확률은 0.5입니다. 상태의 전환을 나타내기 위해 위의 Markov 체인 다이어그램 대신에 다음과 같은 전환행렬을 사용합니다. 이 행렬은 상태 전환의 확률을 즉, 전환확률을 계산하기 위해 사용합니다. A B A P(A|A):0.5 P(B|A):0.5 B P(A|B):0.5 P(B|B):0.5 이와 같은 마코브 체인은 생물학, 비즈니스, 화학, 공학, 물리학 등 다양한 상황에 적용되는 수학적 모델로서 동일한 방식으로 여러 번 수행되는 실험 또는 측정을 설명하는 데 사용됩니다. 여기서 각 시도(trial)의

Gram-Schmidt 과정

Gram-Schmidt 과정  그람 슈미트 과정은 0이 아닌 R n 의 부분공간에서 직교 또는 정규직교 기저를 생성하는 단순한 알고리즘입니다. import numpy as np import numpy.linalg as LA from sympy import * def coefS(x, y):       x=np.dot(x.T, y)       y=np.dot(y.T, y)       return(x/y) 예 1) W=Span{$x 1 , x 2 }일 때 W에서 직교 기저인 {v 1 , v 2 }? $x_1 =\left[\begin{array}{r}3\\6\\0\end{array}\right],\; x_2=\left[\begin{array}{r}1\\2\\2\end{array}\right]$ 이 예에 대한 그림은 다음과 같습니다. 위 그림에서 공간 W의 직교기저는 v 1 , v 2 로 나타낼 수 있으며 벡터 x 2 은 벡터 $x 1 위에 직교 투영됩니다. 그러므로 v 1 =x 1 관계를 가정할 수 있습니다. 그러므로 x 2 는 다음과 같이 분해 할 수 있습니다. x 2 = v 2 +p 위 식에서 p는 직교 기저인 x 1 =v 1 을 사용하여 다음과 같이 계산됩니다. ( 직교 투영 의 Eq. 1 참조) $p=\frac{x_2 \cdot x_1}{x_1 \cdot x_1}x_1$ 그러므로 $v_2=x_2-\frac{x_2 \cdot x_1}{x_1 \cdot x_1}x_1$ p=coefS(x2,x1)*x1; p      array([[1.],                    [2.],                    [0.]]) v2=x2-p; v2      array([[ 0.],                    [ 0.],                    [ 2.]]) x 2 =Span{v 1 , v 2 }가 성립합니다. 즉, v 1 , v 2 의 선형결합으로 x 2 가 생성되며 선형

Affin combination과 linear combination

기하학적으로 두 점들이 이루는 집합 S에서 이 점들을 통과하는 선이 그 집합내에 존재한다면 그 집합은  affin입니다. 이것은 S의 두 점에 대한 모든 affin combination은  S를 포함합니다. 정리하면 집합 S의 점들에 대한 모든 affin combination이 S 내에 존재한다면 그 집합은 Affine 입니다. S=aff S → S는 affine 간단히 말하면 어떤 집합 S는 선형결합이 존재하고 그 집합의 원소들 사이의 Affine combination에서도 선형결합이 성립해야 한다는 것입니다. 이것은  linear combination이 성립한다면 Affine combination이 이루어지는 것을 의미 합니다. 선형관계성을 알아보기 위해 동차시스템(homogeneous system) 을 먼저 정의합니다. 어떤 시스템을 동차시스템으로 만드는 것은 다음과 같습니다. Ax = b → Ax-b=0 이 변화를 행렬 형태로 나타내보면 다음과 같습니다.  $A=\left[\begin{matrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{matrix}\right], x=\left[\begin{matrix}x_{1}\\x_{2}\end{matrix}\right], b=\left[\begin{matrix}b_{1}\\b_{2}\end{matrix}\right] $ $\left[\begin{matrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{matrix}\right]\left[\begin{matrix}x_{1}\\x_{2}\end{matrix}\right]=\left[\begin{matrix}b_{1}\\b_{2}\end{matrix}\right] \\ \rightarrow \left[\begin{matrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{matrix}\right]\left[\begin{matrix}x_{1}\\x_{2}\end{

affin combination이란

f(x) =f($x_1, x_2, \cdots. x_n$) 위 함수에서 $x_1, x_2, \cdots. x_n$은 함수 f의 인수들 입니다. 이 함수는 $R^n \rightarrow R^n$의 영역에서 이루어 집니다. 즉, n 차원의 실수 집합에서  n 차원의 실수 집합에 대응하는 함수를 나타내는 것입니다. 예를 들어 4차원 실수 집합을 1차원으로 대응시키는 함수는 다음과 같이 나타냅니다. $R^4 \rightarrow R$ f(x) = $x_1+x_2-x_4^2$ 위 함수는 각 항의 계수 벡터와 변수를 원소로 하는 벡터로 나타낼 수 있습니다. $a= \left[\begin{array}{r}1\\1\\0\\-1 \end{array}\right], \quad x=\left[\begin{array}{r}x_1\\x_2\\x_3\\x_4\end{array}\right]$ $f(x)= a^T x=\left[\begin{matrix}1&1&0&-1 \end{matrix}\right] \left[\begin{matrix}x_1\\x_2\\x_3\\x_4\end{matrix}\right]$ 위 형태는 벡터와 행렬 곱에서 앞 벡터의 열의 수와 뒤 벡터의 행의 수가 일치하여야 계산 될 수 있기 때문에 열벡터인 경우 앞 벡터는 전치시켜야 합니다. 위의 표현은 다음의 경우에서도 성립됩니다. $f(\alpha x+\beta y)=a^T(\alpha x+\beta y)=\alpha  a^T x+ \beta a ^Ty=\alpha f(x)+ \beta f(y)$ $\alpha, \beta$: scalar 위 함수는 벡터들의 선형결합 입니다. Affin 결합은 이러한 선형결합의 특별한 형태입니다. 즉, 다음과 같습니다. $c_1v_1+ c_2v_2 + \cdots +c_nv_n$ 위와 같은 선형결합에서 모든 계수의 합이 1인 경우를 $c_1+c_2+\cdots+c_n=1$을 Affin combination 이라고 합니다. 이 Affin

직교행렬과 주성분분석

주성분분석(Principal Component Analysis) 다음 행렬을 평균-편차 형태 로 가정합니다. $\left[\begin{matrix} X_1 & X_2 & \cdots &X_N \end{matrix}\right]$ 주성분분석의 목적은 X=PY 형태로 변환가능한  $p \times p$차원의 직교 행렬 P를 발견하는 것입니다. $P=\left[\begin{matrix} u_1 & u_2 & \cdots &u_p \end{matrix}\right]$ $\left[\begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_p \end{matrix}\right]=\left[\begin{matrix} u_1 & u_2 & \cdots &u_p \end{matrix}\right]\left[\begin{matrix} y_1 \\ y_2 \\ \vdots \\ y_p \end{matrix}\right]$ 위 식에서 새로운 변수 $y_1, y_2, \cdots, y_p$는 상관성이 없고 내림차순으로 정렬된 형태입니다.  Y는 P에 대해 X의 좌표벡터 가 됩니다. P가 직교행렬이므로 다음이 성립합니다. $P^{-1}PY=P^TPY=P^TX \rightarrow Y=P^TX$ 위 식으로 부터 새로운 변수인 Y역시 평균-편차 형태이므로 Y의 공분산 행렬을 유도 할 수 있습니다. $YY^T=(P^TX)(P^TX)^T=P^TXX^TP=P^TSP$ S는 변수 X에 대한 공분산 행렬로서 대칭행렬입니다. 위식에서  $YY^T=A$라 하고 S에 대해 정리하면 다음과 같습니다. $S=PAP^T$ S가 대칭행렬이고 P가 직교행렬이므로 위 식은 스펙트럴 분해 와 동일한 형태가 됩니다. 그러므로 행렬 $A=YY^T$는 행렬 S의 고유값들을 내림차순으로 정렬한 값들을 대각원소로 하는 대각행렬이 됩니다. 결과적으로 새로운 변수의 공분산 행렬은 원래의 변수의 공분산 행렬의 고유값에 의

행렬형태의 평균, 분산 그리고 공분산

평균과 공분산  관측값의 샘플을 $p \times N$ 차원의 행렬로 고려합니다. $\left[\begin{array}{rrrr}X_1 & X_2 & \cdots & X_N \end{array}\right]$ X: 열벡터 이 샘플 평균(sample mean, M)은 $M=\frac{1}{M}(X_1+X_2+\cdots+X_N)$ 평균은 모든 관찰값들의 중간(center)를 나타냅니다. 각 값들에 대한 평균과의 차이를 다음과 같이 나타냅니다. $\hat{X}_k = X_k-M \qquad k=1, \cdots, N$ 위 식은 결과적으로 평균을 0로 하기 위해 모든 관찰값들을 평균 만큼 이동시킨 것으로 관찰값들과 동일한 차원의 행렬 B로 생성됩니다. 이 행렬은 평균-편차 형태(mean-deviation form)이라고 합니다. $B=\left[\begin{array}{rrrr}X_1 & X_2 & \cdots & X_N \end{array}\right]$ 정방행렬이 아닌 행렬은 그 행렬의 전치행렬과의 곱으로 생성할 수 있으며 이것은 이차형태 를 나타내는 기본 구조입니다. 이것을 적용하여 샘플 공분산 행렬(sample covariance matrix)는 다음과 같이 $p \times p$ 행렬 S로 정의 됩니다. $S=\frac{1}{N-1} BB^T$ 위 식에서 $BB^T$는 0을 포함하여 항상 양수이므로 semidefinite 이므로 S 역시 semidefinite입니다. >>> import numpy as np >>> import numpy.linalg as LA >>> import pandas as pd >>> from sympy import * >>> np.set_printoptions(precision=4, suppress=True) 1. 다음행렬의 평균과 공분산 행렬? $X_1=\left[\b

가역행렬에 대한 정의

가역행렬의 정의 n × n 차원의 정방행렬 A가 가역행렬(invertible matrix)일 경우 다음은 모두 동치입니다. 1. A의 행렬식은 0이 아닙니다. (det A ≠ 0) numpy.linalg.det() 함수에 의해 계산됩니다. import numpy as np import numpy.linalg as la import sympy as sp A=np.array([[2,3],[6, 8]]); A array([[2, 3], [6, 8]]) round(la.det(A), 4) -2.0 2. 역행렬이 존재합니다. numpy.linalg.inv() 함수에 의해 계산됩니다. Ainv=la.inv(A); Ainv array([[-4. , 1.5], [ 3. , -1. ]]) np.dot(A, Ainv) array([[1., 0.], [0., 1.]]) 3. 가역행렬 A의 전치행렬 A T 역시 가역행렬입니다. 이 두행렬의 행렬식은 같습니다. det(A) = det(A T ) AT=A.T; AT array([[2, 6], [3, 8]]) la.inv(AT) array([[-4. , 3. ], [ 1.5, -1. ]]) round(la.det(AT), 4)==round(la.det(A), 4) True round(la.det(AT), 4) -2.0 4. 행렬방정식 Ax=c에 대해 유일한 해를 가집니다. 식의 해를 계산하기 위해 numpy.linalg.solve() 함수를 적용합니다. 식의 c즉 상수항이 다음 코드의 const라면 A가 가역행렬이므로 변수 x의 해를 계산할 수 있습니다. const=np.array([2,1]).reshape(2,1);const array([[2], [1]]) sol=la.solve(A, const); s

특이값 분해

특이값 분해란? 특이값 특이값 분해 특이값분해(Singular Value Decomposition) 특이값 분해란? 고유 분해 , 스펙트럴 분해 등은 가역적인 정방 행렬 을 대상으로 합니다. 이에 반해 특이값을 이용하는 특이값 분해 (Singular Value Decomposition)는 비정방 행렬 을 정방행렬로 변형하여 분해할 수 있는 방법으로 선형 대수의 계산에서 가장 유용하게 사용되고 있습니다. 비정방행렬은 행렬에 그 행렬의 전치행렬과의 행렬곱으로 정방행렬로 만들 수 있습니다. import numpy as np import numpy.linalg as la import sympy as sp x=np.random.randint(0, 11, (3, 4));x array([[6, 5, 1, 1], [0, 5, 8, 2], [1, 9, 7, 4]]) xx=np.dot(x.T, x); xx array([[ 37, 39, 13, 10], [ 39, 131, 108, 51], [ 13, 108, 114, 45], [ 10, 51, 45, 21]]) 위 결과와 같이 전치행렬과의 행렬곱으로 생성한 정방행렬은 대칭행렬이 됩니다. 이 대칭행렬의 고유행렬은 다음과 같이 전치행렬과 역행렬이 같으므로 정규직교행렬 이 됩니다. 이 결과는 정방행렬이면서 대칭행렬 이므로 행렬의 대각화에 기반을 둔 분해(decomposition)가 가능합니다. 최종적으로 x T x 분해 결과로 부터 x의 분해를 달성할 수 있습니다. d, p=la.eig(xx) np.around(p.T, 6)==np.around(la.inv(p), 6) array([[ True, True, True, True], [ True, True, True, True], [ True, True