기본 콘텐츠로 건너뛰기

[ML] 결정트리(Decision Tree) 모델

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별로 구성

댓글

이 블로그의 인기 게시물

[Linear Algebra] 유사변환(Similarity transformation)

유사변환(Similarity transformation) n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation) 이라고 합니다. $$\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B $$ 식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다. \begin{align}\tag{식 2} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align} 식 2의 행렬식은 식 3과 같이 정리됩니다. \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)\\ &= \textsf{det}(I)\end{aligned}\end{align} 유사행렬의 특성 유사행렬인 두 정방행렬 A와 B는 'A ~ B' 와 같

[matplotlib] 히스토그램(Histogram)

히스토그램(Histogram) 히스토그램은 확률분포의 그래픽적인 표현이며 막대그래프의 종류입니다. 이 그래프가 확률분포와 관계가 있으므로 통계적 요소를 나타내기 위해 많이 사용됩니다. plt.hist(X, bins=10)함수를 사용합니다. x=np.random.randn(1000) plt.hist(x, 10) plt.show() 위 그래프의 y축은 각 구간에 해당하는 갯수이다. 빈도수 대신 확률밀도를 나타내기 위해서는 위 함수의 매개변수 normed=True로 조정하여 나타낼 수 있다. 또한 매개변수 bins의 인수를 숫자로 전달할 수 있지만 리스트 객체로 지정할 수 있다. 막대그래프의 경우와 마찬가지로 각 막대의 폭은 매개변수 width에 의해 조정된다. y=np.linspace(min(x)-1, max(x)+1, 10) y array([-4.48810153, -3.54351935, -2.59893717, -1.65435499, -0.70977282, 0.23480936, 1.17939154, 2.12397372, 3.0685559 , 4.01313807]) plt.hist(x, y, normed=True) plt.show()

R 미분과 적분

내용 expression 미분 2차 미분 mosaic를 사용한 미분 적분 미분과 적분 R에서의 미분과 적분 함수는 expression()함수에 의해 생성된 표현식을 대상으로 합니다. expression expression(문자, 또는 식) 이 표현식의 평가는 eval() 함수에 의해 실행됩니다. > ex1<-expression(1+0:9) > ex1 expression(1 + 0:9) > eval(ex1) [1] 1 2 3 4 5 6 7 8 9 10 > ex2<-expression(u, 2, u+0:9) > ex2 expression(u, 2, u + 0:9) > ex2[1] expression(u) > ex2[2] expression(2) > ex2[3] expression(u + 0:9) > u<-0.9 > eval(ex2[3]) [1] 0.9 1.9 2.9 3.9 4.9 5.9 6.9 7.9 8.9 9.9 미분 D(표현식, 미분 변수) 함수로 미분을 실행합니다. 이 함수의 표현식은 expression() 함수로 생성된 객체이며 미분 변수는 다음 식의 분모의 변수를 의미합니다. $$\frac{d}{d \text{변수}}\text{표현식}$$ 이 함수는 어떤 함수의 미분의 결과를 표현식으로 반환합니다. > D(expression(2*x^3), "x") 2 * (3 * x^2) > eq<-expression(log(x)) > eq expression(log(x)) > D(eq, "x") 1/x > eq2<-expression(a/(1+b*exp(-d*x))); eq2 expression(a/(1 + b * exp(-d * x))) > D(eq2, "x") a * (b * (exp(-d * x) * d))/(1 + b