기본 콘텐츠로 건너뛰기

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

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

R 분산분석(ANOVA)의 개요

내용

분산분석의 개요

요인(명목 또는 순서변수)이 설명 변수로 포함될 때 분석의 중심은 예측에서 각 그룹 차이에 대한 결정으로 이동하며 이 경우 사용하는 방법론을 분산 분석(ANOVA)이라고 합니다. ANOVA 방법론은 다양한 실험 및 준실험 설계를 분석하는 데 사용됩니다.

용어

일반적으로 실험 설계, 특히 분산 분석에는 고유하게 사용되는 용어가 있습니다. 그룹화 변수는 요인(factor)이라고도 합니다. 요인에 포함된 범주(그룹)를 수준(level) 또는 그룹이라고 합니다. 수준 수는 요인에 따라 다를 수 있습니다. 요인의 수준 조합을 이라고 합니다.다음 데이터로부터 용어들을 알아봅니다.

자료는 불안을 치료하기 위한 treatment내에 두 가지 수준(CBT, EMDR)이 있는 그룹 또는 레벨(level) 간 요인입니다. 환자가 하나의 그룹에만 할당되기 때문에 그룹 간 요인(between-groups)이라고 합니다. CBT와 EMDR을 모두 받은 환자는 없습니다. 다음 표의 s 문자는 주제(환자)를 나타내며 그 환자로 부터의 값이 반응변수이고 치료의 수준은 독립변수입니다. 각 처리 조건에 동일한 수의 관측치가 있으므로 균형 설계(balanced design)가 있습니다. 표본 크기가 설계의 셀 전체에서 같지 않으면 불균형 설계(unbalanced design)가 있는 것입니다.

One-way between-groups ANOVA
Treatment
CBT EMDR
s1 s6
s2 s7
s3 s8
s4 s9
s5 s10

위 표의 통계적 설계는 두개의 수준으로 구성된 요인 1개가 존재합니다. 즉, 분류 변수가 1개이므로 일원 분산 분석(one-way ANOVA)이라고 합니다. 특히, 그룹 간 일원 분산 분석입니다. ANOVA 설계의 효과는 주로 F 테스트를 통해 평가됩니다. 치료에 대한 F 검정이 유의한 경우 두 치료법에 대한 평균이 치료 5주 후에 다르다는 결론을 내릴 수 있습니다. 시간 경과에 따른 불안에 대한 CBT의 효과에 관심이 있는 경우 10명의 환자를 모두 CBT 그룹에 배치하고 치료가 끝날 때와 6개월 후에 다시 평가할 수 있습니다. 이 디자인은 다음 표에 나와 있습니다.

One-way within-groups ANOVA
PatientTime
5 weeks 6 months
s1
s2
s3
s4
s5
s6
s7
s8
s9
s10

시간은 두 가지 수준(5주, 6개월)이 있는 그룹 내 요인입니다. 각 환자는 두 수준 모두에서 측정되기 때문에 그룹 내 요인이라고 합니다. 이러한 통계 디자인을 그룹내 일원분산분석(one-way within-groups ANOVA)라고 합니다. 각 주제가 두 번 이상 측정되기 때문에 설계를 반복 측정 ANOVA라고도 합니다.

시간에 대한 F 검정이 유의한 경우 환자의 평균이 5주에서 6개월 사이에 변경되었다는 결론을 내릴 수 있습니다. 치료 차이와 시간 경과에 따른 변화에 관심이 있는 경우 처음 두 연구 디자인을 결합하고 무작위로 5명의 환자를 CBT에 할당하고 5명의 환자를 EMDR에 할당하고 치료 종료(5주)와 6개월 후 결과를 평가할 수 있습니다.치료와 시간을 요인으로 모두 포함하면 치료(시간에 따른 평균), 시간(치료 유형에 대한 평균), 치료와 시간의 상호 작용의 영향을 조사할 수 있습니다. 처음 두 가지를 주효과(main effect)라고 하는 반면, 교호(상호)작용은 (당연히) 교호작용 효과(intereaction effect)라고 합니다.

Two-way factorial ANOVA with one between-groups and one within-groups factor
PatientTime
5 weeks 6 months
rherapyCBTs1
s2
s3
s4
s5
EMDRs6
s7
s8
s9
s10

위 표와 같이 두 개 이상의 요인을 교차하면 요인 ANOVA(factoral ANOVA) 설계가 됩니다. 두 요인을 교차하면 양방향 ANOVA(two-way ANOVA)가 생성되고, 3개 요인을 교차하면 3원(three-way) ANOVA가 생성되는 식입니다. 요인 설계에 군간(between) 요인과 군내(within) 요인이 모두 포함되는 경우 혼합 모형 ANOVA(mixed-model ANOVA)라고도 합니다. 현재 설계는 2원 혼합 모델 요인 ANOVA(two-way mixed-model ANOVA)입니다.

