기본 콘텐츠로 건너뛰기

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

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은 열단위 즉, 행 방향으

미적분의 기본 용어

내용

기본 용어 정의

미적분을 시작하는 과정에 처음으로 만나는 장벽은 사용되는 기호에서 기인하는 경우가 많습니다. 그러므로 미적분에서 필수적으로 사용되는 몇몇의 용어를 소개합니다.

  • d 는 단지 '조금' 또는 '약간'을 의미합니다. 이 의미가 좀 모호하기는 하지만 전체에서 아주 작은 부분, 좀더 정확히는 무한히 작은 부분을 나타내기 위해 사용합니다. 그러므로 dx는 x의 조금, du는 u의 조금이라는 의미입니다.
  • $\mathbf{\int}$(integral)은 합계 sum의 첫 글자인 s를 길게 늘어뜨린 형태입니다. 그러므로 $\int\, dx$는 x의 작은 부분들의 합을 의미합니다. 이것을 적분이라고 합니다. 예로서 1시간은 3600초의 합입니다. 적분기호를 사용하면 다음과 같이 나타낼 수 있습니다. $$\int \text{sec} = \int ds = \text{hour}$$

'작음' 또는 '조금'을 나타내는 d는 상대적입니다. 예를 들어 1시간은 60분으로 구성되며 1시간에 비해 1분은 작은양입니다. 그러나 그보다 1초는 더 작은 양이 됩니다. 어떤 부분에서는 '작다'보다는 '미세하다'라고 나타낼 수 있습니다.

상수와 변수

미적분학에서 모든 수는 상수(constant)변수(variable)로 구분합니다. 예를 들어 갓 태어난 아기의 신장이 50cm이고 이후 아기의 성장을 기록한다고 해봅니다. 이 경우 50은 변할 수 없는 수인 상수가 되며 지속적인 성장에 의해 50에 첨가되는 수는 계속 변할 것입니다. 이렇게 지속적으로 변하는 수를 변수라고 합니다.

수학에서 수는 알파벳을 기호화하여 사용합니다. 위의 예에서 상수인 50을 a로 하고 이 값에 더해지는 변수를 x로 하여 다음과 같이 나타냅니다.

$$\text{height} =a+x$$

미적분학에서는 일반적으로 상수는 a, b, c 등과 같이 알파벳 첫자부터 사용하며 변수는 x, y, z등과 같이 마지막 부분에 있는 알파벳을 적용합니다.

함수, 변화율, 그리고 미분

위에서 정의한 변수는 다른 변수에 의존되어 변할 수 있습니다. 예를 들어 위에서 언급한 아기의 신장에서 변수는 시간, 영양 상태 등의 다른 변수들에 의존됩니다. 시간과 영양 상태 등을 다른 변수 기호 t, N 등으로 나타낸다면 위의 식은 다음과 같이 나타낼 수 있습니다.

$$\text{height} =a+x=a+(t, N,\cdots)$$

사실 위 표현에서 (t, N,...)는 여러 변수의 관계를 의미합니다.

그림 1은 밑면 x와 높이 y이고 한쪽이 30°의 사잇각을 가진 직각삼각형을 나타낸 것입니다. 이 삼각형에서 서로 의존하는 두 개의 변수 x, y를 생각해 봅시다. 두 변수 중에 변수 x를 변화시키면 y 역시 그 변화에 따라 달라질 것입니다. 예를 들어 x에 dx(x의 약간)를 첨가하면 y 역시 dy 만큼 변경될 것입니다. 물론 dx, dy는 양수 뿐만 아니라 음수가 될 수 있겠지요.

그림 1. 직각 삼각형의 밑면과 높이의 관계.

삼각형이 30°의 사잇각을 유지하면서 확장된다고 가정하고 밑변이 x + dx가 될 정도로 커지면 높이가 y + dy가 됩니다. 여기서 x를 늘리면 y가 증가합니다. 높이가 dy이고 밑이 dx인 작은 삼각형은 원래 삼각형과 비슷합니다. 그리고 두 비율 $\displaystyle \frac{dy}{dx}$와 $\displaystyle \frac{y}{x}$는 동일할 것입니다. 각도가 30°이므로 다음과 같이 나타낼 수 있습니다.

$$\frac{dy}{dx}=\frac{1}{1.73} \to \tan(30)=\frac{dy}{dx}$$

다음은 위 값을 계산하기 위한 코드입니다. 이 코드에서는 사용된 round(값, 자릿수) 함수는 값을 지정한 자릿수까지 반올림하여 반환합니다. 또한 tan(라디안)는 numpy 모듈의 함수로 tan값을 계산하여 반환합니다. 그러나 전달하는 값은 각도가 아닌 라디안(radian) 값이어야 하므로 30°를 라디안으로 전환하기 위해 numpy 모듈 함수인 deg2rad()를 적용하였습니다.

