간단한 연구를 하기 위해 진행했던 flow 정리
library(xlsx) ACC <- read.xlsx("ACC_salivary.xlsx",1) # 1 ACC$site <- factor(ACC$site, levels=c("1","2","3"), labels=c("Parotid","SMG","SLG") ) #2 ACC$NED_local_yn <- factor(ACC$NED_local_yn,levels=c("2","1"),labels=c("No","Yes") #3
#1: 1번 위크시트를 불러옴
#2: 1,2,3으로 적혀있는 데이터에 각각의 label 부여
#3. 이렇게 해주면 엑셀에 1,2라고 등록된 값이 내부적으로 0,1 숫자로 인식하게 되어 logistic regression시에 편하게 인식된다. 즉 엑셀에 2로 입력한 값은 R에서 문자 “2” 인식되는데 이를 label이 “No”인 0번째 factor로 인식하겠다는 이야기이다. “Yes”는 1번째 factor, 엑셀에서는 “1””. 처음부터 0=No,1=Yes로 하면 좋긴함.
1. 정규성 검정 shapiro.test
shapiro.test(data)
p<0.05 : 정규분포가 아님
2-1. Factor에 따른 descriptive data
#아래 함수들을 적절히 혼합해서 summary(var) install.packages("doBy") library(doBy) summaryBy(fu_duration~last_state, data=ACC, FUN = function(x) { c(m = mean(x), s = sd(x)) } ) install.packages("psych") require(psych) describeBy(ACC2$recur_local_duration)
2-2. Factor 끼리 table만들기
library("tables") tabular(A~B,data=ACC) # 또는 table(ACC$site,ACC$B) # 분석은 chisq.test(ACC$A, ACC$B) #아니면 chisq.test(table(ACC$site,ACC$B)) 해도된다. fisher.test(ACC$A, ACC$B)
3. 연속적인 변수간들의 비교
정규분포 T-test > t.test()
비모수 Mann-Whitney-U > wilcox.test ()
4. t.test / mann-whitney-u test 결과 figure
library(ggplot2) ggplot(ACC,aes(x=site,y=age_at_op,fill=site)) + stat_summary(fun.y=mean, geom="bar", color="black") + stat_summary(fun.data=get.se, geom="errorbar",width=0.1) + theme_bw() + scale_fill_grey(start=0.4,end=0.8) + ylim(0,80)
theme_bw() : 배경을 하얗게
scale_fill_grey는 fill을 grey color 위주로 할 때 0.4~0.8까지 값을 나눠서 준다.
ylim, xlim 등은 표현범위
적절히 필요한 선을 그리고
geom_segment(aes(x=1,xend=1,y=60,yend=75))
P value 적기
geom_text(aes(label=c("italic('P')<.01"), x=2, y=77), parse=T, colour="black", size=3.5)
5. 연속적인 독립변수에 카테고리 종소변수와의 관계는 logistic regression
mylogit <- glm(A~B, family="binomial") summary(mylogit)
95% CI 구하기
require(MASS) cbind(coef(mylogit), confint.default(mylogit))
confint.default로 하지 않고 confint 경우 97.5% CI가 나온다.
6. Factor level order 변경
7. Mean, Median, IQR 등 간단히 확인
require(EnvStats) summaryStats(voice_diff_1mo_pre$self_fmax,quartiles=TRUE)