이 경우 세 가지 F 테스트가 있습니다.

  • Tremtment: CBT와 EMDR이 불안에 미치는 영향, main effect
  • Time: 시간 불안이 5주차에서 6개월 추적관찰, main effect
  • Treatment x Time: Treatment가 Time이 지남에 따른 영향, interaction effect

이제 디자인을 조금 확장해 보겠습니다. 우울증은 치료에 영향을 미칠 수 있으며, 우울증과 불안은 종종 공존하는 것으로 알려져 있습니다. 대상을 치료 조건에 무작위로 할당했지만, 두 치료 그룹이 연구 시작 시 환자의 우울증 수준이 다를 수 있습니다. 치료 후 차이는 실험적 조작이 아니라 기존의 우울증 차이 때문일 수 있습니다. 우울증은 또한 종속변수에 대한 그룹 차이를 설명할 수 있기 때문에 교란 요인(confounding factor)가 됩니다. 그리고 이 실험은 불안에 대한 것으로 우울증에는 관심이 없습니다. 그런 이유로 외생변수라고 합니다.

환자 모집 시 Beck Depression Inventory(BDI)와 같은 자가 보고 우울증 척도를 사용하여 우울증 수준을 기록했다면 치료 유형의 영향을 평가하기 전에 우울증을 치료 그룹 차이에 대해 통계적으로 조정할 수 있습니다. 이 경우 BDI를 공변량(covariance)이라고 하고 설계를 공분산 분석(ANCOVA)이라고 합니다.

마지막으로 이 연구에서 단일 종속 변수(환자들의 값, STAI)를 기록했습니다. 추가적으로 불안 척도(예: 가족 평가, 치료사 평가, 불안이 일상 기능에 미치는 영향을 평가하는 척도)를 포함하는 경우 이 연구의 타당성을 높일 수 있습니다. 이러한 경우 반응변수는 두개 이상이 될 수 있습니다. 반응 변수가 두 개 이상인 경우 설계를 다변량 분산 분석(MANOVA)이라고 합니다. 공변량이 있으면 다변량 공분산 분석(MANCOVA)이라고 합니다.

Fitting ANOVA

aov()

ANOVA와 회귀 방법론은 다른 목적으로 개발되었지만 함수적으로 둘 다 일반 선형 모델의 특수한 경우입니다. ANOVA에서도 lm() 함수를 사용하여 모델을 분석할 수 있지만 주로 aov() 함수를 사용합니다. lm() 및 aov()의 결과는 동일하지만 aov() 함수는 이러한 결과를 ANOVA 방법론자에게 더 친숙한 형식으로 제공합니다.

aov(formular, data=dataframe)

다음 표는 aov()함수의 formular에 적용되는 기호들입니다. 이 표의 y는 반응변수, A, B, C 는 요소(factor)들을 나타냅니다.

Special symbols used in R formulas
기호내용
~ 반응변수 ~ 설명변수
+ 셜명변수들의 분리
:변수들 사이의 교호작용을 표현.
y~A+B+A:B 요인 A, B와 그 둘의 교호작용
*설명변수들의 모든 사항들을 나타냄
y ~ A*B*C
↔ y ~ A + B + C + A:B + A:C + B:C + A:B:C.
^ 지정된 차수의 교호작용을 포함
^2는 각 요인과 요인 두개의 교호작용을 포함
y ~ (A+B+C)^2
↔ y ~ A + B + C + A:B + A:C + A:B.
.종속 변수를 제외한 데이터 프레임의 다른 모든 변수에 대한 자리 표시자입니다.
y, A, B, C로 구성한 dataframe에서
y~. ↔ y~A+B+C

다음 표는 몇 가지 일반적인 연구 설계에 대한 공식을 제공합니다. 이 표에서 소문자는 양적 변수이고 대문자는 그룹화 요인이며 subject는 subject에 대한 고유 식별자 변수입니다.

Formulas for common research designs
DesignFormula
one-way ANOVA y~A
One-way ANCOVA with one covariate y ~ x + A
Two-way Factorial ANOVA y ~ A * B
Two-way Factorial ANCOVA with two covariates y ~ x1 + x2 + A * B
Randomized Block y ~ B + A (where B is a blocking factor)
One-way within-groups ANOVA y ~ A + Error(Subject/A)
Repeated measures ANOVA with one within-groups factor (W)
and one between-groups factor (B)
y ~ B * W + Error(Subject/W)

효과가 공식에 나타나는 순서(order)는 (a) 요인이 둘 이상이고 설계가 불균형하거나 (b) 공변량이 존재할 때 중요합니다. 이 두 조건 중 하나가 존재할 때 방정식의 오른쪽에 있는 변수는 서로 상관됩니다. 이 경우 종속 변수에 미치는 영향을 명확하게 나눌 수 있는 방법은 없습니다.

예를 들어, 처리 조합(treatment combination)에서 관측치가 같지 않은 양방향 ANOVA에서 모델 y ~ A*B는 모델 y ~ B*A와 동일한 결과를 생성하지 않습니다.

