성별(남성,여성)과 치료 방법(고강도, 저강도 운동)의 두 가지 요인과 결과 변수(체중감량)를 포함한 실험 설계
편의점별(A,B,C)과 상권별(강남,홍대,종로)의 두 가지 요인과 결과 변수(만족도)를 포함한 실험 설계
Q. 두 독립변수에 대한 소비자 만족도에 사이가 있는지 여부를 유의수준 5%에 대해 검정하라.
조사의 목적이 편의점별, 상권별 두 독립변수에 대해 소비자 만족도에 사이가 있는지에
맞취져 있으므로 가설은 기본적으로 2개이고 상호작용을 생각하면 총 3개의 가설을 수립
할수 있다.
분산분석은 모든 모집단이 정규성을 가지고 모든 집단의 분산이 같다고 가정
aov(y~x1+x2, data="dataset이름")
Y : 정량적인수치
x1 : 첫 번째 요인변수(factor)
x2 : 두 번째 요인변수
#다음 자료를 대상으로 학년별, 성별로 성적의 차이가 있는지 검정하라
# data 입력
score01 <- c(70,76,78,80,82,85)
score02 <- c(76,77,78,79,78,77)
score03 <- c(69,67,66,63,62,67)
scoreAll <- c(score01,score02,score03)
# 학년 label 만들기
grade <- c(rep(1,6),rep(2,6),rep(3,6))
# 성별 label 만들기
gender <- rep(c('male','male','male','female','female','female'),3)
# 학년을 수치 data에서 요인변수(factor)로 변경
grade <- factor(grade)
sampleData <- data.frame(scoreAll,grade,gender)
sampleData
scoreAll grade gender
1 70 1 male
2 76 1 male
3 78 1 male
16 63 3 female
17 62 3 female
18 67 3 female
# 학년별, 성별 평균
tapply(sampleData$scoreAll,list(sampleData$grade,sampleData$gender), m
ean)
female male
1 82.33333 74.66667
2 78.00000 77.00000
3 64.00000 67.33333
# 학년별, 성별 표준편차
tapply(sampleData$scoreAll,list(sampleData$grade,sampleData$gender), sd
)
female male
1 2.516611 4.163332
2 1.000000 1.000000
3 2.645751 1.527525
# 분산분석
result01 <- aov(scoreAll~grade+gender, data=sampleData)
summary(result01)
Df Sum Sq Mean Sq F value Pr( >F)
grade 2 611.4 305.72 26.402 1.78e-05 ***
gender 1 14.2 14.22 1.228 0.286
Residuals 14 162.1 11.58
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# TukeyHSD 사후비교
TukeyHSD(result01)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = scoreAll ~ grade + gender, data = sampleData)
$grade
diff lwr upr p adj
2-1 -1.00000 -6.141999 4.141999 0.8682151
3-1 -12.83333 -17.975333 -7.691334 0.0000372
3-2 -11.83333 -16.975333 -6.691334 0.0000872
$gender
diff lwr upr p adj
male-female -1.777778 -5.218267 1.662712 0.2864267
# data 입력
score01 <- c(70,76,78,67,71,72,80,82,85,74,77,79)
score02 <- c(76,77,78,65,76,67,79,78,77,71,69,68)
score03 <- c(69,67,66,73,71,68,63,62,67,66,65,71)
scoreAll <- c(score01,score02,score03)
# 학년 label 만들기
grade <- c(rep(1,12),rep(2,12),rep(3,12))
# 성별 label 만들기
gender <- rep(c(rep('male',6),rep('female',6)),3
# 학년을 수치 data에서 요인 변수로 변경
grade <- factor(grade)
sampleData <- data.frame(scoreAll,grade,gender)
sampleData
scoreAll grade gender
1 70 1 male
2 76 1 male
3 78 1 male
.
.
33 67 3 female
34 66 3 female
35 65 3 female
36 71 3 female
# 학년별, 성별 평균
tapply(sampleData$scoreAll,list(sampleData$grade,sampleData$gender), m
ean)
female male
1 79.50000 72.33333
2 73.66667 73.16667
3 65.66667 69.00000
# 학년별, 성별 표준편차
tapply(sampleData$scoreAll,list(sampleData$grade,sampleData$gender), sd
)
female male
1 3.834058 4.033196
2 4.885352 5.636193
3 3.204164 2.607681
#분산분석
result02 <- aov(scoreAIIN grade 十gender 十grade:gender, data=sampIeData)
summary(result02)
Df Sum Sq Mean Sq
grade
gender
2 467.7
1 18.8
233.86
18.78
84.69
17.28
Fvalue
13.535
1.087
4.902
Pr(>F)
6.47e-05 ***
0.3055
grade:gender 2 169.4 0.0144 *
Residuals 30 518.3
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 " 1
# TukeyHSD 사후비교
TukeyHSD(result02)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = scoreAll ~ grade + gender + grade:gender, data = sampleD
ata)
$grade
diff lwr upr p adj
2-1 -2.500000 -6.683435 1.683435 0.3177788
3-1 -8.583333 -12.766768 -4.399898 0.0000574
3-2 -6.083333 -10.266768 -1.899898 0.0032814
# 등분산 검정을 위해 library 설치 및 불러오는 과정
install.packages("car")
library(car)
# Levene's Test를 이용하여 등분산 검정
leveneTest(scoreAll ~ grade*gender,data=sampleData)
# boxplot
boxplot(scoreAll~gender*grade,data = sampleData)
# Interaction plot
interaction.plot(x.factor=sampleData$grade, # x축에 사용할 변수
trace.factor=sampleData$gender, # 선으로 표현될 변수
response=sampleData$scoreAll)