Table of Contents
일원분산분석이란 독립변수가 하나일 때 분산의 원인이 집단 간 차이에 기인한 것인지를 분석하는 통계적 방법
- 인종간 지능의 차이
- 사회계층에 따른 사회에 대한 만족도 차이
- 교수법에 따른 학업 성취의 차이
예시: 편의점 종류에 따라 고객의 만족도에 차이가 있을까?
- 귀무가설:편의점 종류에 따른 고객의 만족도에는 차이가 없다.
- 대립가설:편의점 종류에 따른 고객의 만족도에는 차이가 있다.
다음 코드를 통해 ANOVA분석을 실행해보자.
import scipy as sp
import numpy as np
import pingouin as pg
# 데이터 생성
data = {
'store': [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
'satisfaction': [1, 5, 4, 3, 3, 3, 3, 5, 5, 4, 5, 5, 3, 2, 4, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2]
}
# 데이터프레임 생성
df = pd.DataFrame(data)
# 데이터 프레임 필터링
df1 = df[['store', 'satisfaction']]
#소수점 형식 설정
pd.options.display.float_format='{:3f}'.format
#상점 1,2,3의 만족도 점수 추출
store = []
for i in range(1, 4):
store.append(df1[df1['store']==i]['satisfaction'].values)
#Levene의 등분산 검정
sp.stats.levene(store[0], store[1], store[2])
>>>
LeveneResult(statistic=1.5399310992796744, pvalue=0.23663167821410097)
#
print(pg.anova(dv='satisfaction', between='store', data=df1))
코드분석
1. Levene의 등분산 검정
sp.stats.levene(store[0], store[1], store[2])
>>>
LeveneResult(statistic=1.5399310992796744, pvalue=0.23663167821410097)
sp.stats.levene() 함수를 사용하여 세 개의 상점(store[0], store[1], store[2])의 만족도 점수 분산이 동일한지 검정합니다. Levene의 검정은 세 개 이상의 샘플의 분산이 동일한지 여부를 평가하는 데 사용되며, 이는 분산분석(ANOVA)을 실행하기 전의 전제 조건 검정 중 하나입니다.
2. ANOVA (분산분석)
print(pg.anova(dv='satisfaction', between='store', data=df1))
pg.anova() 함수는 데이터셋 내에서 하나 이상의 독립 변수(여기서는 store)에 따라 종속 변수(satisfaction)의 평균 차이가 통계적으로 유의한지를 검정합니다.
- dv='satisfaction': dv는 종속 변수(Dependent Variable)를 의미하며, 이 경우 고객 만족도(satisfaction)가 그 역할을 합니다.
- between='store': between은 독립 변수(Independent Variable)를 지정하는 인자로, 여기서는 상점(store)이 사용됩니다. 즉, 상점별로 고객 만족도의 차이가 있는지 분석하려는 것입니다.
- data=df1: data는 분석할 데이터 프레임을 지정합니다. 여기서 df1은 상점 ID와 고객 만족도 점수를 포함하고 있어야 합니다.
결과값은 다음과 같습니다. pg.anova() 함수는 분산분석 결과를 포함하는 DataFrame을 반환합니다. 이 DataFrame에는 다음과 같은 컬럼이 포함될 수 있습니다:
- Source: 이 열은 변동의 원인을 나타냅니다. 분석에서 독립변수(예: store) 또는 오차(Error) 등이 이에 해당할 수 있습니다. 각 Source는 데이터 내의 변동성이 어디서 기인하는지를 나타냅니다.
- ddof1 (Degrees of Freedom of the Model): 2 이는 분석에 사용된 독립변수의 자유도를 나타내며, 독립변수의 수 또는 그룹의 수에서 1을 뺀 값입니다. 예를 들어, 세 개의 편의점이 있다면 ddof1은 2가 됩니다 (3-1).
- ddof2 (Degrees of Freedom of the Residuals): 22 - 잔차의 자유도로, 전체 관측치의 수에서 독립변수의 수를 뺀 값입니다. 이는 데이터의 총 자유도에서 모델 자유도3 (편의점수)를 뺀 것과 동일합니다.
- F (F-Statistic): 20.637529 - F-통계량은 그룹 간 평균의 차이(편의점 간 고객 만족도의 차이 )가 그룹 내 변동(편의점 내에서의 차이(자연적 변동) )에 비해 얼마나 큰지를 나타내는 값입니다. 이 값은 그룹 간 변동을 그룹 내 변동으로 나눈 비율로 계산됩니다. F-통계량이 크면, 독립변수(예:편의점)가 종속변수(예: 만족도)에 유의미한 영향을 미치고 있다고 볼 수 있습니다.
- p-unc (Uncorrected p-value): 0.000009 - F-통계량에 대한 p-값으로, 모델이 데이터를 얼마나 잘 설명하는지의 유의성을 테스트합니다. p-값이 0.05 이하인 경우, 통계적으로 유의미하다고 간주하며, 이는 독립변수가 종속변수에 유의미한 영향을 미치고 있다는 것을 의미합니다.
- np2 (Partial Eta Squared): 0.652312 - 효과 크기의 측정으로, 독립변수가 종속변수에서 차지하는 변동 비율을 나타냅니다.편의점이 고객 만족도에 미치는 영향이 전체 변동성의 약 65.23%를 설명한다는 것을 나타냅니다. 값이 클수록 해당 독립변수(편의점)가 종속 변수(만족도)에 상당한 영향을 미치고 있음을 의미합니다.
해석
이 결과를 바탕으로, 편의점 간의 고객 만족도 차이는 통계적으로 매우 유의미하며, 편의점 은 고객 만족도에 큰 영향을 미치는 중요한 요소임을 확인할 수 있습니다. 따라서 편의점 별 서비스 개선 또는 관리 전략을 세우는 데 이 데이터를 사용할 수 있을 것입니다.
하지만 어느 집단과 어느 집단 간에 차이가 있는지는 이야기 할 수 없는 단점이 있습니다. 예를들어, 각기 다른 편의점 A, B, C 에 따른 만족도를 분석한 결과 귀무가설이 기각되지 이는 고객들의 편의점에 대한 만족도 차이가 있음을 의미하나 어느 편의점에 대한 만족도의 차이인지는 알 수가 없습니다.
사후분석 post-hoc analysis
이를 해결하기 위해 사후분석을 진행합니다.
- 편의점 A 만족도 vs 편의점 B 만족도
- 편의점 A 만족도 vs 편의점 C 만족도
- 편의점 B 만족도 vs 편의점 C 만족도
import scikit_posthocs
df1['store'] = df1['store'].astype(str)
print(scikit_posthocs.posthoc_scheffe(df1, val_col='satisfaction', group_col='store'))
posthoc_scheffe 함수는 DataFrame 형태로 반환되며, 각 셀은 비교된 두 그룹 간의 p-value를 담고 있습니다. 이 p-value는 두 그룹 간의 평균 차이가 통계적으로 유의미한지를 나타냅니다. 3x3=9 총 9개의 p-value 결과가 보여지고 3C2=3가지의 조합만이 의미가 있게 됩니다.
- 편의점 1과 편의점 2 간의 p-value (0.159):
- 이 값은 0.05보다 크기 때문에, 편의점 1과 편의점 2 간의 고객 만족도 차이가 통계적으로 유의미하지 않다고 해석할 수 있습니다. 즉, 이 두 편의점 간에는 만족도에 있어서 유의미한 차이가 존재하지 않는다고 볼 수 있습니다.
- 편의점 1과 편의점 3 간의 p-value (0.002):
- 이 값은 0.05보다 훨씬 작으므로, 편의점 1과 편의점 3 간의 만족도 차이가 통계적으로 매우 유의미하다고 해석할 수 있습니다. 이는 편의점 1과 편의점 3의 고객 만족도가 서로 다르며, 이 차이는 통계적으로 중요하다는 것을 의미합니다.
- 편의점 2와 편의점 3 간의 p-value (0.00001):
- 이 값도 매우 작기 때문에, 편의점 2와 편의점 3 간에는 고객 만족도에서 매우 유의미한 차이가 있음을 나타냅니다. 이 결과는 편의점 2와 편의점 3 사이의 만족도 차이가 매우 크고, 통계적으로 매우 중요하다는 것을 보여줍니다
최종해석
편의점 1과 편의점 2는 고객 만족도에 있어서 유의미한 차이가 없는 반면, 편의점 1과 편의점 3, 그리고 편의점 2와 편의점 3은 매우 유의미한 차이를 보이고 있습니다. 이는 편의점 3이 다른 두 편의점과 비교했을 때 고객 만족도에 있어서 통계적으로 유의미하게 다르다는 것을 의미하며, 만족도 값이 낮은 것으로 보아 관리나 서비스 개선 등의 조치를 고려할 필요가 있습니다.
'통계' 카테고리의 다른 글
상관분석 Correlation Analysis (0) | 2024.04.25 |
---|---|
이원분산분석 Two-way ANOVA/ 상호작용 효과 Interaction effect (0) | 2024.04.25 |
t-test t검정/ ANOVA 분산분석 (0) | 2024.04.25 |
종속표본 t-test t검정 (0) | 2024.04.25 |
독립표본 / 종속표본 / t-test t검정/ t-stat t통계량/ p-value유의확률/ two-tailed test양측검정 (0) | 2024.04.25 |
- Total
- Today
- Yesterday
- Array
- speaking
- LLM
- Python
- Lora
- t5
- English
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- Transformer
- recursion #재귀 #자료구조 # 알고리즘
- cnn
- 리스트
- 파이썬
- clustering
- LIST
- Hugging Face
- RAG
- 손실함수
- Numpy
- git
- Github
- 해시
- 코딩테스트
- classification
- nlp
- PEFT
- 티스토리챌린지
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |