여정의 기록
분산분석이란 ... 본문
728x90
실험계획법에서 가장 대표적으로 사용하는 방법이 분산분석이다.

일원분산분석
- Y : tensile 섬유의 장력
- 요인(인자) : pct 목화 함유량
- 수준 : 5 분류
- 목화 함유량 수준에 따라 섬유의 장력이 달라지는지 알고 싶어서 분석
- 실험계획법에서 가장 중요한게 랜덤이다(무엇을 ...?)
- n 번째 수준의 목화 함유량 평균 -
- 전체 평균 mu + 효과 alpha i + error i = Y ij
여기서 수준별 alpha가 다른가 ... ? - (각 값 - 총 평균) = ( 각 값 - 각 수준 평균 ) + ( 각 수준 평균 - 전체 평균 )
(각 값 - 총 평균)의 제곱의 모든합 = (각 값 - 각 수준평균)의 제곱의 모든 합 + (각 수준 평균 - 전체 평균)의 제곱의 모든 합
총 변동 = 오차에 대한 요인 + 인자에 대한 요인
총 제곱합 = 오차에 대한 변동...? + 수준간의 차이
변동을 분해 -> 분산 분석표라고 한다! - 분산분석표 작성을 통해 수준 간의 차이가 있는지 확인할 수 있다.
- 분산분석표를 통해 수준간의 차이가 있다는 것을 알았다 -> 어느 수준간의 차이가 있는가를 알아보자 - 다중비교
R
# 그룹별 기술통계량
by(cotton$tensile, cotton$pct, summary)
# 분산분석표 출력
fit = aov(tensile(원하는값) ~ pct(분류), data=cotton)
summary(fit)
다중비교분석
방법 1. Tukey 2. Duncan 3. Schefle
R
# 요인이 하나인 경우
TukeyHSD(fit) # Tukey방법의 다중비교
# a-b 방법의 차이 - p value도 확인할 수 있다.
# 분산분석표내기 위해 선형회귀 적합먼저
fit = lm(tensile ~ pct, data=cotton)
summary(fit)
# 분산분석표임
anova(fit)
Python
# Python
# 선형모형을 적합시킨다음 작업
# 각 수준별로 Mean, SD, SE 95% Conf 구함
rp.summary_cont(data['tensile'].groupby(data['pct'])
# y= ax+b+e 를 먼저 적합시키고
# C : 숫자가 아닌 인자이다.
fit = ols('data.tensile = C(cotton.pct)', data=data).fit()
fit.summary()
각 경우의 수에 따른 coef 값을 확인할 수 있다.
# 분산분석표
sm.stats.anova_lm(fit, typ=2)
tukeyhsd 방법에 의한 분산분석표
from statsmodels.formula.api import ols
from statsmodels.stats.multicomp import pairwise_tukeyhsd
from statsmodels.stats.multicomp import MultiComparison
fit = ols('cotton.tensile ~ C(cotton.pct)', data=cotton).fit()
mc = MultiComparison(cotton['tensile'], cotton['pct'])
mc_tukey = mc.tukeyhsd()
이원분산분석
결과값 = 총 합기대값 + 온도에 대한 기대값 + 유리종류에 대한 기대값 + 교호작용효과 + 오차항
위의 모형으로 진행한다.
limbrary(car)
# recode 값을 원하는 것을 바꿔준다.
glass$temperature=recode(glass$temperature, "100=1; 123=2; 150=3;")
# 인자변수로 선언
glass$glass = factor(glass$glass)
glass$temperature = factor(glass$temperature)
# 인자분석
# way1
fit = aov(strength ~ glass + temperature + glass : temperature, data=glass)
# way2
fit = aov(strength ~ glass * temperature, data=glass)
# 분산분석표
summary(fit)
시각화
728x90
'공부중 ... > 파이썬과 R' 카테고리의 다른 글
Pandas, dplyr 간단하게 몇가지 함수 ... (0) | 2022.12.11 |
---|---|
R, Python을 이용한 산점도, 상관계수, 회귀분석 (0) | 2022.12.09 |
t-검정에 대하여 (0) | 2022.12.09 |
R, python을 이용한 기술통계 (0) | 2022.12.09 |
자료의 입력과 출력 (0) | 2022.12.07 |