기본적으로 R은 ANOVA 효과를 계산하기 위해 유형 I(순차적) 접근 방식을 사용합니다. 첫 번째 모델은 y ~ A + B + A:B로 쓸 수 있습니다. 결과 R ANOVA 표는 다음을 평가할 것입니다.

  • y에 대한 A의 효과
  • A를 통제하면서 y에 미치는 B의 영향
  • A, B의 주효과를 통제하면서 y에 A와 B의 상호작용 효과

[Order counts!]

독립 변수가 서로 또는 공변량과 상관 관계가 있을 때 종속 변수에 대한 이러한 변수의 독립 기여도를 평가하는 명확한 방법은 없습니다. 요인 A, B와 종속 변수 y가 있는 불균형 이원 요인 설계를 고려합니다. 이 설계에는 A 및 B 주효과와 A x B 상호작용이라는 세 가지 효과가 있습니다.

Y ~ A + B + A:B

위 공식을 사용하여 데이터를 모델링한다고 가정하면 이 방정식의 오른쪽에 있는 효과 간에 y의 분산을 분할하는 세 가지 일반적인 접근 방식이 있습니다.

유형 I(순차)
효과는 공식의 앞부분에 나타나는 효과에 대해 조정됩니다. A는 미조정입니다. B는 A에 대해 조정됩니다. A:B 상호 작용은 A 및 B에 대해 조정됩니다.
유형 II(계층적)
효과는 동일하거나 더 낮은 수준의 다른 효과에 대해 조정됩니다. A는 B에 대해 조정되고 B는 A에 대해 조정됩니다. A:B 상호작용은 A와 B 모두에 대해 조정됩니다.
유형 III(한계)
각 효과는 모델의 다른 모든 효과에 대해 조정됩니다. A는 B 및 A:B에 맞게 조정됩니다. B는 A 및 A:B에 맞게 조정됩니다. A:B 상호 작용은 A와 B에 대해 조정됩니다.

R은 기본적으로 유형 I 접근 방식을 사용합니다.

표본 크기의 불균형이 클수록 항의 순서가 결과에 미치는 영향이 커집니다. 일반적으로 보다 근본적인 효과는 공식의 앞부분에 나열되어야 합니다. 특히, 공변량을 먼저 나열해야 하고, 그 다음에 주효과, 2원 교호작용, 3원 교호작용 순으로 나열해야 합니다. 주효과의 경우 더 근본적인 변수가 먼저 나열되어야 합니다. 따라서 성별은 치료 전에 나열됩니다. 결론은 다음과 같습니다. 연구 설계가 직교하지 않은 경우(즉, 요인 및/또는 공변량이 상관 관계가 있는 경우) 효과의 순서를 지정할 때 주의하십시오.

특정 예제로 이동하기 전에 car 패키지의 Anova() 함수(표준 anova() 함수와 혼동하지 말 것)는 Type I 접근 방식보다 Type II 또는 Type III 접근 방식을 사용하는 옵션을 제공합니다. aov() 함수는 Type I 접근 방식을 사용합니다. 자세한 내용은 help(Anova, package="car")를 참조하세요.

anova_test()

rstatix 패키지anova_test() 함수를 적용합니다. 이 함수는 다양한 유형의 ANOVA 테스트를 수행할 수 있는 파이프 친화적인 프레임워크를 제공합니다.

  • 독립 측정 ANOVA: 개체 간 설계
  • 반복 측정 ANOVA: 개체 내 설계
  • 혼합 ANOVA: 피험자 내 및 피험자 간 혼합 설계(분할 그림 ANOVA라고도 함)
  • ANCOVA: 공분산 분석

이 함수는 anova() 및 aov() 함수를 포함합니다. 인수로 모델과 공식을 입력으로 지원할 수 있습니다. 변수는 dv, wid, between, within, covariate 인수를 사용하여 문자형 벡터로 지정할 수도 있습니다. 결과에는 ANOVA 표, 일반화된 효과 크기 및 일부 가정 확인이 포함됩니다.

anova_test(data, formula, dv, wid, …)
  • data: 분석을 위한 data.frame 또는 모델
  • formula: aov() 함수에 사용되는 모델, 반응변수~공변량+설명변수1+…
    • betweens(독립측정 ANOVA): y~b1*b2
    • within(반복측정 ANOVA): y~w1*w2+Error(id/(w1*w2))
    • mixed ANOVA: y~b2*b2*w1+Error(id/w1)
    • formula(공식)에 변수가 포함되어 있지 않으면 선형 모델이 직접 피팅되어 ANOVA 함수에 전달됩니다. 반복 설계의 경우 ANOVA 변수가 공식에서 구문 분석됩니다.
  • dv :수치형, 반응변수
  • wid:(인자, factor) column name containing individuals/subjects identifier. Individual별로 구성

댓글

이 블로그의 인기 게시물

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