import numpy as np
import pandas as pd
from sympy import *
import matplotlib.pyplot as plt
round(1/1.73, 2)
0.58
round(tan(np.deg2rad(30)),2)
0.58

다른 예로 그림 2는 벽에 기대어 있는 길이 $\overline{AB}$의 사다리를 나타낸 것입니다. 변수 x는 벽으로부터 A까지의 수평 거리 $\overline{OA}$, y는 벽에 닿는 높이 $\overline{OB}$를 나타냅니다. 이러한 상태에서 사다리를 움직일 경우 y는 분명히 x에 의존합니다. 즉, 하단 A를 벽에서 조금 더 당기면 상단 B가 약간 아래로 내려 오는 것을 알 수 있습니다.

그림 2. x, y 축에 기대어 있는 사다리 모습
$x\rightarrow x+dx, \; y \rightarrow y-dy$

하단 A가 벽에서 19cm 떨어져 있을 때 상단 B가 면에서 180cm인 경우 하단 A를 1cm 더 빼면 상단 B는 얼마나 내려갈까요?

이 상황에서 x, y는 각각 19, 180이 되며 x의 증분은 1cm가 됩니다. 이 증분을 dx라고 하며 전체 길이 x+dx = 19+1 = 20 cm가 됩니다. x, y의 길이의 변화에도 불구하고 AB의 길이는 변함이 없습니다. 그러므로 피타고라스 정리를 적용하여 y의 변화 즉, dy를 계산할 수 있습니다.

$$\begin{align}\overline{AB}&=\sqrt{x^2+y^2}\\ &=\sqrt{(x+dx)^2+(y+dy)^2}\\ \sqrt{19^2+181^2}&=181\\ \sqrt{20^2+(180+dy)^2}&=181\\ dy &\approx -0.11 \end{align}$$

위 과정을 코드화하기 위해서 x, y를 기호화하여 관계를 정립할 필요가 있습니다. 이러한 경우 기호를 지정하여 숫자로 치환을 가능하게 하는 파이썬의 sympy 라이브러리를 사용합니다. 그 과정은 다음과 같습니다.

  • 변수(x, y)와 기호(dx, dy)를 symbols()함수를 사용하여 지정
  • $\overline{AB}$를 위한 식을 생성(z)
  • x=1.9, y=180에서의 $overline{AB}$길이 산출(z)
  • 이 계산을 위해서 subs()메서드를 사용합니다.
  • $\sqrt{(x + dx)^2 + (y + dy)^2 − z^2} = 0$ 의 식을 생성(eq)
    $\qquad$ 위 식과 같이 한쪽이 0인 식을 동차식(homogeneous equation)이라고 합니다.
  • 동차식에서 지정한 변수의 해를 계산하기 위해 solveset()함수를 적용합니다.
x, y, dx, dy=symbols("x, y, dx, dy", real=True)
z=sqrt(x**2+y**2)
z
$\quad \small{\color{blue}{\sqrt{x^{2} + y^{2}}}}$
z1=z.subs([(x, 19), (y, 180)])
print(z1)
181
eq=sqrt((x+dx)**2+(y+dy)**2-z1**2)
eq1=eq.subs([(x, 19),(dx, 1),(y,180)])
eq1
$\quad \small{\color{blue}{\sqrt{\left(dy + 180\right)^{2} - 32361}}}$
sol=solveset(eq1, dy, Interval(-180, 180))
sol
$\quad \small{\color{blue}{\left\{-180 + \sqrt{32361}\right\}}}$
x=[N(i, 3) for i in N(sol)] #(1)
x
[-0.108]

위 예들로부터 특정 위치를 제외하고 dy와 dx는 다른 크기이며 그 값들의 변화는 dx, dy의 비율로 나타냄을 알 수 있습니다. 또한 두 변수 y와 x가 서로 관련이 있을 경우만 $\frac{dy}{dx}$의 비율을 찾을 수 있음을 알수 있습니다. 예를 들어 위 첫 번째 예에서 dy와 dx의 비는 tan(30°)으로 고정되고 두 번째 예의 경우는 $\overline{AB}$의 값이 고정된 상태이므로 dx, dy 중 하나의 변화에 대한 다른 변수의 변화를 찾아낼 수 있습니다. 길이가 길어지면 y는 감소하며 그 관계를 비율로 나타낼 수 있는 것입니다. 이러한 변수들의 관계를 정의한 식을 함수(function)라고 합니다.

그림 2의 경우 $\overline{AB}$를 상수 a로 나타낸다면 두 변수 x, y에 대한 식 $a^2=x^2+y^2$은 다음과 같이 두 가지 형식으로 나타낼 수 있습니다.

  • $y=\sqrt{a^2-x^2}$: 양함수(Explicit Function)
  • $x^2+y^2-a^2=0$: 음함수(Implicit Function)

