[R] 간단한 통계 과정 목록 (엑셀 xlsx 불러오기 부터)

간단한 연구를 하기 위해 진행했던 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)

 

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.