[예] 어떤 약물에 대한 체내 배출연구에서 얻은 자료이다. 연구자는 약의 형태에 따라 체내로부터 배출되는 약물의 양이 달라지는지를 알고자 한다. 그런데 배출되는 약물의 양은 약의 형태뿐만 아니라 배출된 약물을 측정한 시간과 각 개체의 항신진대사 점수에도 영향을 받을 것으로 생각한다. 이러한 경우에는 측정시간과 항신진대사 점수를 2개의 공변량으로 하여 이들을 제어한 약의 형태에 대한 효과를 공분산분석을 통해 알 수 있다.
관측번호 |
약의형태(trt) |
항신진대사점수(x1) |
소요시간(x2) |
약물량(y) |
1 |
1 |
37 |
61 |
11.3208 |
2 |
2 |
37 |
37 |
12.9151 |
3 |
3 |
45 |
53 |
18.8947 |
… |
… |
… |
… |
… |
공변량이 2개 이상인 경우에는 공변량이 하나인 경우의 모형을 그대로 확장해서 각 모수의 추정과 검정을 할 수 있다.
<공분산분석을 위한 두 가지 가정>
1) 각 처리 안에서 반응변수Y에 미치는 공변량x의 효과가 모두 동일해야 한다. 즉, 회귀계수가 모든 약의 형태에 대해서 동일해야 하며, 교호작용이 없어야 한다.
2) 공변량x 효과가 0이 아니다. 효과가 0이라면 분산분석을 하면 된다.
2. 공분산분석에서의 검정
1) H0: β1 = 0 항신진대사의 효과가 없음
2) H0: β2 = 0 소요시간의 효과가 없음
이상 2개의 공변량 효과를 제어한 후 배출된 약물량의 모평균이 약의 형태type에 따라 차이가 있는가를 검정할 수 있는데, 이를 검정하기 위한 귀무가설은 아래와 같다.
3) H0 : α1 = α2 = ... = αI
1. library 호출 및 데이터 불러오기
> library(lsmeans)
> setwd('C:/Rwork')
> drug = read.csv('약물배출량자료.csv')
> head(drug)
관측번호 약형태 항신진대사점수 소요시간 약물량
1 1 1 37 61 11.3208
2 2 2 37 37 12.9151
3 3 3 45 53 18.8947
4 4 4 41 41 14.6739
5 5 5 57 41 8.6493
6 6 6 49 33 9.5238
> colname<-c('obs','type','x1','x2','y')
> colnames(drug)<-colname
> head(drug)
obs type x1 x2 y
1 1 1 37 61 11.3208
2 2 2 37 37 12.9151
3 3 3 45 53 18.8947
4 4 4 41 41 14.6739
5 5 5 57 41 8.6493
6 6 6 49 33 9.5238
> attach(drug)
2. 회귀계수의 동일성 검정(교호작용 존재 확인)
공분산 분석을 위한 중요한 가정으로 교호작용이 존재하는지 점검한다. 교호작용이 존재하면 공분산분석이 아닌 분산분석을 실시한다.
> model1 = aov(y~factor(type) + factor(type)*x1 + factor(type)*x2 , data = drug)
> summary(model1)
Df Sum Sq Mean Sq F value Pr(>F)
factor(type) 5 250.3 50.1 2.099 0.113
x1 1 696.6 696.6 29.206 3.9e-05 ***
x2 1 54.4 54.4 2.282 0.148
factor(type):x1 5 160.8 32.2 1.349 0.289
factor(type):x2 5 42.3 8.5 0.355 0.872
Residuals 18 429.3 23.9
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘
-> 공변량이 2개 이므로 우변에 * 형태로 입력
귀무가설 H0 : 교호작용이 존재하지 않는다.
대립가설 H1 : 교호작용이 존재한다.
p-value: x1 항신진대사점수 – 0.289
x2 소요시간 – 0.872
의사결정: 유의수준 5% 하에서 귀무가설을 기각할 수 없다.
결론: 두 공변량(항신진대사점수, 소요시간)과 약의 형태 사이에 교호작용이 존재하지 않으므로 공분산분석을 할 수 있다. ( = 각 처리 안에서 반응변수Y에 미치는 공변량x의 효과가 모두 동일하다.)
3. 이원공분산분석 (Two-way ANOVA)
> model2 = aov(y~factor(type) + x1 + x2, data=drug)
> summary(model2)
Df Sum Sq Mean Sq F value Pr(>F)
factor(type) 5 250.3 50.1 2.216 0.0808 .
x1 1 696.6 696.6 30.837 6.13e-06 ***
x2 1 54.4 54.4 2.409 0.1319
Residuals 28 632.5 22.6
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
-> 2개의 공변량을 보정하지 않았을 때의 F-값과 p값은 각각 2.216, 0.0808으로 유의수준 5%하에서 유의하지 않다.
귀무가설 H0 : α1 = α2 = ... = αI
대립가설 H1 : 최소한 하나 이상의 약은 효과가 있다.
p-value: 0.0808
의사결정: 유의수준 5% 하에서 귀무가설을 기각할 수 없다.
결론: 약의 형태에 따라 배출된 약물량의 차이가 없다.
3-1. 공변량 효과 제어 시 치료법의 효과 검정
> model3 = lm(y~factor(type) + x1 + x2, data=drug)
> summary(model3)
Call:
lm(formula = y ~ factor(type) + x1 + x2, data = drug)
Residuals:
Min 1Q Median 3Q Max
-7.222 -2.634 -0.379 1.475 9.646
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 36.6370 8.9591 4.089 0.000331 ***
factor(type)2 0.8965 2.7823 0.322 0.749677
factor(type)3 7.9097 2.7684 2.857 0.007973 **
factor(type)4 3.0722 2.8247 1.088 0.286025
factor(type)5 9.5434 2.8534 3.345 0.002355 **
factor(type)6 5.8389 2.8391 2.057 0.049149 *
x1 -0.7606 0.1375 -5.531 6.51e-06 ***
x2 0.1647 0.1061 1.552 0.131868
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 4.753 on 28 degrees of freedom
Multiple R-squared: 0.6129, Adjusted R-squared: 0.5161
F-statistic: 6.332 on 7 and 28 DF, p-value: 0.0001641
귀무가설 H0 : β1 = β2 = 0 공변량(항신진대사, 소요시간)의 효과가 없음
H0 : α1 = α2 = ... = αI
대립가설 not H0
p-value : 0.0001641
의사결정: 귀무가설을 강하게 기각한다. 5%의 유의수준 하에서 매우 유의하다.
결론: 우리가 세운 모형의 자료에 적합하다는 것을 알 수 있다. 배출된 약물량의 모평균이 약 형태type의 효과와 공변량들의 효과가 없다라고 말할 수 없다.
4. 공변량 효과 제어시 치료법의 효과 검정 - 모형 제곱합
1)제1종 제곱합(Type I SS): SS(type)
> model2 = aov(y~factor(type) + x1 + x2, data=drug)
> summary(model2)
Df Sum Sq Mean Sq F value Pr(>F)
factor(type) 5 250.3 50.1 2.216 0.0808 .
x1 1 696.6 696.6 30.837 6.13e-06 ***
x2 1 54.4 54.4 2.409 0.1319
Residuals 28 632.5 22.6
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
OR
> summary(aov(y~factor(type)+x1+x2,data=drug))
Df Sum Sq Mean Sq F value Pr(>F)
factor(type) 5 250.3 50.1 2.216 0.0808 .
x1 1 696.6 696.6 30.837 6.13e-06 ***
x2 1 54.4 54.4 2.409 0.1319
Residuals 28 632.5 22.6
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’
-> 결과해석: 약의 형태type가 기여한 제1종 제공합의 p-value는 0.0808로 유의수준 5%하에서 유의하지 않다.
2)제3종 제곱합(Type III SS): SS(type | x1, x2)
> summary(aov(y~x1+x2+factor(type),data=drug))
Df Sum Sq Mean Sq F value Pr(>F)
x1 1 516.5 516.5 22.867 5.03e-05 ***
x2 1 62.8 62.8 2.779 0.1067
factor(type) 5 422.0 84.4 3.736 0.0102 *
Residuals 28 632.5 22.6
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘
-> 결과해석: x1,2 given type, 공변량x1,x2가 기여한 상태에서 순수하게 약의 형태type가 기여한 제3종 제공합의 p-value는 0.0102로 유의수준 5%하에서 유의하다.
5. 각 수준 별 추정치를 알아보자.
> model3 = lm(y~factor(type) + x1 + x2, data=drug)
> summary(model3)
Call:
lm(formula = y ~ factor(type) + x1 + x2, data = drug)
Residuals:
Min 1Q Median 3Q Max
-7.222 -2.634 -0.379 1.475 9.646
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 36.6370 8.9591 4.089 0.000331 ***
factor(type)2 0.8965 2.7823 0.322 0.749677
factor(type)3 7.9097 2.7684 2.857 0.007973 **
factor(type)4 3.0722 2.8247 1.088 0.286025
factor(type)5 9.5434 2.8534 3.345 0.002355 **
factor(type)6 5.8389 2.8391 2.057 0.049149 *
x1 -0.7606 0.1375 -5.531 6.51e-06 ***
x2 0.1647 0.1061 1.552 0.131868
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 4.753 on 28 degrees of freedom
Multiple R-squared: 0.6129, Adjusted R-squared: 0.5161
F-statistic: 6.332 on 7 and 28 DF, p-value: 0.0001641
-> 출력결과 유의하게 나타나는 것은 3,5,번째 약의 형태의 추정치들이 첫 번째 약의 형태와의 차이를 타나내는데 p-값이 유의수준 5% 하에서 유의하다. 항신진대사 점수(x1)는 p 값이 <0.0001로 유의수준 5%하에서 매우 유의하지만 약의 배출 소요시간(x2)은 p 값이 0.131868로 유위수준 5%하에서 유의하지 않은 것으로 나타났다. 위의 출력 결과를 바탕으로 약의 형태별 공분산모형식을 쓰면 다음과 같다.
ŷ1j = β^0 + α^1 + β^1x11j + β^2x21j = 36.637 + 0 - 0.761 x11j + 0.165x21j
ŷ2j = β^0 + α^2 + β^1x12j + β^2x21j = 36.637 + 0.897- 0.761 x12j + 0.165x22j
ŷ3j = β^0 + α^3 + β^1x13j + β^2x21j = 36.637 + 7.908 - 0.761 x13j + 0.165x23j
ŷ4j = β^0 + α^4 + β^1x14j + β^2x21j = 36.637 + 3.072 - 0.761 x14j + 0.165x24j
ŷ5j = β^0 + α^5 + β^1x15j + β^2x21j = 36.637 +9.544 - 0.761 x15j + 0.165x25j
ŷ6j = β^0 + α^6 + β^1x16j + β^2x26j = 36.637 + 5.839 - 0.761 x16j + 0.165x26j
위의 식에 나타난 각 회귀식의 추정결과 모든 약의 형태에 대해서 항신진대사 점수(x1)와 약의 배출 소요시간(x2)의 회귀계수는 동일하다. 약의 배출 소요시간을 제어한 항신진대사 점수의 효과를 보면 항신진대사 점수가 1단위 높아짐에 따라 약의 배출량은 0.761만큼 감소하고 통계적으로 유의한 효과가 있고, 항신진대사 점수를 제어한 약의 배출 소요시간은 1단위 증가할수록 0.165만큼 증가하지만 그 효과는 유의하지 않다.
6. LSMEANS(Adjusted means) 계산
> lsmeans(model3,~type)
type lsmean SE df lower.CL upper.CL
1 5.674385 1.991087 28 1.595828 9.752942
2 6.570912 1.946518 28 2.583650 10.558174
3 13.584122 1.969292 28 9.550210 17.618034
4 8.746633 1.955440 28 4.741095 12.752171
5 15.217831 1.987611 28 11.146394 19.289268
6 11.513284 1.980761 28 7.455879 15.570690
Confidence level used: 0.95
-> 각 약의 형태에 대한 LSMEAN(보정된 평균)값이 출력되어 있다. 보정된 평균은 항신진대사 점수x1와 소요시간x2의 효과를 제어했을 때 반응변수Y인 배출되는 약물량의 평균값이다. 앞의 식에서 각 약의 형태의 회귀식의 공변량값에 전체 평균값을 넣어서 약의 형태별 보정된 평균(adjusted mean)을 아래 식과 같이 계산할 수 있다.
y barad1 = 36.387 + 0 – 0.761*51.22 + 0.165*48.56 = 5.67
y barad2 = 36.387 + 0.897 – 0.761*51.22 + 0.165*48.56 = 6.57
y barad3 = 36.387 + 7.908 – 0.761*51.22 + 0.165*48.56 = 13.59
y barad4 = 36.387 + 3.072 – 0.761*51.22 + 0.165*48.56 = 8.75
y barad5 = 36.387 + 9.544 – 0.761*51.22 + 0.165*48.56 = 15.22
y barad6 = 36.387 + 5.839 – 0.761*51.22 + 0.165*48.56 = 11.51
보정된 평균값을 보면 첫 번째와 두 번째 약의 형태의 보정된 평균값이 다소 작고 세 번째, 다섯 번째, 여섯 번째 약의 형태에 대한 보정된 평균값이 크다는 것을 알 수 있다.
6. 처리 간 다중비교
> model3.lsm = lsmeans(model3,pairwise ~ type, glhargs = list())
> print(model3.lsm,omit=1)
$lsmeans
type lsmean SE df lower.CL upper.CL
1 5.674385 1.991087 28 1.595828 9.752942
2 6.570912 1.946518 28 2.583650 10.558174
3 13.584122 1.969292 28 9.550210 17.618034
4 8.746633 1.955440 28 4.741095 12.752171
5 15.217831 1.987611 28 11.146394 19.289268
6 11.513284 1.980761 28 7.455879 15.570690
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
1 - 2 -0.8965269 2.782316 28 -0.322 0.9995
1 - 3 -7.9097368 2.768397 28 -2.857 0.0771
1 - 4 -3.0722481 2.824671 28 -1.088 0.8822
1 - 5 -9.5434459 2.853395 28 -3.345 0.0257
1 - 6 -5.8388992 2.839070 28 -2.057 0.3378
2 - 3 -7.0132099 2.783087 28 -2.520 0.1525
2 - 4 -2.1757212 2.753630 28 -0.790 0.9669
2 - 5 -8.6469191 2.802553 28 -3.085 0.0468
2 - 6 -4.9423723 2.758561 28 -1.792 0.4869
3 - 4 4.8374887 2.801787 28 1.727 0.5266
3 - 5 -1.6337091 2.782316 28 -0.587 0.9911
3 - 6 2.0708376 2.840329 28 0.729 0.9766
4 - 5 -6.4711978 2.783344 28 -2.325 0.2178
4 - 6 -2.7666511 2.753890 28 -1.005 0.9125
5 - 6 3.7045468 2.831753 28 1.308 0.7781
P value adjustment: tukey method for comparing a family of 6 estimates
위의 결과를 보면 약의 형태 5의 경우 보정된 평균이 형태 1과 2와 유의하게 차이가 나는 것을 볼 수 있다.
> names(model3.lsm)
[1] "lsmeans" "contrasts"
> plot(model3.lsm[[1]])
> plot(model3.lsm[[2]])
->Tukey(HSD) 검정 결과를 신뢰구간으로 보면, 1-5, 2-5가 유의함을 알 수 있다.
Dunnett vs Tukey
다중분석 하기 전 순서형인 type 변수를 명목형 변수로 변경
> str(drug)
'data.frame': 36 obs. of 5 variables:
$ obs : int 1 2 3 4 5 6 7 8 9 10 ...
$ type: int 1 2 3 4 5 6 1 2 3 4 ...
$ x1 : int 37 37 45 41 57 49 49 53 53 53 ...
$ x2 : int 61 37 53 41 41 33 49 53 45 53 ...
$ y : num 11.32 12.92 18.89 14.67 8.65 ...
> drug$type<-as.factor(drug$type)
> summary(drug)
obs type x1 x2 y
Min. : 1.00 1:6 Min. :37.00 Min. :33.00 Min. : 0.0017
1st Qu.: 9.75 2:6 1st Qu.:49.00 1st Qu.:45.00 1st Qu.: 5.9561
Median :18.50 3:6 Median :53.00 Median :49.00 Median : 8.4527
Mean :18.50 4:6 Mean :51.22 Mean :48.56 Mean :10.2179
3rd Qu.:27.25 5:6 3rd Qu.:53.00 3rd Qu.:53.00 3rd Qu.:13.9175
Max. :36.00 6:6 Max. :61.00 Max. :65.00 Max. :28.1828
> model4<-lm(y~type+x1+x2,data=drug)
다중 분석 시작
> library(multcomp)
> tukey<-glht(model4,linfct=mcp(type='Tukey'))
> summary(tukey)
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Tukey Contrasts
Fit: lm(formula = y ~ type + x1 + x2, data = drug)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
2 - 1 == 0 0.8965 2.7823 0.322 0.9995
3 - 1 == 0 7.9097 2.7684 2.857 0.0771 .
4 - 1 == 0 3.0722 2.8247 1.088 0.8821
5 - 1 == 0 9.5434 2.8534 3.345 0.0257 *
6 - 1 == 0 5.8389 2.8391 2.057 0.3374
3 - 2 == 0 7.0132 2.7831 2.520 0.1524
4 - 2 == 0 2.1757 2.7536 0.790 0.9669
5 - 2 == 0 8.6469 2.8026 3.085 0.0469 *
6 - 2 == 0 4.9424 2.7586 1.792 0.4867
4 - 3 == 0 -4.8375 2.8018 -1.727 0.5265
5 - 3 == 0 1.6337 2.7823 0.587 0.9911
6 - 3 == 0 -2.0708 2.8403 -0.729 0.9766
5 - 4 == 0 6.4712 2.7833 2.325 0.2178
6 - 4 == 0 2.7667 2.7539 1.005 0.9124
6 - 5 == 0 -3.7045 2.8318 -1.308 0.7780
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)
> plot(tukey)
->Tukey(HSD) 검정 결과를 신뢰구간으로 보면, 1-5, 2-5가 유의함을 알 수 있다.
> dunnett <- glht(model4,linfct=mcp(type='Dunnett'))
> summary(dunnett)
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Dunnett Contrasts
Fit: lm(formula = y ~ type + x1 + x2, data = drug)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
2 - 1 == 0 0.8965 2.7823 0.322 0.9974
3 - 1 == 0 7.9097 2.7684 2.857 0.0324 *
4 - 1 == 0 3.0722 2.8247 1.088 0.7130
5 - 1 == 0 9.5434 2.8534 3.345 0.0103 *
6 - 1 == 0 5.8389 2.8391 2.057 0.1733
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)
> plot(dunnett)
7. 모형 적합성 검토
> par(mfrow=c(2,2))
> plot(model3)
-> 등분산성, 정규성 가정에는 큰 문제가 없음을 알 수 있다.
출처: 보건정보데이터 분석(이태림, 이재원, 김주한, 장대흥 공저), R을 이용한 누구나 하는 통계분석(안재형 저)
'KNOU > 2 보건 정보 데이터 분석' 카테고리의 다른 글
제6.2장 비모수적 방법 - 2. 누적한계추정법 (0) | 2017.01.26 |
---|---|
제6.2장 비모수적 방법 - 1. 생명표 방법 (0) | 2017.01.26 |
제5.1장 공분산 분석 - 1. 공변량이 하나인 경우 (0) | 2017.01.06 |
제4장 범주형 자료의 분석 - 4.3 로짓분석 (0) | 2017.01.04 |
제4장 범주형 자료의 분석 - 4.2.4 대응자료 및 사례 - 대조군 검정 (0) | 2016.12.29 |