기본 콘텐츠로 건너뛰기

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

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

표준편차와 표준오차

내용

표준편차와 표준오차

자료의 특성을 나타내는 기본적인 통계량은 평균과 분산이 있습니다. 평균은 자료의 중심을 나타내고 퍼짐 정도는 분산으로 표시합니다. 분산의 제곱근이 표준편차이므로 이 통계량의 단위는 자료와 같기 때문에 분산보다는 표준편차를 더 유용하게 사용됩니다.

표준편차는 자료의 퍼짐성을 나타내는 자료로서 모집단의 표준편차(σ)를 알 수 없는 경우 식 1과 같이 계산된 표본표준편차(s)를 사용합니다.

$$\begin{align}\tag{1}&\text{s}=\sqrt{\frac{\sum^n_{i=1}(x_i - \overline{x})^2}{n-1}}\\ &\text{s}: \text{표본표준편차}\\&n: \text{표본수}\end{align}$$

식 1에서 분모는 자유도(degree of freedom, df) 입니다.

자유도

자유도는 자료의 값들이 확률 변수가 될 수 있는 정도를 의미합니다. 예를 들어 1, 2, 3의 값을 가진 표본의 경우 그 자료에 세 값이 나타날 확률은 동일하기 때문에 3 값 모두 확률변수가 되며 자유도는 3이 됩니다. 그러나 평균과 2개의 값을 안다면 나머지 값은 결정되므로 확률변수가 될 규모는 3개에서 2개로 감소됩니다. 이와 같이 자료의 통계량에 의해 자유도는 감소합니다. 그러므로 평균을 알려진 자료의 경우 자유도는 자료의 크기에서 1만큼 감소됩니다.

표준편차는 평균을 기준으로 각 자료의 퍼짐의 정도를 나타내는 것으로서 표본 수가 아니라 표본의 자유도를 고려해야 합니다. 이렇게 계산된 표준편차는 자료의 각 값과 평균과의 편차의 정도를 나타냅니다.

모평균을 모르는 경우 표본을 기준으로 통계적 분석이 이루어집니다. 그러나 표본평균은 모평균을 대신하는 과정에서 불확실성이 존재합니다. 그 불확실성은 표본들로부터 산출되는 통계량인 표본평균들과 모평균 사이의 오차로서 나타낼 수 있습니다. 그 통계량을 표준오차(standard error)라고 합니다.

표 1. 표준편차와 표준오차
표준편차 자료의 퍼짐정도를 나타내는 통계량
표준오차표본평균과 모평균의 퍼짐 정도를 나타내는 추정량

다음 객체 x는 pnadas모듈의 DataFrame 객체로서 같은 모듈의 std() 메소드를 사용하여 표준편차와 표준오차를 계산할 수 있습니다.

import numpy as np 
import pandas as pd 
from scipy import stats
from sympy import *
import matplotlib.pyplot as plt
x=pd.DataFrame([2., 3., 9., 6., 7., 8.])
xBar=x.mean()
sd=x.std()
se=x.sem()
pd.DataFrame([xBar, sd, se], index=['X_Bar','s', 'SE'])
0
X_Bar 5.833333
s 2.786874
SE 1.137737
se2=sd/np.sqrt(len(x)) #식 2 적용
se2
01.137737
dtype: float64

위 객체 se는 pandas 모듈의 sem() 메소드에 의해 계산한 것으로 다른 객체 se2와 같은 결과를 보입니다. se2의 경우는 표준편차를 표본수로 나누어 준 것입니다. 그러므로 이 계산과정을 일반화하면 표준오차는 다음과 같이 계산됩니다.

$$\begin{align}&\begin{aligned}\text{se}(\overline{X})&=\sqrt{\text{Var}(\overline{X}-\mu)^2}\\ &=\sqrt{\text{Var}\left(\frac{\sum^n_{i=1}\overline{X}_i}{n}-\mu \right)}\\ &=\sqrt{\frac{1}{n^2}\text{Var}\left(\sum^n_{i=1}\overline{X}_i\right)}\\ &=\sqrt{\frac{1}{n^2}\text{Var}\left(\overline{X}_1+\overline{X}_2+\cdots +\overline{X}_n \right)}\\ &=\frac{\sqrt{\sigma^2}}{n} \\ \end{aligned} &\sigma: \text{모표준편차}\\& \text{s}:\text{표본 분포의 표준편차} \\&\text{n}: \text{표본수} \end{align}$$

위 식은 모든 표본들을 구성하는 값들은 독립이고 모집단과 동일한 분포의 통계량을 가진다는 가정하에 성립합니다. 모 표준편차를 모르는 경우 표본 분포의 표준편차를 사용하여 계산할 수 있습니다. 즉, 표준오차는 식 2와 같이 계산됩니다.

$$\begin{equation}\tag{2}\text{se}(\overline{X})=\begin{cases}\frac{\sigma}{\sqrt{n}}& \sigma:\text{known}\\ \frac{s}{\sqrt{n}}& \sigma:\text{unknown}\end{cases} \end{equation}$$

이 통계량들에 의해 표본으로부터 모집단을 추론할 수 있습니다.

표본분포는 다음과 같은 특성을 가집니다.

  • 모집단의 분포에 관계없이 표본평균의 분포는 정규분포에 근사하게 됩니다. 이와 같은 성질은 중심극한 정리로 설명됩니다.
  • 표본분포의 평균(표본평균)은 모평균에 근사합니다.
  • 표본분포의 표준편차는 모집단 표준편차의 불편추정치(unbiased estimator)로 사용됩니다.
  • 모평균과 표본평균의 편차의 정도는 표준오차(standard error of the mean, se)로 나타낼 수 있으며 모집단 또는 표본분포의 표준편차와 샘플수에 의해 계산됩니다.

이 모집단과 표본평균들의 분포는 표 5.3과 같이 정리할 수 있습니다.

표 1. 모분포와 표본분포
분포설명
모분포모집단의 분포
일반적으로 모집단에 대한 정보는 부족
표본분포많은 표본평균들의 분포
모집단이 알려진 경우 반복적인 표집에 의해 구성
모집단을 모르는 경우 표본에 대해 반복적인 표집으로 구성할 수 있음
이 정보는 항상 알 수 있음

댓글

이 블로그의 인기 게시물

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$$ 실수