일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 주식데이터시각화
- R 연습문제
- 카플란마이어
- R 결측치
- 이산형 확률분포
- R문법
- 생존분석
- CrossValidation
- R
- R select
- 생존그래프
- dplyr
- 콕스비례모형
- 데이터 핸들링
- 데이터핸들링
- geom_errorbar
- 확률실험
- ISLR
- R ggplot2
- R dplyr
- 의사결정나무
- Bias-Variance Tradeoff
- 미국 선거데이터
- ggplot2
- ggsurvplot
- ggplot()
- 강화학습 #추천서적 #강화학습인액션
- 교차타당성
- R mutate
- R filter
- Today
- Total
Must Learning With Statistics
분산분석(R Code) 본문
7. 분산분석(R Code)
분산분석을 R에서 실행하는 방법은 다음과 같습니다. 분석하고자 하는 것은 *satisfaction_level(직무 만족도)의 평균이 salary(연봉 수준, low, medium, high) 집단에 따라 차이가 있는지 통계적으로 검정하고자 합니다. *
귀무가설은 다음과 같습니다.
$$
H_0:salary(연봉)\ 수준별로\ satisfaction\ level(직무만족도)의\ 평균이\ 같을\ 것이다.
$$
$$
H_1:not;H_0
$$
ANOVA = aov(satisfaction_level ~ salary, data = HR)
summary(ANOVA)
Df Sum Sq Mean Sq F value Pr(>F)
salary 2 2.3 1.1693 18.96 5.97e-09 ***
Residuals 14996 924.8 0.0617
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
분석결과를 보시면 분산분석표가 나옵니다. Df는 자유도, Sum sq는 제곱합을 Mean Sq는 평균제곱합을 의미합니다. 위에서 언급했던 분산분석표를 그대로 가져와서 값을 채워넣으면 다음과 같습니다.
정해진 순서대로 제곱합과 자유도를 구한 후 평균제곱을 계산한뒤 검정통계량인 F value를 구했습니다. 마지막으로 유의확률 p-value를 확인할 수 있습니다. p-value는 0과 매우 가까운 값이기 때문에 당연히 유의 수준 0.05보다 작습니다. 그러므로 귀무가설 $H_0$를 기각할 수 있습니다. 즉 연봉 수준별로 직무만족도의 평균은 동일하지 않습니다.
하지만 이 상태로는 위에서 말했듯이 '평균이 같지 않다.'만을 알 수 있지, 정확히 어떻게 다른지 알 수가 없기 때문에 사후검정을 진행해야됩니다.
TUKEY = TukeyHSD(ANOVA)
TUKEY
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = satisfaction_level ~ salary, data = HR)
$salary
diff lwr upr p adj
low-high -0.03671654 -0.05461098 -0.018822102 0.0000046
medium-high -0.01565305 -0.03372130 0.002415191 0.1049520
medium-low 0.02106349 0.01111999 0.031006988 0.0000021
plot(TUKEY)
사후검정은 여러 방법이 있습니다. 지금 사용한 방법은 Tukey 사후검정입니다. 해석을 하는 방법은 다음과 같습니다. 3개의 집단을 2개씩 따로 분석을 한 것이며, 비교하는 두 집단 간의 차이가 같은지 다른지 다시 한번 검정하는 것입니다. plot은 사후검정 결과를 나타낸 것이며 보는 법은 간단합니다. 각 신뢰구간 안에 0이 포함되는지 아닌지만 보시면 됩니다.
- low - high : low 집단의 satisfaction_level의 평균과 high 집단의 satisfaction_level의 평균차이를 비교하니 신뢰구간이 $[-0.054(lwr),-0.018(upr)]$사이에 있는 것을 알 수 있습니다. 해당 구간 안에 0이 포함되어있지 않으며, 0보다 작기 때문에 low집단의 satisfaction_level 평균은 high 집단의 satisfaction_level에 비해 작다는 것을 의미합니다.
- medium - high : medium 집단과 high 집단의 satisfaction_level의 비교를 진행한 결과 신뢰구간이 $[-0.033,0.0024]$입니다. 0을 포함하기 때문에 medium집단과 high집단의 satisfaction_level의 평균은 같다고 볼 수 있습니다.
- medium - low : 신뢰구간이 0을 포함하지 않고 0보다 크기 때문에 medium이 low집단보다 satisfaction_level의 평균이 높다고 볼 수 있습니다.
정리를 하면 satisfaction_level의 평균은 $low < medium = high$ 순서인 것을 알 수 있습니다. 즉 low집단의 평균이 낮기 때문에 귀무가설을 기각하게 된 것입니다.
지금까지 진행한 이론과 분석을 정확히는 일원배치 분산분석(One way Anova)이라고 합니다. 만약 평균을 비교할 때 하나의 요인만 사용하지 않고 여러개의 요인을 사용하여 분석을 하고 싶을 때가 있습니다. 만약 2개의 요인을 통해 평균을 비교하고자 하면 이원배치 분산분석(Two way Anova)이라고 합니다.
T_ANOVA = aov(satisfaction_level ~ salary + left +
salary:left, data = HR)
summary(T_ANOVA)
Df Sum Sq Mean Sq F value Pr(>F)
salary 2 2.3 1.17 22.276 2.19e-10 ***
left 1 137.8 137.79 2624.960 < 2e-16 ***
salary:left 2 0.0 0.01 0.155 0.856
Residuals 14993 787.0 0.05
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
요인을 하나 더 넣어주면 바로 이원배치 분산분석을 진행할 수 있습니다. 다만 신경써야할 부분은 요인을 두개를 사용할 경우, 각 요인 간의 교호작용이 있는지 확인을 해야됩니다. 위 분석 결과에서는 단일 효과(salary, left)는 유의한 것을 알 수 있지만 교호작용효과(salary:left)는 유의하지 않다는 것을 알 수 있습니다. 이런 경우 교호작용항을 제거하고 모형을 다시 분석하면 됩니다.
'통계 이론' 카테고리의 다른 글
상관분석 (R code) (0) | 2020.03.23 |
---|---|
상관분석 (0) | 2020.03.23 |
분산분석 (ANOVA) (0) | 2020.03.23 |
t검정(R Code) (1) | 2020.03.23 |
t검정 (0) | 2020.03.22 |