기본 콘텐츠로 건너뛰기

라벨이 stats인 게시물 표시

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

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

회귀모델의 평가: 오차(Error, Residual), 회귀계수의 평가, 추정

내용 오차의 전제조건 오차의 등분산성 자기상관분석 오차제곱평균 회귀계수의 평가 모형의 평가 결정계수(coefficient of determinant) 추정 오차(Error, Residual) 오차의 전제조건 생성된 회귀모형을 통계적으로 검정(test)할 필요가 있으며 검정의 주요한 객체는 식 1에 의해 계산되는 관찰치와 추정치의 차이인 오차(error)가 됩니다. $$\begin{align}\tag{1}e&=y-(b-o+b_1x)\\&=y-\hat{y} \end{align}$$ 회귀모형의 오차는 다음의 전제조건을 가정합니다. 정규분포를 따르는 확률변수 독립변수들은 정규 분포를 따르는 확률변수이므로 그 반응변수와 추정치 사이에서 발생되는 오차 역시 정규분포를 따르는 확률 변수가 됩니다. 이것은 오차를 인위적으로 조정할 수 없다는 의미입니다. 오차항의 등분산성(homoscedastic) 시점이 다른 오차들 사이에 자기상관 (autocorrelation)을 가지지 않습니다. 이것은 오차들 간의 체계적인 관계가 없다는 것을 의미합니다. 그러나 현실 데이터 특히 시계열의 경우 각 데이터들 사이에 관계성을 가지기 때문에 이 가정이 부합하기는 쉽지 않습니다. 독립변수를 다양하게 적용하거나 lasso등의 방법을 사용하여 이 관계성을 감소시킬 수 있습니다. 오차의 등분산성 회귀모델은 다양한 형태로 구축할 수 있습니다. 예를 들어 그림 1과 같이 100개의 샘플을 가진 자료로부터 최소자승법에 의한 회귀모델을 중심으로 다른 모델들을 추가하여 5개의 회귀선을 임의로 작성하는 경우를 고려해봅니다. 한개의 데이터에 대해 다양한 회귀선들로부터 여러개의 추정치가 생성됩니다. 실측된 값과 추정치들간의 오차들 또한 확률분포를 구성할 수 있으므로 평균과 분산을 계산할 수 있습니다. 등분산성은 각 데이터로부터 계산되는 분산이 다른 데이터로부터 계산되는 값들과 같다는 것을 의미

등분산을 위한 검정

내용 Levene Test 등분산을 위한 검정 Levene Test Levene 테스트는 k 샘플(그룹)이 동일한 분산을 갖는지 테스트하는 데 사용됩니다. 각 표본의 분산이 같은 것을 등분산이라고 합니다. 일부 통계 테스트(예: 분산 분석)에서는 분산이 그룹 또는 샘플 간에 동일하다고 가정하며 회귀분석에서는 다양한 회귀모델들로 계산되는 오차 분포의 분산이 동일하다고 가정합니다. Levene 테스트를 사용하여 이러한 가정을 확인할 수 있습니다. Levene의 검정은 Bartlett 검정의 대안으로 Bartlett의 검정은 정규성 이탈에 민감하므로 Levene의 검정은 모집단 표본이 일반적으로 정규분포에 대한 가정이 불확실할 경우 선호됩니다. 그러나 데이터가 실제로 정규 분포 또는 거의 정규 분포에서 나왔다는 강력한 증거가 있다면 Bartlett의 검정이 더 나은 성능을 보입니다. Levene 검정의 귀무가설과 대립가설은 일반적으로 다음과 같이 기술할 수 있습니다. H0: σ 1 = σ 2 = … = σ k H1: k 표본 모집단 분산 중 하나 이상이 같지 않음 Levene 검정 통계량(W)은 식 2와 같이 정의됩니다. $$\begin{align}\tag{2}&W=\frac{N-k}{k-1}\frac{\sum^k_{i=1}n_i(Z_{i.}-Z_{..})^2}{\sum^k_{i=1}\sum^{n_i}_{j=1}(Z_{ij}-Z_{i.})^2}\\ &Z_i=\frac{1}{n_i}\sum^{n_i}_{j=1}Z_{ij}\\ &Z_{..}=\frac{1}{N}\sum^k_{i=1}\sum^{n_i}_{j=1}Z_{ij}\end{align}$$ k: 그룹의 수 n i : i번째 그룹에 속하는 샘플의 수 N: 총 샘플 수 Z ij : i번째 그룹의 j번째 관측값 Y ij 과 Ŷ i 의 L 1 norm입니다. Z ij 는 식 3과 같이 계산됩니다. $$\begin{equation}\tag{3}Z_{ij}

