Linuxias
Developer's Delight
Linuxias
  • Category
    • AI
      • Deep Learning
      • Machine Learning
      • Data Science
      • Framework
      • MLOps
      • Paper-Review
      • Tips
    • Android
      • Kotlin
      • Component
      • Compose
      • Compose UI
      • Material
      • Testing
    • Software Architecture
      • Architecture Pattern
      • Design Pattern
      • Requirement Engineering
    • Linux
      • Compile & Link
      • Command & Tool
      • Container
      • Debugging & Testing
      • Profiling
      • Kernel Analysis
      • Server
      • Shell Script
      • System Programming
    • Language
      • Carbon
      • C,C++
      • C#
      • Java
      • Python
    • ETC
      • Data Struct | Algorithm
      • git
      • Security
    • Book
    • 경제공부
      • 세금
      • 부동산
hELLO · Designed By 정상우.
Linuxias

Developer's Delight

[ANOVA] 일원 / 이원분산분석 해보기 (상호작용항)
AI/Data Science

[ANOVA] 일원 / 이원분산분석 해보기 (상호작용항)

2023. 4. 20. 00:14
반응형

이 글에서는 이론은 다루지 않습니다.

 

일원분산분석 (One-way ANOVA)

일원분산분석에서 등분산 검정은 sklearn에 포함된 $bartlett()$을 이용하여 구할 수 있다. $bartlett()$ 함수의 시그니처는 아래와 같다.

Signature: bartlett(*samples)
Docstring:
Perform Bartlett's test for equal variances.

Bartlett's test tests the null hypothesis that all input samples
are from populations with equal variances.  For samples
from significantly non-normal populations, Levene's test
`levene` is more robust.

$bartlett()$은 t-test 검정을 다룰 때 많이 사용된다. $ttest_ind()$ 사용 시 등분산 여부를 입력하게 되는데 (파라미터 equal_var) 이때 모집단의 등분산 검정을 $bartlett()$의 결과를 해석하여 입력한다.

만약 $bartlett()$ 의 p-value가 유의수준 0.05를 넘지 못한다면, $H_{0}$ 귀무가설이 채택되어 등분산이라 판단할 수 있다. 

 

이원분산분석 (Two-way ANOVA)

요인이 두개 이상이고 그룹이 두개 이상인 경우이다. 요인간의 상호작용이 있는지 확인하고,  상호작용이 없을시 일원분산분석을 각각의 요인에 대해 수행한다. 일원분산분석처럼 statsmodels.formula.api.ols, statsmodels.stats.anova.anova_lm을 통해 측정 가능하다.

  • 독립변수 : C_var1, C_var2 (모두 범주형 변수)
  • 종속변수 : target

아래와 같은 코드를 이용하여 이원분산분석, 그 중에서 상호작용항의 정보를 구할 수 있다. 

from statsmodels.formula.api import ols
from statsmodels.api import stats

model = ols('target ~ C(C_var1) + C(C_var2) + C(C_var1):C(C_var2)', df).fit()
stats.anova_lm(model)

위 코드에서 C_var1과 C_var2 변수를 C로 감싼 것은 범주형 변수라는 것을 알려주는 것이다. 만약 범주형 변수에 C 로 감싸주지 않는다면 잘못된 값을 얻을 것이다.

위 코드를 실행하면 아래와 같은 결과를 얻을 수 있다.

index에 상호작용항 $C(C_var1):C(C_var2)$ 를 확인할 수 있다.

 

반응형
저작자표시 비영리 (새창열림)

'AI > Data Science' 카테고리의 다른 글

[분석통계] 정규성 검정  (0) 2023.05.29
[분석통계] 통계적 검정 방법 간단 정리  (0) 2023.05.27
[Pandas] 여러 Column 동시에 추가하기 (assign)  (0) 2023.04.19
가설과 P-Value의 의미  (0) 2023.04.11
[Pandas] Apply, Map Practice  (0) 2023.04.02
    'AI/Data Science' 카테고리의 다른 글
    • [분석통계] 정규성 검정
    • [분석통계] 통계적 검정 방법 간단 정리
    • [Pandas] 여러 Column 동시에 추가하기 (assign)
    • 가설과 P-Value의 의미
    Linuxias
    Linuxias
    I want to be a S/W developer who benefits people.

    티스토리툴바