아이티윌_데이터 분석 55기/문제풀이_통계 및 분석

#7-2. 7일차 퀴즈에 대한 문제풀이

ecosso 2026. 4. 21. 17:05

# [ 연습 문제 ]
# 화학공정 온도 100, 150, 200, 250도 4개의 수준에서 랜덤하게 반복 실험하여 
# 수율(양품비율)을 측정, 각 온도별로 수율값이 달라지는지
# (온도의 변화가 수율에 영향을 미치는지 검정)
# 관찰대상 : 각 온도별 양품수 
a100 <- c(79, 83, 88, 78, 75)
a150 <- c(81, 89, 91, 84, 86, 82)
a200 <- c(86, 91, 93, 90, 89)
a250 <- c(76, 81, 82, 79)

# 가설
# 영가설) 세집단의 모평균이 같다(온도의 변화가 수율에 영향을 미치지 않는다)
# 대립가설) 세집단의 모평균이 다르다(온도의 변화가 수율에 영향을 미친다)

더보기

[ 내 답변 ] 

 

# SST = SSE + SSt

df1 <- c(a100, a150, a200, a250)


se100 <- sum((a100-mean(a100))^2)
se150 <- sum((a150-mean(a150))^2)
se200 <- sum((a200-mean(a200))^2)
se250 <- sum((a250-mean(a250))^2)

n <- length(df1)
k <- 4

n100 <- length(a100)
n150 <- length(a150)
n200 <- length(a200)
n250 <- length(a250)

# MSE
sse <- se100 + se150 + se200 + se250
mse <- sse / (n-k)

# SSt
st100 <- n100 * (mean(a100) - mean(df1))^2
st150 <- n150 * (mean(a150) - mean(df1))^2
st200 <- n200 * (mean(a200) - mean(df1))^2
st250 <- n250 * (mean(a250) - mean(df1))^2

sst <- st100 + st150 + st200 + st250
mst <- sst / (k-1)

# F 통계량
mst / mse
 = 7.53613

qt(1-0.05, k-1, n-k) # 3.238872

# 기각역 : [3.238872, inf]
# 채택역 : [0, 3.238872]
# 귀무가설 기각 : 세집단의 모평균이 다르다(온도의 변화가 수율에 영향을 미친다)

# 유의확률
1-pf(7.53613, k-1, n-k) # 0.002307083

# ANOVA
value <- c(a100, a150, a200, a250)
group <- c(rep("a100", length(a100)),
           rep("a150", length(a150)),
           rep("a200", length(a200)),
           rep("a250", length(a250)))

df1 <- data.frame(group = group, value = value)


df1$value <- as.numeric(as.character(df1$value))
df1$group <- factor(df1$group)

m1 <- lm(value~group, data =df1)
summary(aov(m1))

> summary(aov(m1))
            Df Sum Sq Mean Sq F value  Pr(>F)   
group        3  320.0  106.68   7.536 0.00231 **
Residuals   16  226.5   14.16                   
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

[ 문제풀이 ]

 

df1 <- data.frame(x=c(rep(1,5), rep(2,6), rep(3,5), rep(4,4)), y=c(a100, a150, a200, a250))

df1$x <- factor(df1$x)

m1 <- lm(y ~ x, data =df1)
summary(aov(m1))

> summary(aov(m1))
                   Df Sum Sq Mean Sq F value  Pr(>F)   
x(요인)            3  320.0  106.68   7.536 0.00231 ** <<< 0.05 => 귀무가설 기각!
Residuals(오차)   16  226.5   14.16                   


n <- nrow(df1)
k <- 4

#  sse)
sse1 <- sum((a100 - mean(a100))^2)
sse2 <- sum((a150 - mean(a150))^2)
sse3 <- sum((a200 - mean(a200))^2)
sse4 <- sum((a250 - mean(a250))^2)

sse <- sse1 + sse2 + sse3 + sse4
mse <- sse / (n-k)

# sst)
sst1 <- length(a100) * (mean(a100) - mean(df1$y))^2
sst2 <- length(a150) * (mean(a150) - mean(df1$y))^2
sst3 <- length(a200) * (mean(a200) - mean(df1$y))^2
sst4 <- length(a250) * (mean(a250) - mean(df1$y))^2

sst <- sst1 + sst2 + sst3 + sst4
mst <- sst / (k-1)

# f통계량
F* = mst/mse ~ F(k-1, n-k)
   = 7.53613

qf(1-0.05, k-1, n-k) # 3.238872

# 기각역 : [3.238872, inf]
# 귀무가설 기각!

# 유의확률)
P(F > 7.53613) = 1 - P(F < 7.53613)
               = 1 - pf(7.53613, k-1, n-k)
               = 0.002307083