분산분석 (Analysis of variance)

내용 분산분석이란? ANOVA 이원분산분석(two-way anova) 분산분석 (Analysis of variance) 분산분석이란? 두 개 이상의 집단에서 각 집단내의 변동과 집단간 변동을 비교하여 모든 집단의 평균이 동일하다는 귀무가설을 검정하는 통계방법입니다. 두 개 집단의 가설검정을 위해 정규분포 또는 t 분포를 적용하였지만 그 이상의 집단을 비교하기 위해서는 집단 간의 변동성의 정도를 비교하는 F분포 를 사용합니다. 분산분석을 위한 자료는 비교 대상이 되는 명목변수인 요인변수(factor, 독립변수) 와 각 요인에 따른 값들 즉, 반응변수(respond variable, 종속변수) 로 구성됩니다. 각 요인은 몇 개의 소집단으로 분류될 수 있으며 이 소집단의 요인들을 처리(treatment, 요인수준) 라고 합니다. 요인 수준에 대응하는 반응변수가 한 개인 경우의 분석을 일원분산분석(one-way anova) 라고 하며 여러 개인 경우를 다변량분산분석(manova) 라고 합니다. 이 글에서는 일원분산과 이원분산분석을 소개합니다. 이 분석들이 다변량분석의 토대가 될 수 있을 것입니다. 분산분석의 귀무가설은 다음과 같습니다. H0: μ 1 = μ 2 = … = μ n 분산분석을 위해 다음을 가정합니다. 각 모집단은 정규분포를 따릅니다. 모든 모집단의 분산은 동일합니다. 관측치들은 독립적이어야 합니다. ANOVA 표 1에서 나타낸 것과 같이 one-way ANOVA는 factor와 treatment의 구별이 없습니다. 그러므로 treatment가 설명변수가 되고 여러 변수들의 차이를 분석합니다. 표 1. 일원분산분석을 위한 자료구조 처리 1 2 … t 샘플 x 11 x 12 … x 1t x 21 x 22 … x 2t ⋮ ⋮ ⋱ ⋮ x n1 x n2 … x nt 평균 $\bar{X_1}$

두 독립집단의 비교

내용 두 표본의 비교 소규모 표본에서 등분산 소규모표본에서 이분산 대규모 표본 두 독립집단의 비교 두 표본의 비교 다음과 같이 각각 정규분포를 따르는 두 개의 독립 확률변수 X, Y의 평균을 비교하기 하기 위해 가설검정을 적용합니다. $$\begin{align}\bar{X}&=\frac{\sum^n_{i=1} X_i}{n_X} \sim N\left(\mu_X, \frac{\text{s}_X}{n_X}\right)\\ \bar{Y}&=\frac{\sum^n_{i=1} Y_i}{n_Y} \sim N\left(\mu_Y, \frac{\text{s}_Y}{n_Y}\right)\end{align}$$ 각 표본집단이 정규분포를 가정하지 않더라도 중심극한정리에 따라 근사적으로 정규분포를 만족하게 됩니다. 두 집단을 비교하기 위해 각 평균의 차이에 대한 다음의 귀무가설을 설정합니다. H0 : μ X - μ Y = 0 귀무가설의 검정통계량은 두 집단이 결합한 분포로부터 계산됩니다. 즉, X, Y의 결합확률분포의 평균과 표준편차는 식 1과 같이 계산됩니다. $$\begin{align}\tag{1} &\begin{aligned} E(X-Y)&=E(X)-E(Y)\\ &=\mu_X -\mu_Y\end{aligned}\\ &\begin{aligned}\text{Var}(X-Y) &=\text{Var}(X)+\text{Var}(Y)-\text{Cov}(X,Y)\\ &=\frac{\sigma^2_X}{n_X}+\frac{\sigma^2_Y}{n_Y}\end{aligned}\\ &\text{Cov}(X,Y)=0\quad \because \; X, Y: \text{독립}\\\end{align}$$ 식 1에서 Cov는 공분산 을 의미합니다. 즉, X, Y 두 집단 사이에 교호작용의 효과를 고려하는 것으로 두 집단이 독립이라는 가정에 의해 0이 됩니다

