황유미 선생님의 데이타를 repeated measure ANOVA를 이용하여 분석하였다. 먼저 data의 preprocessing을 거쳤다.
require(readxl)
require(moonBook)
require(reshape)
require(stringr)
require(ggplot2)
source("friedman1.R")
data=read_excel("통계분석preliminary.xlsx")
#tail(data)
data$ECG0=as.numeric(data$baseECG)
#str(data)
#summary(data)
data1=cbind(data[,c(1:19,25,26)],data[,c(36,20:24)],data[,27:35])
data=melt(data1,id=1:21)
#head(data)
data$fu=str_sub(data$variable,-1)
data$obs=str_sub(data$variable,1,-2)
temp=unique(data$obs)
먼저 Repeated Measure ANOVA를 이용하여 검사해본다.
for(i in 1:length(temp)){
p<-ggplot(data[data$obs==temp[i],],aes(x=fu,y=value))+geom_boxplot()+ggtitle(temp[i])
print(p)
cat("\n###### ",temp[i]," #####\n")
data1=data[data$obs==temp[i],]
with(data1,tapply(value,fu,mean))
fit=aov(value~fu,data=data1)
print(summary(fit))
if(summary(fit)[[1]][1,5]<0.1)
print(pairwise.t.test(data1$value,data1$fu,p.adjust.method="holm",paired=T))
}
###### ECG #####
Df Sum Sq Mean Sq F value Pr(>F)
fu 2 0.92 0.4622 1.168 0.312
Residuals 447 176.85 0.3956
Warning in loop_apply(n, do.ply): Removed 26 rows containing non-finite
values (stat_boxplot).
###### PR #####
Df Sum Sq Mean Sq F value Pr(>F)
fu 2 9653 4826 3.862 0.0218 *
Residuals 421 526086 1250
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
26 observations deleted due to missingness
Pairwise comparisons using paired t tests
data: data1$value and data1$fu
0 1
1 0.0378 -
2 0.0015 5.8e-07
P value adjustment method: holm
###### QRS #####
Df Sum Sq Mean Sq F value Pr(>F)
fu 2 1199 599.3 1.588 0.206
Residuals 447 168718 377.4
###### BBB #####
Df Sum Sq Mean Sq F value Pr(>F)
fu 2 1.48 0.7400 2.827 0.0603 .
Residuals 447 117.02 0.2618
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pairwise comparisons using paired t tests
data: data1$value and data1$fu
0 1
1 0.013 -
2 0.036 0.150
P value adjustment method: holm
###### QTc #####
Df Sum Sq Mean Sq F value Pr(>F)
fu 2 37477 18738 16.45 1.28e-07 ***
Residuals 447 509148 1139
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pairwise comparisons using paired t tests
data: data1$value and data1$fu
0 1
1 2e-11 -
2 0.00011 0.00093
P value adjustment method: holm
PR과 QTC는 의미있게 나왔고 BBB의 경우 p값이 0.06이었다.
누락된 값이 있는 PR을 제외하고 비모수통계인 friedman test 및 post-hoc analysis를 실시했다.
for(i in c(1,3,4,5)){
cat("\n###### ",temp[i]," #####\n")
data1=data[data$obs==temp[i],]
friedman.test.with.post.hoc(value~fu|ID,data=data1)
}
###### ECG #####
Loading required package: coin
Loading required package: survival
Loading required package: multcomp
Loading required package: mvtnorm
Loading required package: TH.data
Loading required package: colorspace
$Friedman.Test
Asymptotic General Independence Test
data: value by fu (0, 1, 2)
stratified by ID
maxT = 2.5526, p-value = 0.02879
$PostHoc.Test
1 - 0 0.02872675
2 - 0 0.34835312
2 - 1 0.47303695
###### QRS #####
$Friedman.Test
Asymptotic General Independence Test
data: value by fu (0, 1, 2)
stratified by ID
maxT = 2.8618, p-value = 0.01169
$PostHoc.Test
1 - 0 0.91895110
2 - 0 0.03597942
2 - 1 0.01178290
###### BBB #####
$Friedman.Test
Asymptotic General Independence Test
data: value by fu (0, 1, 2)
stratified by ID
maxT = 3.2733, p-value = 0.003029
$PostHoc.Test
1 - 0 0.003156328
2 - 0 0.121238527
2 - 1 0.389939373
###### QTc #####
$Friedman.Test
Asymptotic General Independence Test
data: value by fu (0, 1, 2)
stratified by ID
maxT = 6.6899, p-value = 6.308e-11
$PostHoc.Test
1 - 0 3.696532e-11
2 - 0 1.269896e-05
2 - 1 1.037135e-01
모두 의미있게 나오는데 과연 해석을 어떻게 해야 할지? 뭔가 잘못했나?