본 글은 한국방송통신대학교 통계·데이터과학과 3학년 전공 과목인 회귀모형의 기말 추가과제를 다룬다.
과제는 김성수·강명욱·강위창 공저의 교재(KNOU PRESS, 2024)에 수록된 1장부터 8장까지의 연습문제를 R로 직접 계산하고 그 결과를 해석하는 것을 요구한다. 회귀분석은 단순회귀에서 시작해 중회귀, 회귀진단, 변수선택, 다중공선성, 가변수, 그리고 로지스틱 회귀로 이어지는 하나의 큰 흐름을 이룬다. 방통대 수험생이 각 장의 문항을 풀 때 어떤 R 함수를 쓰고 출력의 어느 숫자를 읽어야 하는지를 장별로 정리하면, 분절된 문제 풀이가 하나의 모형 구축 절차로 연결된다. 이 점에 주목하여 본 보고서는 각 문항의 풀이 절차, 핵심 R 코드, 그리고 출력 해석을 일관된 형식으로 제시한다.
코드는 모두 R의 기본 함수와 표준 패키지(lm, car, MASS 등)로 작성하였으며, 데이터는 교재 본문의 예제 구조를 따르되 재현 가능한 형태로 구성하였다. 숫자 결과 자체보다 그 결과를 읽는 논리에 무게를 두었으므로, 동일한 절차를 교재 데이터에 적용하면 같은 방식으로 해석할 수 있다.
1장 2번 — 상관계수와 산점도로 보는 두 변수의 관계 (3점)
1장은 회귀분석에 들어가기 전 두 변수 사이의 선형 관계를 시각화하고 상관계수로 그 강도를 정량화하는 단계다. 연습문제는 주어진 자료에 대해 산점도를 그리고 표본상관계수를 계산한 뒤 그 부호와 크기를 해석하도록 요구한다.
# 자료 입력 (예: 광고비 x와 매출 y)
x <- c(2, 4, 5, 6, 8, 9, 11, 12)
y <- c(15, 20, 21, 26, 30, 33, 38, 41)
# 산점도
plot(x, y, pch = 19, xlab = "광고비", ylab = "매출",
main = "산점도와 추세")
abline(lm(y ~ x), col = "red")
# 표본상관계수와 유의성 검정
cor(x, y)
cor.test(x, y)
cor()가 돌려주는 값이 1에 가까운 양수이면 두 변수는 강한 양의 선형 관계를 가진다. cor.test()의 출력에서 상관계수에 대한 t-통계량과 p-값을 함께 확인하는데, p-값이 유의수준 0.05보다 작으면 모상관계수가 0이라는 귀무가설을 기각하고 선형 관계가 통계적으로 유의하다고 판단한다. 예시 자료에서는 상관계수가 약 0.99로 매우 강한 양의 관계가 나타나며, 산점도의 점들이 거의 직선을 이루어 단순회귀모형 적용이 타당함을 시각적으로 뒷받침한다. 여기서 상관계수가 높다는 사실은 곧 인과를 뜻하지 않으며, 어디까지나 선형 동행성의 강도를 의미한다는 점을 해석에 명시해야 한다.
2장 2번 — 단순선형회귀모형의 적합과 검정 (3점)
2장은 설명변수 하나로 반응변수를 설명하는 단순선형회귀모형 y = β₀ + β₁x + ε을 다룬다. 문항은 회귀식의 추정, 회귀계수의 유의성 검정, 그리고 결정계수 해석을 요구한다.
fit1 <- lm(y ~ x)
summary(fit1)
anova(fit1)
confint(fit1) # 회귀계수 신뢰구간
predict(fit1, newdata = data.frame(x = 10),
interval = "confidence") # 평균반응 추정
predict(fit1, newdata = data.frame(x = 10),
interval = "prediction") # 개별값 예측
summary() 출력에서 가장 먼저 읽을 것은 Estimate 열의 절편과 기울기 추정값이다. 기울기 추정값은 설명변수가 한 단위 증가할 때 반응변수의 평균 변화량을 뜻한다. 같은 줄의 t-값과 Pr(>|t|)는 해당 계수가 0인지 검정하며, 기울기의 p-값이 0.05보다 작으면 설명변수가 반응변수에 유의한 영향을 준다고 결론짓는다. Multiple R-squared는 반응변수의 총변동 중 회귀모형이 설명하는 비율로, 0.95라면 변동의 95%를 설명한다는 뜻이다. anova()의 F-검정은 모형 전체의 유의성을 보며, 단순회귀에서는 기울기의 t-검정 결과와 동일한 결론을 준다(F = t²). 끝으로 신뢰구간과 예측구간을 구분하는 것이 핵심인데, 같은 점에서 평균반응의 신뢰구간보다 개별 관측값의 예측구간이 항상 더 넓다. 이는 예측구간이 오차항의 변동까지 포함하기 때문이다.
3장 3번 — 중회귀모형과 부분 F-검정 (6점)
3장은 설명변수가 둘 이상인 중회귀모형으로 확장한다. 6점 배점 문항은 여러 설명변수를 동시에 투입한 모형을 적합하고, 개별 회귀계수의 해석과 더불어 일부 변수의 기여를 부분 F-검정으로 평가하도록 한다.
df <- data.frame(
y = c(40, 44, 46, 48, 52, 55, 58, 60, 63, 67),
x1 = c(2, 3, 3, 4, 5, 5, 6, 7, 7, 8),
x2 = c(10, 11, 13, 12, 15, 16, 18, 17, 20, 22)
)
full <- lm(y ~ x1 + x2, data = df)
summary(full)
# x2의 추가 기여 검정 (축소모형 대 완전모형)
reduced <- lm(y ~ x1, data = df)
anova(reduced, full)
중회귀에서 각 회귀계수는 다른 설명변수를 고정한 상태에서 해당 변수가 한 단위 변할 때의 평균 반응 변화량, 즉 편회귀계수로 해석한다. 이 조건부 해석이 단순회귀와의 결정적 차이다. summary()의 Adjusted R-squared는 설명변수 수를 보정한 결정계수로, 변수를 추가했을 때 무조건 커지는 일반 결정계수와 달리 불필요한 변수가 들어오면 오히려 감소하므로 모형 비교에 적합하다. 두 모형을 비교한 anova(reduced, full)은 x2를 추가했을 때의 부분 F-검정 결과를 주며, p-값이 0.05보다 작으면 x2는 x1이 이미 설명한 부분을 넘어서는 고유한 설명력을 가진다고 판단한다. 이 부분 F-검정의 논리는 이후 변수선택의 기초가 된다.
4장 5번 — 잔차분석을 통한 회귀가정 진단 (6점)
4장은 최소제곱추정이 의존하는 가정—오차의 정규성, 등분산성, 독립성, 그리고 선형성—이 실제 자료에서 성립하는지를 잔차로 점검하는 회귀진단을 다룬다. 6점 문항은 적합된 모형의 잔차도를 그리고 각 그림이 가리키는 가정 위반 여부를 판단하도록 요구한다.
fit <- lm(y ~ x1 + x2, data = df)
par(mfrow = c(2, 2))
plot(fit) # 4개 진단 그림 일괄 출력
par(mfrow = c(1, 1))
# 정규성과 등분산성의 수치 검정
shapiro.test(rstandard(fit)) # 잔차 정규성
library(car)
ncvTest(fit) # 등분산성(비상수분산) 검정
durbinWatsonTest(fit) # 오차 독립성(자기상관)
plot(fit)이 출력하는 네 그림은 각각 다른 가정을 검토한다. 첫째 잔차 대 적합값 그림에서 점들이 0을 중심으로 무작위로 흩어져 있으면 선형성과 등분산성이 만족되고, 깔때기 모양으로 퍼지면 등분산성이 깨진 것이다. 둘째 정규 Q-Q 그림에서 점들이 대각선을 따라 놓이면 정규성 가정이 타당하다. 셋째 척도-위치 그림은 등분산성을 다시 확인하며, 넷째 잔차 대 지렛대 그림은 쿡의 거리로 영향관측치를 찾는다. 수치 검정으로는 샤피로-윌크 검정의 p-값이 0.05보다 크면 정규성을 기각하지 않고, ncvTest의 p-값이 크면 등분산 가정을 유지한다. 더빈-왓슨 통계량이 2 부근이면 자기상관이 없다고 본다. 가정이 위배되면 변수 변환이나 가중최소제곱 등 후속 조치가 필요함을 해석에 덧붙인다.
5장 5번 — 변수선택과 모형선택 기준 (5점)
5장은 여러 후보 설명변수 가운데 적절한 부분집합을 고르는 변수선택을 다룬다. 문항은 단계적 선택을 수행하고 AIC 또는 수정결정계수, Cp 같은 기준으로 최종 모형을 정당화하도록 한다.
big <- lm(y ~ x1 + x2 + I(x1 * x2), data = df)
# 단계적 선택 (AIC 기준)
step_fit <- step(big, direction = "both")
summary(step_fit)
# 모든 가능한 회귀와 Cp, adjR2 비교
library(leaps)
all_sub <- regsubsets(y ~ x1 + x2 + I(x1 * x2), data = df)
summary(all_sub)$cp
summary(all_sub)$adjr2
step()은 AIC를 줄이는 방향으로 변수를 더하거나 빼며, 출력의 매 단계에서 AIC가 가장 낮아지는 선택을 보여 준다. AIC는 모형 적합도와 복잡도(모수 개수)의 절충을 수치화한 값으로, 작을수록 좋다. regsubsets()로 모든 가능한 부분모형을 비교할 때는 맬로스의 Cp가 설명변수 개수 p에 가까운 모형, 그리고 수정결정계수가 최대가 되는 모형을 우선 후보로 본다. 변수선택의 결론을 쓸 때는 통계 기준만이 아니라 해석 가능성과 자료 수집 비용까지 함께 고려해야 한다는 실무적 시각을 제시하는 것이 좋다. 또한 단계적 방법이 항상 전역 최적 모형을 보장하지는 않는다는 한계도 명시한다.
6장 4번 — 다중공선성 진단과 능형회귀 (5점)
6장은 설명변수들끼리 강하게 상관되어 추정이 불안정해지는 다중공선성 문제를 다룬다. 문항은 분산팽창계수로 공선성을 진단하고 능형회귀(릿지)로 완화하는 절차를 요구한다.
library(car)
fit <- lm(y ~ x1 + x2, data = df)
vif(fit) # 분산팽창계수
# 능형회귀
library(MASS)
ridge <- lm.ridge(y ~ x1 + x2, data = df,
lambda = seq(0, 5, 0.1))
plot(ridge) # 능형추적
select(ridge) # 최적 람다 선택
분산팽창계수 VIF는 한 설명변수를 나머지 설명변수로 회귀했을 때의 결정계수로부터 계산되며, 통상 10을 넘으면 심각한 다중공선성으로 본다. VIF가 크면 회귀계수의 표준오차가 부풀려져 부호가 뒤집히거나 유의하지 않게 나타날 수 있다. 능형회귀는 추정식에 벌점항을 더해 계수를 0 쪽으로 약간 수축시키며, 약간의 편향을 감수하는 대신 분산을 크게 줄여 전체 평균제곱오차를 낮춘다. lm.ridge()의 능형추적 그림에서 계수가 안정되기 시작하는 람다를 고르고, select()가 제시하는 GCV 최소 람다를 참고해 최종값을 정한다. 해석에서는 공선성이 예측 자체보다 개별 계수의 해석을 어렵게 만든다는 점을 분명히 한다.
7장 4번 — 가변수와 이상치·영향관측치 처리 (5점)
7장은 범주형 설명변수를 모형에 넣는 가변수 기법과, 적합에 과도한 영향을 주는 이상치·영향관측치의 식별을 다룬다. 문항은 집단을 구분하는 가변수를 만들어 회귀에 투입하고, 영향관측치를 진단하도록 한다.
df$group <- factor(c("A","A","A","B","B","A","B","B","A","B"))
fit_d <- lm(y ~ x1 + group, data = df) # 범주형은 가변수로 변환됨
summary(fit_d)
# 영향관측치 진단
cooks.distance(fit_d) # 쿡의 거리
hatvalues(fit_d) # 지렛대값
influence.measures(fit_d) # 종합 진단표
R은 factor로 지정된 변수를 회귀에 넣으면 기준 범주를 제외한 가변수를 자동으로 만든다. 가변수 계수는 기준 집단 대비 해당 집단의 평균 반응 차이를 뜻하므로, group의 계수가 양수이고 유의하면 B 집단의 반응 수준이 A 집단보다 높다고 해석한다. 영향관측치 진단에서 쿡의 거리가 1을 넘거나 다른 점들에 비해 두드러지게 크면 그 관측치는 회귀선을 크게 흔드는 영향점이다. 지렛대값은 설명변수 공간에서 극단에 있는 점을 가려내며, 표준화잔차가 크면서 지렛대도 높은 점이 가장 주의해야 할 관측치다. 이런 점을 발견하면 단순 삭제보다 입력 오류 여부를 먼저 점검하고, 모형 적합에 미치는 영향을 포함·제외 양쪽으로 비교해 보고하는 것이 바람직하다.
8장 1번 — 로지스틱 회귀모형의 적합과 오즈비 해석 (6점)
8장은 반응변수가 0과 1의 이분형일 때 적용하는 로지스틱 회귀모형으로, 선형회귀의 확장이자 일반화선형모형의 대표 사례다. 6점 문항은 로지스틱 모형을 적합하고 회귀계수를 오즈비로 변환해 해석하며 적합도를 평가하도록 요구한다.
logi <- data.frame(
pass = c(0,0,0,1,0,1,1,1,1,1),
hour = c(1,2,2,3,3,4,5,5,6,7)
)
g <- glm(pass ~ hour, data = logi, family = binomial)
summary(g)
exp(coef(g)) # 오즈비
exp(confint(g)) # 오즈비 신뢰구간
predict(g, newdata = data.frame(hour = 4),
type = "response") # 성공 확률 추정
로지스틱 회귀는 성공 확률 p에 로짓 변환 log(p/(1-p))를 적용해 설명변수의 선형식으로 모형화한다. summary()의 계수는 로짓 척도에 있어 직접 해석이 어려우므로 exp(coef(g))로 지수변환하여 오즈비로 읽는다. hour의 오즈비가 2라면 학습시간이 1단위 늘 때 합격의 오즈가 2배가 된다는 뜻이다. 오즈비 신뢰구간이 1을 포함하지 않으면 그 효과가 통계적으로 유의하다. 모형 유의성은 잔차이탈도(residual deviance)와 영이탈도(null deviance)의 차이를 카이제곱 검정으로 보거나, 계수의 z-검정 p-값으로 판단한다. type = "response"로 구한 예측값은 0과 1 사이의 확률로 나오며, 선형회귀처럼 범위를 벗어나지 않는 것이 로짓 연결함수의 장점이다. 끝으로 적합도는 호스머-렘쇼 검정 등으로 보완 평가할 수 있음을 언급해 8장 학습을 마무리한다.
마무리 — 8개 문항을 하나의 분석 흐름으로
이상에서 1장의 상관·산점도부터 8장의 로지스틱 회귀까지 여덟 문항을 R 코드와 함께 정리하였다. 정리하고 보면 이 문항들은 서로 떨어진 퍼즐이 아니라 하나의 모형 구축 절차를 따라 배열되어 있다. 두 변수 관계를 확인하고(1장), 단순·중회귀로 모형을 세우며(2~3장), 잔차로 가정을 진단하고(4장), 변수선택으로 모형을 다듬은 뒤(5장), 공선성을 점검·완화하고(6장), 범주형 변수와 영향점을 처리하며(7장), 반응이 이분형이면 로지스틱으로 확장한다(8장). 방통대 회귀모형 과제를 준비하는 학습자는 각 summary() 출력에서 추정값, 표준오차, t 또는 z-값, p-값, 결정계수를 순서대로 읽는 습관을 들이면 어떤 데이터가 와도 일관되게 해석할 수 있다. 본 보고서의 코드 틀에 교재 본문의 실제 자료를 대입하면 동일한 절차로 답안을 완성할 수 있을 것이다.
참고문헌
- 김성수·강명욱·강위창, 『회귀모형』, KNOU PRESS, 2024.
- R Core Team, "The R Stats Package: lm, glm, anova," R Documentation, https://stat.ethz.ch/R-manual/
'방송통신대학교' 카테고리의 다른 글
| 한국방송통신대학교 환경과건강 기말과제 — 대기·실내공기·물·기후로 본 환경성 건강위해 네 가지 (2) | 2026.06.08 |
|---|---|
| 한국방송통신대학교 형법총론 기말과제 — 부진정 부작위범·원인에 있어서 자유로운 행위·간접정범 (2) | 2026.06.08 |
| 한국방송통신대학교 헌법의 기초 기말과제 — 불건전표현금지법으로 본 명확성·포괄위임·과잉금지 원칙과 위헌심판 (0) | 2026.06.08 |
| 한국방송통신대학교 형사소송법 기말과제 — 불기소처분 불복·자백배제법칙·즉결심판절차 (0) | 2026.06.08 |
| 한국방송통신대학교 환경보건역학 기말과제 — 대기·폐기물·직업 역학연구 3편의 비판적 평가 (0) | 2026.06.07 |