가설 검정

가설검정이란? 검정력(Power)과 표본수(Sample size) 귀무가설과 대립가설 단측검정과 양측검정 가설검정(Hypothesis test) 가설검정 통계적 추론은 표본에서 계산된 통계량을 기반으로 모집단의 모수에 대한 잠정적인 가설을 설정하는 단계와 그 가설을 채택 또는 기각하기 위한 검정 단계로 구성됩니다. 검정 단계에서 판단의 기준이 되는 표본의 통계량을 검정통계량 이라고 합니다. 그 검정 통계량을 기준으로 더 극단적인 통계량이 나타날 확률을 p-value 이라 합니다. 그 p-value와 유의수준을 비교하여 그 통계량의 채택 또는 기각이 결정됩니다. p-value < 유의수준 : 참(true)으로 가정하는 가설을 기각 p-value > 유의수준 : 참(true)으로 가정하는 가설을 기각하지 못함 검정력(Power)과 표본수(Sample size) 검정력은 잘못된 가설을 기각할 수 있는 확률을 의미합니다. 예를 들어 검정력이 90%일 경우 잘못된 가설(대립가설)을 채택할 확률이 10%가 존재함을 나타냅니다. 이것은 표 1에서 나타낸 제2종 오류입니다. 이러한 검정력은 표본수가 커지면 증가합니다. 그러므로 원하는 검정력을 얻기 위해서 적정한 표본수를 가져야 합니다. 귀무가설과 대립가설 분석자는 표본평균들의 평균을 모평균의 추정치로 사용한다는 가설을 세우고 이 가설에 대한 통계적 타당성을 검정할 수 있습니다. 분석자는 이 가설이 통계적으로 유의한 차이를 보이지 않기 때문에 기각되지 않을 것으로 예상합니다. 이러한 가설을 귀무가설 (null hypothesis, H0) 이라합니다. 이 귀무가설에 대응되는 기각 될 것으로 예상되는 가설을 대립가설 (alternative hypothesis, Ha) 이라 합니다. 귀무가설의 검정은 표본의 정보 즉, 검정통계량을 기반합니다. 그러므로 다음과 같은 오류의 가능성을 포함합니다. 표 1. 오류의 종류 H0 진실 Ha 진실 H0 채택 옳은

F 분포(F distribution)

내용 베타함수 F 분포에서의 수용역과 기각역 F 분포(F distribution) 카이제곱 분포 를 따르는 자유도가 각각 k 1 , k 2 인 두 확률변수 X 1 , X 2 의 비에 대한 분포를 F분포 라고 합니다. 새로운 확률변수 F는 식 1과 같이 계산됩니다. $$\begin{equation}\tag{1} F=\frac{X^2_1/k_1}{X^2_2/k_2} \end{equation}$$ 위 식에서 보는 것과 같이 F 분포를 결정하는 인자는 두 개의 자유도이며 각각을 d 1 , d 2 로 표현하면 F 분포는 다음과 같이 나타냅니다. F ∼ F(d 1 , d 2 ) F분포를 따르는 확률변수 x의 확률밀도함수는 식 2와 같습니다. $$\begin{align}\tag{2}f(x)&=\frac{1}{\text{B}(d_1/2, d_2/2)}\left(\frac{d_1x}{d_1x+d_2}\right)^\frac{d_1}{2} \left(1-\frac{d_1x}{d_1x+d_2}\right)^\frac{d_2}{2} x^{-1}\\ &B:\text{베타함수}\\& x \ge 0 \\ & d_1, d_2: \text{양의 정수} \end{align}$$ 베타함수 감마함수 의 비로 식 3과 같습니다. $$\begin{align}\tag{3}B(x, y)&=\frac{\Gamma(x) \Gamma(y)}{\Gamma(x+y)}\\ &\int^1_0 t^{x-1}(1-t)^{y-1}\, dt \end{align}$$ F 분포의 다양한 통계량은 scipy.stats 모듈의 f() 클래스의 여러 메서드를 사용하여 계산할 수 있으며 대표적으로 확률밀도함수( f.pdf() )를 적용합니다. 그림 1은 분자, 분모 자유도에 따라 F분포의 변화를 나타낸 것입니다. import numpy as np import pandas as pd import matplotlib.pyplot