위 식에서 y는 x에 의해 결정되므로 x를 독립변수(independent variable), y를 종속변수(independent variable)로 간주합니다. 위에서 나타낸 것과 같이 독립변수와 종속변수가 등호('=')를 기준으로 분리하여 나태낸 함수를 양함수(explicit function)라고 합니다. 반면에 독립변수와 종속변수의 분리 없이 함께 나타낸 함수를 음함수(implicit function)라고 합니다.

일반적으로 함수는 F(), f(), φ()등과 같이 다양한 기호로 나타낼 수 있으며 이 경우 양함수와 음함수는 다음과 같이 표시됩니다.

양함수와 음함수
  • y=F(x, a) 또는 x=F(y, a) : 양함수(explicit function)
  • F(x, y, a)=0 : 음함수(implicit function)

위 예로부터 산출된 두 변수의 비율 $\frac{dy}{dx}$를 x에 관한 y의 미분계수라고 합니다. 또한 이 미분계수를 산출하는 과정을 미분(differentiating)이라 합니다. 다시 말하면 미분의 결과는 극소 구간에서의 두 변수의 비율이 됩니다.

댓글

이 블로그의 인기 게시물

matplotlib의 그래프 종류

1. 산포도(scatter plot) plt.scatter(x, y) >>> import matplotlib.pyplot as plt >>> import numpy as np >>> data=np.random.rand(1024, 2) >>> data[:3, :] >>> plt.scatter(data[:,0], data[:,1]) >>> plt.show() 2. 막대그래프(bar chart) plt.bar(x, hight, width, align='center') 매개변수중 width에 인수를 전달하여 막대의 두께를 조절할 수 있다. 또한 align의 인수는 'center'와 'edge' 이다. 기본값은 'center'이다. 이 값은 x축의 레이블이 막대의 중간에 위치(center) 또는 왼쪽 가장자리에 위치(edge)시킨다. 코드에서 np.random.randint 는 특정한 범위내에서 지정한 갯수의 랜덤수를 생성 np.unique(배열, retrun_counts=False, axis=None) : 객체 내의 중복되지 않은 수들을 반환한다. return_counts=True이면 각 수에 대한 빈도수를 반환한다. axis를 통해 행(1), 열(0)을 선택한다. >>> x=np.random.randint(1, 6, size=100) >>> uni,count=np.unique(x, return_counts=True) >>> uni array([1, 2, 3, 4, 5]) >>> count array([25, 17, 23, 16, 19], dtype=int64) >>> plt.bar(uni, count) >>> plt.show() 위의 막대그래프의 막대의

유사변환과 대각화

내용 유사변환 유사행렬의 특성 대각화(Diagonalization) 유사변환(Similarity transformation) 유사변환 n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사하다고 하며 이 변환을 유사 변환 (similarity transformation)이라고 합니다. $$\begin{equation}\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B \end{equation}$$ 식 1의 유사 변환은 다음과 같이 고유값을 적용하여 특성 방정식 형태로 정리할 수 있습니다. $$\begin{align} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align}$$ 위 식의 행렬식은 다음과 같이 정리됩니다. $$\begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \t

sympy.solvers로 방정식해 구하기

sympy.solvers로 방정식해 구하기 대수 방정식을 해를 계산하기 위해 다음 함수를 사용합니다. sympy.solvers.solve(f, *symbols, **flags) f=0, 즉 동차방정식에 대해 지정한 변수의 해를 계산 f : 식 또는 함수 symbols: 식의 해를 계산하기 위한 변수, 변수가 하나인 경우는 생략가능(자동으로 인식) flags: 계산 또는 결과의 방식을 지정하기 위한 인수들 dict=True: {x:3, y:1}같이 사전형식, 기본값 = False set=True :{(x,3),(y,1)}같이 집합형식, 기본값 = False ratioal=True : 실수를 유리수로 반환, 기본값 = False positive=True: 해들 중에 양수만을 반환, 기본값 = False 예 $x^2=1$의 해를 결정합니다. solve() 함수에 적용하기 위해서는 다음과 같이 식의 한쪽이 0이 되는 형태인 동차식으로 구성되어야 합니다. $$x^2-1=0$$ import numpy as np from sympy import * x = symbols('x') solve(x**2-1, x) [-1, 1] 위 식은 계산 과정은 다음과 같습니다. $$\begin{aligned}x^2-1=0 \rightarrow (x+1)(x-1)=0 \\ x=1 \; \text{or}\; -1\end{aligned}$$ 예 $x^4=1$의 해를 결정합니다. solve() 함수의 인수 set=True를 지정하였으므로 결과는 집합(set)형으로 반환됩니다. eq=x**4-1 solve(eq, set=True) ([x], {(-1,), (-I,), (1,), (I,)}) 위의 경우 I는 복소수입니다.즉 위 결과의 과정은 다음과 같습니다. $$x^4-1=(x^2+1)(x+1)(x-1)=0 \rightarrow x=\pm \sqrt{-1}, \; \pm 1=\pm i,\; \pm1$$ 실수