다이어트 프로그램 참가자들의 체중을 프로그램 시작 전, 3주 후, 6주 후에 측정했다고 하자.
| 참가자 | 시작 전 | 3주 후 | 6주 후 |
|---|---|---|---|
| A | 80kg | 78kg | 75kg |
| B | 85kg | 83kg | 80kg |
| C | 72kg | 71kg | 69kg |
| … | … | … | … |
세 시점의 평균을 비교하면 체중이 감소하는 경향을 확인할 수 있다. 그러나 이 자료에는 일반적인 독립집단 자료와 다른 특징이 있다.
한 참가자의 시작 전 체중과 3주 후 체중은 서로 관련되어 있다. 시작 전 체중이 높은 사람은 이후에도 상대적으로 높은 체중을 보일 가능성이 크기 때문이다.
따라서 세 시점의 측정값을 서로 다른 사람에게서 얻은 독립적인 자료처럼 분석해서는 안 된다.
이처럼 같은 사람을 여러 시점 또는 여러 조건에서 반복적으로 측정한 자료의 평균변화를 분석하는 대표적인 방법이 반복측정분산분석이다.
반복측정분산분석은 단순히 여러 평균을 비교하는 방법이 아니다.
사람마다 다른 출발점에 의한 변동을 분리하고, 동일한 사람이 시간이나 조건에 따라 어떻게 변했는지를 평가하는 방법이다.
다만 반복측정분산분석을 사용했다고 변화의 원인이 개입이라고 자동으로 입증되는 것은 아니다. 구형성, 결측자료, 순서효과와 연구설계를 함께 검토해야 한다(Mauchly, 1940; Keselman et al., 2001; Gueorguieva & Krystal, 2004).
반복측정은 무엇인가
반복측정은 동일한 분석대상에게서 결과를 두 번 이상 측정하는 연구설계를 말한다.
대표적인 사례는 다음과 같다.
- 다이어트 프로그램 시작 전, 3주 후, 6주 후 체중 측정
- 집중력 훈련 전, 직후, 2주 후 점수 측정
- 신약 복용 전, 1주 후, 1개월 후 혈압 측정
- 같은 소비자가 세 가지 광고를 모두 평가
- 같은 환자가 세 가지 자극 조건을 모두 경험
- 같은 학생이 조용한 환경과 소음 환경에서 과제를 수행
반복측정은 반드시 시간의 흐름만을 의미하지 않는다.
| 반복요인 | 사례 |
|---|---|
| 시간 | 치료 전, 치료 후, 추적관찰 |
| 조건 | 조용함, 음악, 소음 |
| 자극 | 광고 A, 광고 B, 광고 C |
| 과제 | 기억 과제, 판단 과제, 주의 과제 |
| 부위 | 왼손, 오른손 또는 여러 신체 부위 |
시간에 따른 변화를 분석할 수도 있고, 동일한 사람이 서로 다른 실험조건에서 보인 반응을 비교할 수도 있다.
핵심은 동일한 참가자가 여러 개의 결과값을 제공한다는 것이다.
반복측정분산분석은 어떤 질문에 답하는가
다이어트 프로그램의 체중을 세 시점에서 측정했다면 반복측정분산분석은 다음 귀무가설을 검정한다.
\[
H_0:\mu_1=\mu_2=\mu_3
\]
즉, 시작 전, 3주 후와 6주 후의 모집단 평균체중이 모두 같다는 가설이다.
분석결과가 유의하면 다음처럼 해석할 수 있다.
세 측정시점 가운데 적어도 한 시점의 평균체중이 다른 시점과 다르다는 통계적 근거가 나타났다.
그러나 전체 F검정만으로는 다음 내용을 알 수 없다.
- 시작 전과 3주 후가 다른가?
- 시작 전과 6주 후가 다른가?
- 3주 후와 6주 후가 다른가?
- 변화가 일정한 속도로 발생했는가?
- 초기에 변화가 크고 이후에는 둔화되었는가?
구체적인 시점 차이를 확인하려면 사후비교나 계획대비를 추가로 수행해야 한다.
개인차는 어떻게 처리되는가
반복측정분산분석의 기본 구조는 다음과 같이 표현할 수 있다.
\[
Y_{ij}=\mu+\tau_j+s_i+\varepsilon_{ij}
\]
각 항은 다음을 의미한다.
- \(Y_{ij}\): 참가자 \(i\)의 시점 \(j\) 측정값
- \(\mu\): 전체 평균
- \(\tau_j\): 시점 또는 조건의 효과
- \(s_i\): 참가자별 차이
- \(\varepsilon_{ij}\): 남은 오차
어떤 참가자는 처음부터 체중이 높고, 다른 참가자는 낮을 수 있다. 반복측정분산분석은 이러한 참가자 간 차이를 별도의 변동으로 분리한다.
따라서 사람마다 다른 출발점이 모두 오차에 섞이는 것을 줄이고, 같은 사람 안에서 발생한 변화에 더 집중할 수 있다.
이를 흔히 “개인차를 통제한다”고 표현한다. 하지만 개인차가 완전히 제거되는 것은 아니다. 참가자 간 차이에 의한 변동을 분석모형에서 별도의 성분으로 분리한다는 의미다.
일반 분산분석과 무엇이 다른가
| 구분 | 일반 일원분산분석 | 반복측정분산분석 |
|---|---|---|
| 측정대상 | 집단마다 다른 사람 | 같은 사람을 반복 측정 |
| 관측값 관계 | 서로 독립 | 개인 안에서 서로 상관됨 |
| 개인차 | 오차에 포함 | 참가자 효과로 분리 |
| 주요 목적 | 독립된 집단 평균 비교 | 시간·조건에 따른 변화 비교 |
| 대표 사례 | 세 치료집단 비교 | 한 집단의 치료 전·중·후 비교 |
| 주요 추가 가정 | 집단별 등분산성 | 구형성 |
| 결측자료 | 일부 사례만 제외 가능 | 전통적 분석은 완전자료에 민감 |
같은 환자의 치료 전, 치료 후, 추적관찰 결과를 일반 일원분산분석으로 처리하면 세 측정값 사이의 상관관계를 무시하게 된다.
반대로 서로 다른 세 집단의 결과를 반복측정분산분석으로 처리할 수도 없다. 같은 대상자가 반복해서 측정된 구조가 아니기 때문이다.
두 시점만 있다면 대응표본 t검정과 같다
치료 전과 치료 후처럼 측정시점이 두 개뿐이라면 대응표본 t검정을 사용할 수 있다.
각 참가자의 변화량을 다음과 같이 계산한다.
\[
D_i=Y_{i,\mathrm{후}}-Y_{i,\mathrm{전}}
\]
대응표본 t검정은 변화량의 평균이 0인지 검정한다.
\[
H_0:\mu_D=0
\]
두 시점 반복측정분산분석의 시간효과는 대응표본 t검정과 같은 귀무가설을 검정하며 다음 관계가 성립한다.
\[
F=t^2
\]
따라서 두 시점만 있는 단순한 연구에서는 대응표본 t검정이 더 간단하다.
반복측정분산분석은 세 개 이상의 시점이나 조건을 한 번에 비교할 때 특히 유용하다.
반복측정에 최소 세 시점이 필요한가
반복측정에는 반드시 3∼5개의 시점이 필요하다는 설명이 사용되기도 하지만 보편적인 기준은 아니다.
두 시점도 반복측정 설계다.
다만 측정시점이 두 개라면 변화량은 계산할 수 있어도 변화의 형태는 파악하기 어렵다.
| 연구질문 | 필요한 측정구조 |
|---|---|
| 개입 전후 차이가 있는가? | 두 시점 |
| 변화가 언제 나타나는가? | 세 시점 이상 |
| 효과가 유지되는가? | 사전, 사후, 추적시점 |
| 변화속도가 일정한가? | 여러 시점 |
| 선형 또는 곡선형 성장인가? | 충분한 다수 시점 |
시점 수가 많으면 변화과정을 자세히 볼 수 있지만 조사비용, 피로와 탈락률도 증가한다.
측정시점은 관행적인 숫자가 아니라 예상되는 변화과정과 연구목적을 기준으로 정해야 한다.
다이어트 프로그램 사례
36명의 참가자가 6주 동안 다이어트 프로그램에 참여했다고 하자.
| 시점 | 평균체중 | 표준편차 |
|---|---|---|
| 시작 전 | 80.2kg | 7.4kg |
| 3주 후 | 77.8kg | 7.1kg |
| 6주 후 | 75.5kg | 7.0kg |
시작 전부터 3주 후까지의 평균변화는 다음과 같다.
\[
77.8-80.2=-2.4
\]
3주 후부터 6주 후까지의 변화는 다음과 같다.
\[
75.5-77.8=-2.3
\]
시작 전부터 6주 후까지는 평균 4.7kg 감소했다.
\[
75.5-80.2=-4.7
\]
반복측정분산분석은 세 시점 평균이 모두 같다는 가설을 먼저 검정한다.
시간효과가 유의하다면 어느 구간에서 차이가 발생했는지 사후비교를 통해 확인할 수 있다.
하지만 이 연구에 비교집단이 없다면 체중감소가 다이어트 프로그램 때문에 발생했다고 단정하기 어렵다.
다음 요인도 체중에 영향을 줄 수 있기 때문이다.
- 계절 변화
- 자연적인 체중변동
- 별도의 운동이나 식이조절
- 연구에 참여했다는 사실로 인한 행동변화
- 측정장비나 측정조건의 변화
- 평균으로의 회귀
한 집단의 반복측정은 시간에 따른 변화를 보여주지만 개입의 인과효과까지 자동으로 입증하지는 않는다.
두 프로그램을 비교할 때 중요한 것은 상호작용이다
다이어트 프로그램 A와 B를 비교한다고 하자.
두 집단 모두에서 시작 전, 3주 후와 6주 후 체중을 측정한다.
이 설계에는 두 요인이 있다.
- 집단: 프로그램 A와 B
- 시간: 시작 전, 3주 후, 6주 후
이를 혼합설계 반복측정분산분석이라고 한다.
분석에서는 다음 세 효과를 확인한다.
| 효과 | 질문 |
|---|---|
| 집단 주효과 | 모든 시점을 평균했을 때 A와 B의 평균체중이 다른가? |
| 시간 주효과 | 두 집단을 평균했을 때 시간에 따라 체중이 변하는가? |
| 집단×시간 상호작용 | 시간에 따른 변화양상이 프로그램마다 다른가? |
다음과 같은 결과가 관찰되었다고 하자.
| 프로그램 | 시작 전 | 3주 후 | 6주 후 |
|---|---|---|---|
| A | 80kg | 77kg | 74kg |
| B | 80kg | 79kg | 78kg |
두 집단 모두 체중이 줄었다. 따라서 시간 주효과가 나타날 수 있다.
그러나 A는 6kg, B는 2kg 감소했다.
\[
(74-80)-(78-80)=-4
\]
두 집단의 변화량이 4kg 다르므로 집단×시간 상호작용이 나타날 수 있다.
프로그램의 상대적인 효과를 평가하려면 단순한 시간 주효과보다 집단×시간 상호작용이 더 중요할 수 있다.
시간효과와 상호작용은 다른 질문이다
다음 두 문장은 서로 다른 의미를 가진다.
전체적으로 시간이 지나면서 체중이 감소했다.
프로그램 A의 체중감소가 프로그램 B보다 컸다.
첫 번째는 시간 주효과와 관련된다.
두 번째는 집단×시간 상호작용과 관련된다.
프로그램 A에서는 전후 차이가 유의하고 프로그램 B에서는 유의하지 않았다는 사실만으로 두 프로그램의 변화량이 다르다고 결론 내릴 수는 없다.
한쪽은 유의하고 다른 쪽은 유의하지 않다는 사실이 두 효과의 차이가 유의하다는 뜻은 아니기 때문이다.
두 프로그램의 변화가 다른지를 판단하려면 집단×시간 상호작용을 직접 검정해야 한다.
구형성은 무엇인가
구형성은 반복측정분산분석의 핵심 가정이다.
세 시점 \(Y_1\), \(Y_2\), \(Y_3\)가 있다면 각 시점 쌍의 차이값을 만들 수 있다.
- \(Y_1-Y_2\)
- \(Y_1-Y_3\)
- \(Y_2-Y_3\)
구형성은 이 차이값들의 분산이 서로 같다는 조건이다.
\[
V(Y_1-Y_2)
=
V(Y_1-Y_3)
=
V(Y_2-Y_3)
\]
구형성은 단순히 “모든 시점의 분산이 같다”는 뜻이 아니다.
또한 모든 시점 사이의 상관계수가 같다는 조건과도 정확히 동일하지 않다.
모든 시점의 분산이 같고 모든 시점 쌍의 공분산도 같은 복합대칭 구조는 구형성을 만족시키지만, 구형성보다 더 강한 조건이다(Keselman et al., 2001).
두 시점에서는 구형성이 자동으로 성립한다
반복수준이 두 개라면 차이값이 하나뿐이다.
비교해야 할 여러 차이분산이 없으므로 구형성은 자동으로 성립한다.
따라서 다음 설계에서는 Mauchly 구형성 검정이 필요하지 않다.
- 치료 전과 치료 후
- 조건 A와 조건 B
- 왼손과 오른손
구형성은 반복요인의 수준이 세 개 이상일 때 검토한다.
Mauchly 검정은 어떻게 해석하는가
Mauchly 검정의 귀무가설은 구형성이 성립한다는 것이다(Mauchly, 1940).
| 검정결과 | 일반적인 해석 |
|---|---|
| p값이 기준보다 큼 | 구형성 위반을 발견할 근거가 부족함 |
| p값이 기준보다 작음 | 구형성 위반에 대한 근거가 있음 |
하지만 Mauchly 검정의 p값만으로 구형성 여부를 단정해서는 안 된다.
작은 표본에서는 실제 위반이 있어도 발견하지 못할 수 있다. 반대로 큰 표본에서는 사소한 차이도 유의하게 나타날 수 있다.
다음 정보를 함께 확인하는 것이 좋다.
- Mauchly 검정
- Greenhouse–Geisser 엡실론
- Huynh–Feldt 엡실론
- 반복수준 수
- 표본크기
- 보정 전후 결과
- 공분산 구조
- 혼합효과모형의 대안 결과
구형성이 위반되면 어떻게 보정하는가
구형성이 깨지면 일반적인 F검정의 1종 오류가 실제보다 커질 수 있다.
이를 보완하기 위해 자유도에 엡실론을 곱한다.
반복수준이 \(k\)개일 때 엡실론의 범위는 다음과 같다.
\[
\frac{1}{k-1}\leq\epsilon\leq1
\]
엡실론이 1에 가까우면 구형성 위반이 작다.
값이 작을수록 위반이 크고 자유도 보정도 강해진다.
대표적인 보정은 다음과 같다.
| 보정방법 | 특징 |
|---|---|
| Greenhouse–Geisser | 비교적 보수적 |
| Huynh–Feldt | 상대적으로 덜 보수적 |
| Lower-bound | 가장 강한 보정 |
Greenhouse–Geisser 보정은 표본에서 추정한 엡실론을 자유도에 적용한다(Greenhouse & Geisser, 1959).
Huynh–Feldt 보정은 Greenhouse–Geisser 추정치의 편향을 보완하려는 방법이다(Huynh & Feldt, 1976).
구형성 보정은 평균이나 원자료를 바꾸지 않는다. 주로 자유도와 이에 따른 p값을 조정한다.
정규성은 어디에서 확인해야 하는가
반복측정분산분석에서는 각 시점의 원자료가 완벽한 정규분포여야 한다고 단순하게 해석해서는 안 된다.
분석모형에서 시간효과와 참가자 차이를 반영한 뒤 남은 잔차와 시점 간 차이값의 분포가 중요하다.
다음 상황에서는 특히 주의해야 한다.
- 표본이 작다.
- 분포가 한쪽으로 심하게 치우쳐 있다.
- 극단값이 존재한다.
- 바닥효과나 천장효과가 크다.
- 시점별 분산이 크게 다르다.
- 결과가 이항형이나 개수형이다.
균형적인 설계와 충분한 표본에서는 ANOVA가 중간 정도의 비정규성에 비교적 강건할 수 있다. 그러나 작은 표본, 심한 왜도, 극단값과 구형성 위반이 함께 나타나면 결과가 불안정해질 수 있다(Blanca et al., 2017).
결과변수의 형태에 따라 다음 방법을 고려할 수 있다.
| 결과변수 | 고려할 분석 |
|---|---|
| 연속형 | 반복측정 ANOVA, 선형혼합모형 |
| 예·아니오 | 혼합효과 로지스틱 회귀 |
| 사건 횟수 | 포아송·음이항 혼합모형 |
| 순서형 점수 | 순서형 혼합모형 |
| 심하게 치우친 양수자료 | 감마 혼합모형 또는 적절한 변환 |
순서효과와 이월효과도 중요하다
같은 참가자가 여러 실험조건을 경험하면 앞선 조건이 뒤의 조건에 영향을 줄 수 있다.
예를 들어 한 사람이 세 종류의 음료를 마신 뒤 각성도를 평가한다고 하자. 카페인이 포함된 음료를 먼저 마셨다면 그 효과가 다음 조건까지 남을 수 있다.
반복측정에서 발생할 수 있는 효과는 다음과 같다.
- 연습효과
- 학습효과
- 피로효과
- 기억효과
- 기대효과
- 이월효과
시간의 흐름 자체가 연구대상인 종단연구에서는 측정순서를 바꿀 수 없다.
그러나 여러 실험조건을 반복하는 연구에서는 다음 설계를 사용할 수 있다.
- 조건 순서 무작위화
- 완전 역균형
- 라틴 방격
- 조건 사이 세척기간
- 순서를 공변량으로 포함
순서효과가 실험조건과 완전히 겹쳐 있다면 분석단계에서 두 효과를 분리하기 어렵다. 따라서 설계단계의 관리가 중요하다.
측정 간격이 다르면 반복측정 ANOVA를 사용할 수 없는가
시작 전, 1주 후와 3개월 후처럼 간격이 불균형해도 시간을 범주형 변수로 처리하면 세 시점의 평균을 비교할 수 있다.
따라서 측정 간격이 같지 않다는 이유만으로 반복측정 ANOVA가 불가능한 것은 아니다.
그러나 다음과 같은 질문에는 한계가 있다.
- 주당 평균변화량은 얼마인가?
- 변화속도가 일정한가?
- 초기에 빠르게 변하고 이후 둔화되는가?
- 개인별 변화기울기가 다른가?
시간을 범주형으로 처리하면 0주, 1주와 12주가 단순히 세 범주로 사용된다. 시점 사이의 실제 거리는 모형에 직접 반영되지 않는다.
실제 시간간격을 이용해 변화속도나 성장곡선을 추정하려면 선형혼합효과모형이나 성장곡선모형이 더 적절할 수 있다(Laird & Ware, 1982).
결측자료는 반복측정분산분석의 중요한 한계다
종단연구에서는 시간이 지날수록 참가자 이탈과 방문누락이 증가하기 쉽다.
| 시점 | 측정완료 인원 |
|---|---|
| 시작 전 | 100명 |
| 3주 후 | 92명 |
| 6주 후 | 81명 |
전통적인 반복측정분산분석은 모든 시점의 결과가 있는 참가자만 사용하는 경우가 많다.
한 시점이라도 결측이면 해당 참가자 전체가 분석에서 빠질 수 있다.
그 결과 다음 문제가 생긴다.
- 표본 수 감소
- 검정력 저하
- 완전자료 참가자만 남는 선택편향
- 집단 간 비교가능성 약화
단순 평균대체는 분산과 불확실성을 과소평가한다.
마지막 관측값 유지법은 탈락 이후 결과가 변하지 않았다는 강한 가정을 사용한다.
선형혼합효과모형은 적절한 모형과 MAR 가정 아래에서 일부 시점이 누락된 참가자의 관찰자료도 활용할 수 있다(Gueorguieva & Krystal, 2004; Krueger & Tian, 2004).
그러나 혼합모형도 결측을 자동으로 해결하지는 않는다.
상태가 악화된 참가자가 주로 연구에서 빠지는 것처럼 결측이 관찰되지 않은 결과와 직접 관련된 MNAR 상황에서는 별도의 민감도 분석이 필요하다(National Research Council, 2010; Little & Rubin, 2019).
반복측정 ANOVA와 혼합효과모형 비교
| 구분 | 반복측정분산분석 | 선형혼합효과모형 |
|---|---|---|
| 완전자료 | 적합 | 적합 |
| 일부 시점 결측 | 제한적 | 비교적 유연 |
| 측정 간격 | 범주형 비교에 적합 | 실제 시간 사용 가능 |
| 공분산 구조 | 구형성과 보정 | 여러 구조를 지정 가능 |
| 개인별 출발점 | 참가자 효과로 분리 | 랜덤절편으로 모형화 |
| 개인별 변화속도 | 제한적 | 랜덤기울기 가능 |
| 시점별 표본 수 | 동일한 경우에 편리 | 서로 달라도 분석 가능 |
| 시간가변 공변량 | 제한적 | 비교적 유연 |
| 분석 난이도 | 상대적으로 단순 | 모형설정과 진단이 복잡 |
선형혼합모형은 참가자별 출발점을 다르게 설정할 수 있다.
\[
Y_{ij}=\beta_0+\beta_1T_{ij}+b_{0i}+\varepsilon_{ij}
\]
참가자마다 변화속도도 다르게 허용할 수 있다.
\[
Y_{ij}
=
\beta_0+\beta_1T_{ij}
+b_{0i}+b_{1i}T_{ij}
+\varepsilon_{ij}
\]
여기서 \(b_{0i}\)는 참가자별 출발점 차이이고, \(b_{1i}\)는 참가자별 변화기울기 차이다.
혼합효과모형이 항상 더 정확한 것은 아니다. 표본과 측정횟수에 비해 지나치게 복잡한 랜덤효과 구조를 사용하면 수렴문제나 불안정한 추정이 발생할 수 있다(Muhammad, 2023).
Friedman 검정은 언제 사용하는가
Friedman 검정은 같은 참가자의 여러 조건을 비교하는 순위기반 비모수 검정이다.
다음과 같은 상황에서 고려할 수 있다.
- 결과가 순서형이다.
- 표본이 작다.
- 극단값의 영향이 매우 크다.
- 정규성 가정을 적용하기 어렵다.
- 한 집단의 여러 조건을 비교한다.
그러나 Friedman 검정도 모든 문제를 해결하지는 않는다.
- 참가자 간 독립성이 필요하다.
- 완전한 반복자료를 요구하는 경우가 많다.
- 평균차이를 직접 추정하지 않는다.
- 집단×시간 상호작용을 일반적으로 검정하지 않는다.
- 공변량을 포함하기 어렵다.
- 결측자료에 유연하지 않다.
정규성 검정이 유의했다는 이유만으로 자동으로 Friedman 검정으로 바꾸기보다 결과척도, 이상치, 표본크기와 연구질문을 함께 고려해야 한다.
전체 시간효과 이후에는 사후비교가 필요하다
세 시점의 전체 시간효과가 유의하더라도 어느 시점 사이에 차이가 있는지는 알 수 없다.
가능한 비교는 다음과 같다.
- 시작 전과 3주 후
- 시작 전과 6주 후
- 3주 후와 6주 후
여러 비교를 반복하면 1종 오류가 증가하므로 다음과 같은 조정방법을 사용할 수 있다.
- Holm 보정
- Bonferroni 보정
- Tukey 방식
- 사전에 정한 계획대비
연구가 시작되기 전에 중요한 비교를 정할 수 있다면 계획대비가 유용하다.
예를 들어 다음 가설을 사전에 정할 수 있다.
- 시작 전과 두 사후시점의 평균이 다른가?
- 3주 후에서 6주 후까지 추가변화가 있는가?
- 시간에 따라 선형적으로 감소하는가?
- 초기 감소 후 변화가 둔화되는가?
모든 시점을 무차별적으로 비교하는 것보다 연구질문에 맞는 대비를 미리 설정하는 편이 해석하기 쉽다.
p값과 함께 효과크기를 보고해야 한다
반복측정분산분석에서도 p값만으로 변화의 중요성을 판단해서는 안 된다.
표본이 크면 작은 변화도 유의할 수 있고, 표본이 작으면 중요한 변화도 발견하지 못할 수 있다.
부분 에타제곱은 자주 사용되는 효과크기다.
\[
\eta_p^2
=
\frac{SS_{\text{시간}}}
{SS_{\text{시간}}+SS_{\text{오차}}}
\]
반복측정설계에서는 일반화 에타제곱도 고려할 수 있다.
일반화 에타제곱은 개인차에 의한 변동을 포함해 서로 다른 연구설계 사이의 비교가능성을 높이려는 지표다(Bakeman, 2005; Lakens, 2013).
효과크기와 함께 다음 정보를 제시하는 것이 좋다.
- 시점별 평균과 표준편차
- 평균변화량
- 평균차이의 신뢰구간
- F값과 자유도
- 구형성 보정방법
- p값
- 부분 또는 일반화 에타제곱
- 연구분야에서의 실질적 의미
체중이 평균 4.7kg 감소했다는 정보는 표준화된 효과크기만 제시하는 것보다 직접적으로 이해하기 쉽다.
반복측정 자료는 개인별 궤적을 그려야 한다
시점별 평균 막대그래프만 제시하면 개인별 변화가 가려진다.
평균체중은 감소했지만 일부 참가자는 체중이 증가했을 수 있다.
반복측정자료에서는 다음 시각화가 유용하다.
- 참가자별 선 그래프
- 평균과 신뢰구간을 표시한 변화그래프
- 시점별 원자료 점
- 변화량 분포
- 집단별 평균 변화곡선
- 개인별 시작점과 변화기울기
참가자별 선을 표시한 그래프를 흔히 스파게티 그림이라고 한다.
이 그래프를 통해 다음 패턴을 확인할 수 있다.
- 대부분이 비슷하게 감소한다.
- 일부만 크게 감소한다.
- 일부는 감소하고 일부는 증가한다.
- 초기에 감소한 뒤 다시 증가한다.
- 한두 명의 극단적인 변화가 평균을 주도한다.
반복측정분산분석은 평균변화를 검정한다. 모든 참가자가 동일하게 변했다는 뜻은 아니다.
R로 반복측정 자료 만들기
36명의 체중을 세 시점에서 측정한 가상자료를 생성해 보자.
set.seed(2026)
participant_count <- 36L
participant_effect <- rnorm(
participant_count,
mean = 0,
sd = 4
)
wide_data <- data.frame(
participant = factor(
seq_len(
participant_count
)
),
T1 = 80.0 +
participant_effect +
rnorm(
participant_count,
mean = 0,
sd = 1.5
),
T2 = 77.5 +
participant_effect +
rnorm(
participant_count,
mean = 0,
sd = 1.5
),
T3 = 75.2 +
participant_effect +
rnorm(
participant_count,
mean = 0,
sd = 1.5
)
)
head(
wide_data
)R이 자료는 한 행이 한 참가자이고 각 측정시점이 별도 열로 저장된 넓은 형식이다.
R에서 긴 형식으로 변환하기
반복측정분석과 시각화에서는 긴 형식이 편리하다.
# 최초 한 번만 실행
# install.packages(c("tidyr", "dplyr"))
library(tidyr)
library(dplyr)
long_data <- wide_data |>
pivot_longer(
cols = c(
T1,
T2,
T3
),
names_to = "time",
values_to = "weight"
)
long_data$time <- factor(
long_data$time,
levels = c(
"T1",
"T2",
"T3"
),
labels = c(
"시작 전",
"3주 후",
"6주 후"
)
)
head(
long_data
)R긴 형식에서는 같은 참가자가 세 개의 행을 갖는다.
| participant | time | weight |
|---|---|---|
| 1 | 시작 전 | 81.2 |
| 1 | 3주 후 | 78.9 |
| 1 | 6주 후 | 76.3 |
세 행이 서로 다른 사람을 의미하지 않는다는 사실을 분석모형에 알려줘야 한다.
시점별 기술통계 계산하기
time_summary <- long_data |>
group_by(
time
) |>
summarise(
n = n(),
mean = mean(
weight
),
sd = sd(
weight
),
se = sd /
sqrt(n),
.groups = "drop"
)
time_summaryR결측이 있는 실제 자료에서는 각 시점의 관측 수뿐 아니라 모든 시점에 응답한 참가자 수를 별도로 확인해야 한다.
complete_participants <- wide_data |>
filter(
complete.cases(
T1,
T2,
T3
)
) |>
nrow()
complete_participantsR참가자별 변화 그리기
# 최초 한 번만 실행
# install.packages("ggplot2")
library(ggplot2)
ggplot(
long_data,
aes(
x = time,
y = weight,
group = participant
)
) +
geom_line(
alpha = 0.25
) +
geom_point(
alpha = 0.25
) +
stat_summary(
aes(
group = 1
),
fun = mean,
geom = "line",
linewidth = 1.2
) +
stat_summary(
aes(
group = 1
),
fun = mean,
geom = "point",
size = 3
) +
labs(
x = "측정시점",
y = "체중",
title = "참가자별 체중 변화"
)R얇은 선은 개인별 변화이고 굵은 선은 전체 평균변화를 보여준다.
기본 R로 반복측정분산분석 실행하기
참가자를 반복측정 오차구조에 포함한다.
rm_model <- aov(
weight ~
time +
Error(
participant /
time
),
data = long_data
)
summary(
rm_model
)R기본 aov()는 균형적이고 결측이 없는 단순한 반복측정 자료에 사용할 수 있다.
구형성 검정과 Greenhouse–Geisser 보정을 편리하게 확인하려면 전용 패키지를 사용하는 편이 좋다.
구형성 보정을 포함한 분석
afex 패키지를 사용할 수 있다.
# 최초 한 번만 실행
# install.packages(c("afex", "emmeans"))
library(afex)
library(emmeans)
rm_fit <- aov_ez(
id = "participant",
dv = "weight",
within = "time",
data = long_data,
anova_table = list(
correction = "GG",
es = "ges"
)
)
nice(
rm_fit,
correction = "GG",
es = "ges"
)RGG는 Greenhouse–Geisser 보정을, ges는 일반화 에타제곱을 의미한다.
Mauchly 검정과 엡실론을 확인하려면 다음처럼 출력할 수 있다.
summary(
rm_fit$Anova,
multivariate = FALSE
)R패키지 버전에 따라 출력형식은 조금 다를 수 있다.
다음 항목을 확인한다.
- Mauchly 구형성 검정
- Greenhouse–Geisser 엡실론
- Huynh–Feldt 엡실론
- 보정된 자유도
- 보정된 p값
- 효과크기
시점별 사후비교 실행하기
시점별 추정주변평균을 계산한다.
time_means <- emmeans(
rm_fit,
~ time
)
time_meansRHolm 보정을 적용해 시점들을 비교한다.
pairwise_time <- pairs(
time_means,
adjust = "holm"
)
summary(
pairwise_time,
infer = c(
TRUE,
TRUE
)
)R출력에서는 다음 정보를 확인한다.
- 평균차이
- 표준오차
- 자유도
- 신뢰구간
- 다중비교가 조정된 p값
계획된 대비 검정하기
시작 전과 두 사후시점 평균을 비교하고, 3주 후와 6주 후의 추가변화를 비교한다고 하자.
planned_contrast <- contrast(
time_means,
method = list(
before_vs_after = c(
-1,
0.5,
0.5
),
middle_vs_final = c(
0,
-1,
1
)
),
adjust = "holm"
)
summary(
planned_contrast,
infer = c(
TRUE,
TRUE
)
)R첫 번째 대비는 시작 전과 두 사후시점의 평균을 비교한다.
두 번째 대비는 3주 후와 6주 후를 비교한다.
대비계수의 방향에 따라 추정치의 부호가 달라지므로 보고서에서 비교방향을 명확히 밝혀야 한다.
혼합설계 반복측정분산분석
프로그램 A와 B를 비교하는 자료라면 집단과 시간의 상호작용을 포함한다.
mixed_fit <- aov_ez(
id = "participant",
dv = "weight",
between = "program",
within = "time",
data = mixed_data,
anova_table = list(
correction = "GG",
es = "ges"
)
)
nice(
mixed_fit,
correction = "GG",
es = "ges"
)R분산분석표에서 다음 항목을 확인한다.
programtimeprogram:time
프로그램별 시간변화를 확인하려면 다음과 같이 계산할 수 있다.
program_time_means <- emmeans(
mixed_fit,
~ time |
program
)
pairs(
program_time_means,
adjust = "holm"
)R각 시점에서 프로그램 차이를 확인하려면 다음과 같다.
time_program_means <- emmeans(
mixed_fit,
~ program |
time
)
pairs(
time_program_means,
adjust = "holm"
)R상호작용이 유의할 때는 전체 시간효과만 보고하지 말고 프로그램별 변화량과 신뢰구간을 함께 제시해야 한다.
선형혼합효과모형 사용하기
실제 측정주차를 수치형 변수로 만들 수 있다.
long_data$week <- c(
0,
3,
6
)[
match(
long_data$time,
levels(
long_data$time
)
)
]R필요한 패키지를 불러온다.
# 최초 한 번만 실행
# install.packages("lmerTest")
library(lmerTest)R참가자별 랜덤절편과 랜덤기울기를 포함한다.
mixed_model <- lmer(
weight ~
week +
(
week |
participant
),
data = long_data,
REML = TRUE
)
summary(
mixed_model
)
anova(
mixed_model
)R이 모형에서 week 계수는 평균적인 주당 체중변화를 나타낸다.
변화가 직선이 아닐 가능성이 있다면 이차항을 포함할 수 있다.
quadratic_model <- lmer(
weight ~
week +
I(
week^2
) +
(
week |
participant
),
data = long_data,
REML = TRUE
)
summary(
quadratic_model
)R측정시점이 세 개뿐이라면 복잡한 변화곡선과 랜덤효과를 안정적으로 추정하기 어려울 수 있다. 모형복잡성은 참가자 수와 반복측정 횟수에 맞춰야 한다.
결과는 어떻게 보고해야 할까
다음 문장만으로는 충분하지 않다.
반복측정분산분석 결과 시간에 따른 차이가 유의했다.
보다 좋은 보고는 다음과 같다.
참가자 36명의 체중을 프로그램 시작 전, 3주 후와 6주 후에 측정하였다. 시점별 평균체중은 각각 80.2kg, 77.8kg과 75.5kg이었다. Mauchly 검정 결과 구형성 위반이 확인되어 Greenhouse–Geisser 보정을 적용하였다. 보정된 반복측정분산분석에서 시간효과가 통계적으로 유의했으며, 보정된 F값과 자유도, p값 및 일반화 에타제곱을 보고하였다. Holm 보정을 적용한 사후비교에서 각 시점의 평균차이와 95% 신뢰구간을 제시하였다. 시작 전부터 6주 후까지의 평균체중 감소량은 4.7kg이었다.
두 집단을 비교했다면 다음처럼 보고할 수 있다.
프로그램과 시간의 상호작용이 통계적으로 유의했다. 프로그램 A의 시작 전 대비 6주 후 평균감소량은 6.0kg이었고 프로그램 B는 2.0kg이었다. 두 변화량의 차이는 4.0kg이었으며 95% 신뢰구간을 함께 제시하였다.
보고서에는 다음 정보가 포함되는 것이 좋다.
- 참가자 수와 집단별 인원
- 반복측정 시점과 실제 간격
- 시점별 분석 가능한 표본 수
- 평균과 표준편차
- 탈락과 결측 이유
- 사용한 분석모형
- Mauchly 검정
- Greenhouse–Geisser 또는 Huynh–Feldt 보정
- F값과 자유도
- p값
- 효과크기
- 사후비교와 조정방법
- 평균변화량과 신뢰구간
- 집단×시간 상호작용
- 모형가정과 민감도 분석
자주 발생하는 오류
같은 사람의 자료를 일반 일원분산분석으로 분석한다
반복측정값 사이의 상관을 무시한다.
시점마다 독립표본 t검정을 반복한다
같은 참가자의 측정값을 독립적인 자료처럼 처리하고 다중검정 문제까지 만든다.
시간효과가 유의하므로 프로그램이 효과적이라고 단정한다
비교집단이 없다면 자연경과와 다른 요인을 배제하기 어렵다.
Mauchly 검정이 비유의하면 구형성이 증명되었다고 생각한다
작은 표본에서는 실제 위반을 발견하지 못할 수 있다.
구형성이 위반되었는데 보정하지 않는다
자유도와 p값이 지나치게 낙관적으로 계산될 수 있다.
두 시점 자료에서도 구형성을 검정한다
두 수준에서는 구형성이 자동으로 성립한다.
사후비교를 보정 없이 반복한다
비교 횟수가 늘면서 1종 오류가 증가한다.
결측값을 평균으로 대체한다
분산과 불확실성이 과소평가될 수 있다.
마지막 관측값을 이후 시점에 그대로 사용한다
탈락 이후 결과가 변하지 않았다는 강한 가정을 사용한다.
측정 간격이 불균형하면 반복측정 ANOVA가 불가능하다고 생각한다
시점 평균비교는 가능하지만 변화속도를 해석하기에는 한계가 있다.
한 집단에서만 변화가 유의하면 집단×시간 상호작용이 있다고 생각한다
두 집단의 변화량 차이를 상호작용항으로 직접 검정해야 한다.
p값만 보고 변화의 중요성을 판단한다
평균변화량, 효과크기와 신뢰구간을 함께 확인해야 한다.
분석 전에 확인할 질문
- 동일한 사람을 반복해서 측정했는가?
- 반복요인은 시간인가, 실험조건인가?
- 서로 다른 참가자들은 독립적인가?
- 반복측정 수준은 몇 개인가?
- 측정 간격은 연구질문에 적절한가?
- 순서효과와 이월효과를 관리했는가?
- 각 시점의 결측률은 얼마인가?
- 탈락자가 완전응답자와 다른가?
- 결과변수는 연속형에 가까운가?
- 극단값이 평균변화를 주도하지 않는가?
- 잔차와 차이값의 분포는 어떠한가?
- 구형성 검토가 필요한 설계인가?
- Greenhouse–Geisser 보정이 필요한가?
- 어느 시점 간 비교가 연구의 핵심인가?
- 다중비교 조정방법을 정했는가?
- 집단×시간 상호작용이 주요 질문인가?
- 변화량과 신뢰구간을 보고할 것인가?
- 부분 에타제곱과 일반화 에타제곱을 구분했는가?
- 혼합효과모형이 더 적절한 자료구조는 아닌가?
- 시간변화를 인과효과로 과장하고 있지 않은가?
시간의 흐름은 평균 하나로 설명되지 않습니다
반복측정분산분석은 같은 사람에게서 반복해서 얻은 결과를 이용해 시간이나 조건에 따른 평균변화를 평가한다.
개인마다 다른 출발점을 분리하고 변화 자체에 집중할 수 있다는 장점이 있다.
비전공자는 다음 다섯 문장으로 기억할 수 있다.
같은 사람을 여러 번 측정했다면 결과값들은 서로 독립적이지 않다.
반복측정분산분석은 참가자 간 차이를 분리하고 시간이나 조건의 평균차이를 검정한다.
반복수준이 세 개 이상이면 구형성과 자유도 보정을 확인해야 한다.
시간효과가 유의하다고 개입의 인과효과가 자동으로 입증되는 것은 아니다.
결측, 불규칙한 시간간격과 개인별 변화가 중요하면 혼합효과모형을 고려한다.
사람의 변화는 하나의 평균선으로만 설명되지 않는다.
어떤 사람은 빠르게 반응하고, 어떤 사람은 늦게 변하며, 어떤 사람은 처음의 변화가 유지되지 않을 수 있다.
반복측정분산분석은 이러한 모든 차이를 완벽하게 설명하는 최종모형은 아니다. 하지만 같은 사람을 반복해서 관찰했다는 연구구조를 존중하면서 전체적인 변화가 존재하는지를 평가하는 중요한 출발점이다.
좋은 반복측정 연구는 “세 평균이 다른가?”에서 끝나지 않는다.
변화가 언제 나타났는지, 집단마다 변화가 다른지, 개인별 궤적은 얼마나 다양한지, 탈락한 사람들에게는 어떤 일이 있었는지를 함께 묻는다.
시간 속 데이터를 분석한다는 것은 단순히 숫자의 순서를 비교하는 일이 아니라 변화가 만들어진 과정을 이해하는 일이다.
참고문헌
Bakeman, R. (2005). Recommended effect size statistics for repeated measures designs. Behavior Research Methods, 37(3), 379–384. https://doi.org/10.3758/BF03192707
Blanca, M. J., Alarcón, R., Arnau, J., Bono, R., & Bendayan, R. (2017). Non-normal data: Is ANOVA still a valid option? Psicothema, 29(4), 552–557. https://doi.org/10.7334/psicothema2016.383
Greenhouse, S. W., & Geisser, S. (1959). On methods in the analysis of profile data. Psychometrika, 24, 95–112. https://doi.org/10.1007/BF02289823
Gueorguieva, R., & Krystal, J. H. (2004). Move over ANOVA: Progress in analyzing repeated-measures data and its reflection in papers published in the Archives of General Psychiatry. Archives of General Psychiatry, 61(3), 310–317. https://doi.org/10.1001/archpsyc.61.3.310
Huynh, H., & Feldt, L. S. (1976). Estimation of the Box correction for degrees of freedom from sample data in randomized block and split-plot designs. Journal of Educational Statistics, 1(1), 69–82. https://doi.org/10.3102/10769986001001069
Keselman, H. J., Algina, J., & Kowalchuk, R. K. (2001). The analysis of repeated measures designs: A review. British Journal of Mathematical and Statistical Psychology, 54(1), 1–20. https://doi.org/10.1348/000711001159357
Krueger, C., & Tian, L. (2004). A comparison of the general linear mixed model and repeated measures ANOVA using a dataset with multiple missing data points. Biological Research for Nursing, 6(2), 151–157. https://doi.org/10.1177/1099800404267682
Laird, N. M., & Ware, J. H. (1982). Random-effects models for longitudinal data. Biometrics, 38(4), 963–974. https://doi.org/10.2307/2529876
Lakens, D. (2013). Calculating and reporting effect sizes to facilitate cumulative science: A practical primer for t-tests and ANOVAs. Frontiers in Psychology, 4, 863. https://doi.org/10.3389/fpsyg.2013.00863
Little, R. J. A., & Rubin, D. B. (2019). Statistical analysis with missing data (3rd ed.). Wiley. https://doi.org/10.1002/9781119482260
Mauchly, J. W. (1940). Significance test for sphericity of a normal n-variate distribution. The Annals of Mathematical Statistics, 11(2), 204–209. https://doi.org/10.1214/aoms/1177731915
Muhammad, L. N. (2023). Guidelines for repeated measures statistical analysis approaches with basic science research considerations. Journal of Clinical Investigation, 133(11), e171058. https://doi.org/10.1172/JCI171058
National Research Council. (2010). The prevention and treatment of missing data in clinical trials. National Academies Press. https://doi.org/10.17226/12955