감마분포(Gamma Distribution)

내용 감마함수 감마함수 감마분포 평균과 분산 감마분포(Gamma Distribution) 확률은 전체 경우의 수 중에서 대상 경우의 비율이므로 확률을 계산하는데 있어 전체 경우의 수를 산정하는 것이 중요합니다. 이산변수의 경우 전체 경우의 수를 계승(factorial) 을 사용하여 계산합니다. 연속변수의 경우에서 랜덤변수는 셀수 있는 수가 아니므로 계승을 직접적으로 사용할 수 없습니다. 대신에 계승에 대응하는 적분식을 사용하는데 이 부분을 감마함수 로 대체할 수 있습니다. 그러므로 감마함수를 기본으로 하는 감마분포는 지수 분포, 정규분포와 관련된 분포로 다양한 부문에서 사용되는 분포입니다. 감마함수 감마함수는 Γ(x)로 나타내며 자연수의 영역에서 factorial 함수의 형태를 가지며 식 1과 같이 정의됩니다. 감마함수 $$\begin{align}\tag{1} \Gamma(n)&=(n-1)! , \quad\quad n \in \{1,2,3, \cdots \}\\ &=(n-1)\Gamma(n-1)\\ &=\int^n_0 x^{n-1}e^{-x} ,\quad n > 0 \end{align}$$ 예)   n=10인 이산변수와 연속변수의 factorial과 감마함수를 계산합니다. factorial은 numpy 또는 scipy의 math 모듈의 factorial() 함수로 계산할 수 있으며 위의 감마함수는 scipy.special의 gamma() 함수로 계산할 수 있습니다. 또한 이 계산은 sympy 패키지의 symbol() 함수와 intergrate() 함수를 사용하여 수행할 수 있습니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import stats from sympy import * np.math.factorial(10-1) 362880 from scipy

지수분포(Exponential Distribution)

내용 지수분포의 PDF 평균과 분산 지수분포와 기하분포 지수분포(Exponential Distribution) 지수분포의 PDF 지수분포는 가장 많이 사용되는 연속분포 중의 하나로 어떤 사건들 사이에 시간의 경과를 모형화 하는데 많이 사용됩니다. 식 1과 같은 확률밀도함수(PDF)를 가지는 연속확률변수 X의 분포를 지수분포라고 하며 모수 λ는 평균빈도를 의미합니다. $$\begin{align}\tag{1} &X \sim \text{Exponential}(\lambda)\\ &f(x)=\begin{cases} \lambda e^{-\lambda x}&\quad x>0\\ 0 & \quad \text{otherwise} \end{cases}\\ & \quad \lambda >0 \end{align}$$ 지수분포의 누적분포함수는 확률밀도함수의 적분에 의해 계산됩니다. sympy.integrate() 함수를 사용합니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import stats from sympy import * x, l=symbols("x lambda", positive=True) f=l*exp(-l*x) f $\quad \small \color{navy}{\lambda e^{- \lambda x}}$ F=integrate(f, (x, 0, x)) F $\quad \small \color{navy} {1 - e^{- \lambda x}}$ 평균과 분산 지수분포의 평균과 분산은 각각의 정의에 따라 식 2와 같이 정의됩니다. $$\begin{align}\tag{2} &\begin{aligned}E(x)&=\mu\\&=\int^\infty_0 xf(x)\, dx\\&=\int^\infty_0 x\lambda e^{-\