zenn.skin 무료버전 배포중!
자세히보기

통계 29

DataScience
[Python] 두 표본에 대한 모평균 검정

두 표본에 대한 모평균 검정을 할 때는 표본이 대응하는 표본인지, 독립된 표본인지에 따라 표준편차를 구하는 방법이 달라집니다. 또 독립된 표본이라도 모분산을 알고 있을 때와 모분산을 모를 때의 검정 방법에 차이가 있습니다. 1. 대응표본 t검정(Paired-sample t test) 대응표본은 검정하려고 하는 두 표본이 동일한 대상일 때 사용 가능합니다. A, B, C, D라는 표본이 있고, 어떠한 처리가 주어진 후 결과가 A', B', C', D'이 될 때, 표본은 동일하지만 통계치는 달라지게 됩니다. 처리 전 처리 후 A 13 15 B 16 18 C 19 17 D 11 13 위와 같이 검정하고자하는 표본이 동일한 경우에 대응표본 t검정을 수행할 수 있습니다. import numpy as np from..

DataScience
[Python] t분포의 신뢰구간(Confidence Interval, CI)

t분포를 사용한 신뢰구간을 구해보겠습니다. 신뢰수준이 주어졌을 때, t분포의 단방향 신뢰구간은 위와 같이 구할 수 있습니다. 오른쪽에 대한 신뢰구간도 동일하게 구할 수 있습니다. from scipy.stats import t from typing import Tuple from math import sqrt from numpy import inf def one_side_interval(x_bar: float, s: float, n: int, alpha: float, lower: bool=True) -> Tuple[float, float]: if lower: critical_value = x_bar - t.ppf(1 - alpha, n - 1) * s / sqrt(n) return tuple([round(..

DataScience
[Python] 통계량을 이용해 t 검정, z 검정(t-test, z-test)

scipy.stats에서 제공하는 ttest_ind를 사용하면 t검정을 수행할 수 있습니다. 하지만 ttest_ind는 입력값으로 array_like를 받기 때문에 원본 데이터값이 있을 때만 사용할 수 있습니다. 데이터가 없고 데이터에 대한 통계량만 있는 경우 t검정과 z검정을 수행하는 방법에 대해 정리해보겠습니다. 1. t검정(t-test) 파라미터 설명 x_bar 표본평균 float mu 검저하고자 하는 평균값 float s 표본표준편차 float n 표본크기 int alpha 신뢰수준 float default=0.05 two_sided 양측검정 여부 bool defalut=True t검정을 하기 위해서는 먼저 검정통계량인 t0를 구해야 합니다. t_value = (x_bar - mu) * sqrt(..

Python/Syntax
[Pandas] 빈도표 구하기, 카이제곱검정(crosstab, chi2_contingency)

1. pandas.crosstab crosstab은 범주형 변수를 기준으로 데이터의 개수를 파악할 때 사용합니다. crosstab을 사용해 빈도표를 만들어 카이제곱검정을 할 때도 유용합니다. 파라미터 설명 index: array-like, Series,list, arrays 행으로 지정할 데이터 columns: array-like, Series, list, arrays 열로 지정할 데이터 values: array-like, optional 집계할 데이터 (aggfunc을 같이 사용해야 합니다) aggfunc: function, optional 집계할 방법을 선택(count, mean, median ...) margins: bool, default=False 총계를 보고 싶은 경우 사용 dropna: bo..

DataScience
임의순열검정(random permutation test)

1. 부트스트랩(Bootstrap) 표본분포를 추정하는 쉽고 효과적인 방법은, 현재 있는 표본에서 추가적으로 표본을 복원추출하여 통계량과 모델을 다시 계산하는 방법입니다. 이러한 방법을 부트스트랩이라 하며, 부트스트랩을 할 때 데이터나 표본통계량이 정규분포를 따라야 한다는 가정은 필요하지 않습니다. 원래 부트스트랩은 갖고있는 표본을 무한대로 복제한 후 거기에서 표본을 추출하는 방법을 의미합니다. 하지만 실제로는 표본을 복제하지 않고 복원추출하는 방법으로 부트스트랩을 사용합니다. 부트스트랩을 사용하는 이유는 작은 표본크기를 보완하거나 새로운 데이터를 만드는 것이 아닙니다. 표본을 이용해 가상의 모집단을 만들고 거기서 표본추출을 했을 때, 새로운 표본이 원래의 표본과 얼마나 비슷할지를 보여주는 역할을 합니다..

Python/Syntax
[Python] random 모듈

랜덤 함수를 사용할 때마다 다시 찾아봐야해서 정리를 해두려 합니다. 제공하는 함수가 워낙 많아서 그 중에서 자주 사용하는 함수 몇 개만 추리겠습니다. 랜덤함수에 대해 좀 더 공부하고 싶으신 분은 help(random)을 통해 도움말을 보거나, random — 의사 난수 생성 — Python 3.10.5 문서 random — 의사 난수 생성 소스 코드: Lib/random.py 이 모듈은 다양한 분포에 대한 의사 난수 생성기를 구현합니다. 정수에 대해서는, 범위에서 균일한 선택이 있습니다. 시퀀스에 대해서는, 무작위 docs.python.org random 공식 문서를 확인하시면 좋을 것 같습니다. 1. choice( seq) import random random.choice([1, 2, 3, 4]) # ..

DataScience
모집단과 표본집단, 표본평균의 의미

𝑋1,𝑋2,𝑋3,...,𝑋𝑛을 추출했을 때, 해당하는 확률표본들의 평균이다 ※주의: 확률표본 𝑋1,𝑋2,𝑋3,...,𝑋𝑛은 각각이 크기가 n이 아니라 크기가 1인 표본들이 n개 있는것! 2. 중심극한정리 표본의 수 n이 충분히 큰 경우(보통 n > 30 정도) 모집단의 분포에 관계없이 표본평균의 분포는 정규분포를 따른다는 정리입니다. 확률표본을 추출한 후 이들의 평균을 구하는 시행을 반복하면, 이들 평균의 분포는 정규분포에 근사하게 됩니다. 이렇게 구해진 정규분포는 다음과 같습니다.

DataScience
정규분포를 왜 표준화하는걸까?

1. 정규분포를 표준화하는 이유 정규분포를 사용할 때는 먼저 평균과 표준편차를 ~N(0, 1)인 표준정규분포로 표준화한 후에 사용합니다. 정규분포를 따르는 분포는 많지만 각각의 평균과 표준편차가 다르기 때문에 일반화할 수 없기 때문입니다. 평균과 표준편차가 아무리 다르더라도 N(0, 1)로 만든다면 모두 같은 특성을 가지는 동일한 확률분포로 사용할 수 있습니다. 그렇다면 어떻게 이런 표준화가 가능할까요 2. 표준화하는 방법 데이터를 표준화하는 방법은 간단합니다. 지금부터 왜 이렇게 표준화가 되는지 차근차근 알아보려합니다. [5, 7, 11, 13, 8, 4] 라는 공부시간 데이터가 있을 때 해당 자료를 정규화하려 합니다. 1) 평균 주어진 데이터는 평균으로 8을 갖습니다. 이 때 모든 데이터에 대해 평균..

DataScience
통계적 추론, 추정의 의미?

오늘은 추론 통계학 중에서도 통계적 추정에 대해 정리해보려 합니다. 통계적 가설 검정은 "어떤 불확실한 현상이 특정 분포를 따른다고 하면, 해당 분포의 성질을 이용해서 불확실한 현상을 예측할 수 있지 않을까"하는 생각에서 출발합니다. 여기서는 가장 많이 사용되는 분포 중 하나인 표준정규분포를 살펴보려 합니다. 1. 표준편차의 범위 (μ−σ, μ+σ)에 포함되는 데이터는 전체의 68.26% 입니다. 포함되는 데이터가 전체의 68.26%라는 것은 하나의 수를 뽑아서 그 값을 맞추려할 때 (μ−σ, μ+σ) 안에 있는 숫자를 말하면 68.26% 확률로 적중하는 것을 의미합니다. 표준편차의 범위가 커지게 되면 포함되는 데이터의 양은 더 커지게 됩니다. (μ−2σ, μ+2σ)에 포함되는 데이터는 늘어나 95.44..