T검정과 ANOVA검정

주울·2022년 10월 18일

데이터분석

목록 보기
1/7

list.files() //현재 디렉토리 내 모든 파일 출력하기

데이터 불러오기(txt,spss,sas)

txt,dat

data = read.table('파일경로',header=TRUE,sep='\t')
dim(data)
View(data)

spss

install.packages("haven")
library(haven)
data = read_sav(file='파일명', encoding='UTF-8')
View(data)

sas

변수의 선택과 분석

데이터와 변수(칼럼) 선택하기

//행, 열을 선택하기
data[1:3, 1:5] 1번째부터 3번째 행, 1번째부터 5번째 변수 보기

// 특정 컬럼 가져오기
d1 = data[ , c(3)] //3번째 열 가져오기
d2 = data[ , c(1,3,4)] //1,3,4번째 열 가져오기
d3 = data[ , c("AGE", "WT")] //컬럼 명으로 가져오기

//특정 조건을 만족하는 행만 가져오기
r1 = data[which(data$sex=="남"), ] //성별이 남자인 행만 선택

//행 합치기
dim(data1)
dim(data2)
row_hap = rbind(data1,data2) //row를 합히기
dim(row_hap)

변수의 분석

str(data) //data 내 변수들의 속성을 확인 가능
summary(data) // 범주형 변수는 빈도값, 연속형 변수는 중앙값,평균 등의 전체적 내용 확인 가능

범주형 변수의 분석

범주형 변수는 빈도 값을 확인

install.packages("descr")
library(descr)
categorical = freq(data$var)
View(categorical)

연속형 변수의 분석

연속형 변수는 히스토그램으로 분포 확인

v = data$var
histo = hist(v)
head(histo) //정확한 빈도 수, 그래프의 구체적인 내용 확인 가능

//히스토그램 간격 조정하기
hist(data$var, breaks = seq(1,500,by=100) //범위:1~500, 간격:100

T 검정

T 검정은 두 그룹에 대해 연속형변수의 평균을 비교하는 것이다. 따라서 반드시 두 그룹이어야한다.

두 그룹으로 나누기

data$var2 = ifelse(data$var1 < 10, 0, 1) //var1이 10 미만이면 0, 10 이상이면 1

정규성 검정

//점들의 분포가 선과 비슷할 수록 정규성 만족하는 것
qqnorm(data$var)
qqline(data$var)

//shapiro.test 이용하여 정규성 검정. p-value가 0.05보다 커야 정규분포 만족한다는 것.
shapiro.test(data$var) // sample size가 5000 이하여야함.

등분산 검정

var.test(y ~ x, data=mydata, conf.level=0.95) // T검정이므로 x는 두 그룹으로 나누어질 것. 두 그룹의 분산이 같은 지 확인 가능. p-value 가 0.05보다 커야 분산이 같다고 주장 가능하다. 

t 검정

t.test(y ~ x, data = mydata, var.equal = TRUE, conf.level = 0.95) // 등분산 검정을 통해 얻은 값으로 var.equal 값을 설정한다. T 검정이므로 x는 두 그룹이어야 한다. p-value 가 0.05 보다 작으면 두 그룹의 평균의 차이는 통계적으로 유의한 차이를 나타낸다는 의미이다. 

ANOVA 분석

ANOVA 검정은 서로 다른 세 그룹 이상의 평균에서 분산값을 비교하는 데 사용된다.

세 그룹 이상으로 나누기

group = with(data, ifelse(var == 0, 0,
							ifelse((var >= 1 & var <= 9), 1,2))) //with와 ifelse를 이용하여 그룹 여러 개를 만들 수 있다.

등분산 검정

bartlett.test(y ~ x, data=mydata) // T검정이므로 x는 두 그룹으로 나누어질 것. 두 그룹의 분산이 같은 지 확인 가능. p-value 가 0.05보다 커야 분산이 같다고 주장 가능하다. 

anova 분석

result = aov(y ~ factor(x), data=mydata) //x 변수가 숫자일 경우 factor 이용
summary(result)

// 사후검정
install.packages('agricolae')
library(agricolae)
TukeyHSD(result)

// 보기 쉽게 그래프 그려보기
plot(TukeyHSD(result))

0개의 댓글