본문 바로가기

배운 책들 정리/만만한 통계 : R 활용

0217 만만한 통계 R - 평균 차이 검정, 분산분석(ANOVA)(14,15)

14C 평균 차이 검정

1) 짝지은 표본 T검정

# 짝지은 표본 t검정
# 사전 / 사후 통증 정도의 차이
# 새로운 무릎 통증 치료제의 효과를 증명하기 위해
# 노인 20명에게 통증 치료제 투여
# 가설 : 사전 통증 정도와 사후 통증 정도의 차이가 있을 것이다.

# 짝지은 표본 t검정 실습
options(scipen = 99)
# 데이터 불러오기
library(readxl)
data <- read_excel("./SpyderBD_01/data/sta_data.xlsx",sheet = "pair_t")
data
str(data)
table(data$group)
# 전후의 통증 정도 기술 통계 확인
library(psych)
sapply(data[c("pre","post")],describe)
# 짝지은 표본 t검정
t.test(data$pre, data$post, paired = T)

15C 분산분석

1) 짝지은 표본 T검정

분산분석은 그룹 3개여야 함.

방법의 개수에 따라 1-WAY, 2-WAY로 나뉨

ANOVA는 반드시 사후검정을 추가분석해야 함.

 

2) 검정통계량 계산

* F = 평균제곱(집단간 변동성 = between) / 평균제곱 (집단내 집단간 변동성 = within)

 

3) 귀무가설 / 연구가설

귀무가설 : H0 : u1 = u2 = u3

연구가설 : xbar != xbar2 != xbar3 

  -> 정확한 표현 : xbar != xbar2 or xbar1 != xbar3 or xbar2 = xbar3

 

4) 검정통계량(획득된 값)의 계산 // 자유도를 나누기 전 

F 비율

집단 간 제곱합(SSB) = MSB // K-1 (기억)

집단 내 제곱합(SSW) = MSW // N-K 

MSB / MSW = F (분산분석표)

자유도 = (그룹 또는 변수의 수 - 1) + (총 표본 크기 - 그룹의 수)

그룹 또는 변수의 수를 K-1로 대체하고 총 샘플 크기에서 그룹 수를 뺀 값을 NK로 대체하면 다음과 같이 됩니다.

자유도 = (K-1) + (N-K) = N-1

-> 결국 ANOAVA의 총 자유도를 구하는 것임. (K-1)이라는 것은

 

5) 검정통계량 산출

ANOVA 분석은 우측검정뿐. 0부터 시작함 (음수가 없음) 

 

6) 실습 파일

# 운동선수의 스포츠 경력과 경기 대처 기술과 관련이 있다는 가설을 검정하기 위함
# 1) 다른 집단 간 점수 차이 (선수들의 최고 점수 간의 차이를 검정)
# 2) 선수들은 단 한 번의 검사만을 받음
# 3) 3개의 집단 (6년 이하, 7~10년, 10년 이상의 경력)이 존재
# 4) 이 경우 적절한 검정 통계는 단순 분산분석(ANOVA)# 짝지은 표본 t검정

# 3개 이상 2그룹 변수 1개만 사용

# 단순 분산분석= 일원배치 분산분석(one-way ANOVA)
x1 <- c(87,86,76,56,78,98,77,66,75,67)
x2 <- c(87,85,99,85,79,81,82,78,85,91)
x3 <- c(89,91,96,87,89,90,89,96,96,93)
x1;x2;x3

x1_m <- mean(x1)
x2_m <- mean(x2)
x3_m <- mean(x3)
total_m <- mean(c(x1_m,x2_m,x3_m))
n1 <- length(x1)
n2 <- length(x2)
n3 <- length(x3)
n1;n2;n3
# between : 그룹간 변동 = 그룹 평균 - 총 평균
b1 <- x1_m - total_m
b2 <- x2_m - total_m
b3 <- x3_m - total_m
b1;b2;b3
b1_sq <- b1^2
b2_sq <- b2^2
b3_sq <- b3^2
b1_sq;b2_sq;b3_sq
ssb <- sum(b1_sq*n1,b2_sq*n2,b3_sq*n3)
ssb
# within: 그룹 내 변동 = 관측치 - 평균
w1 <- x1-x1_m
w2 <- x2-x2_m
w3 <- x3-x3_m
w1;w2;w3
w1_sq <- w1^2
w2_sq <- w2^2
w3_sq <- w3^2
w1_sq;w2_sq;w3_sq
ssw <- sum(w1_sq,w2_sq,w3_sq)
ssw
# 자유도 = k -1 (k: 그룹의 개수)
k = 3
b_df <- k-1
b_df
# within 자유도 = n - k
n = n1 + n2 + n3
w_df = n-k
w_df

# between 
msb <-  ssb/b_df 
msw <- ssw/w_df

# F값
f <- msb/msw
# 임계값, 유의수준, 자유도
alpha <- 0.05
b_df;w_df
cv <- qf(1-alpha,b_df,w_df)
cv<F
# 유의확률
pv <- 1-pf(f,b_df,w_df)
alpha>pv


# 실습 15장
data <- read.csv("./Syntax(R)/15/ch15ds1.csv")
head(data)
str(data)
# 그룹 빈도표
table(data$Group)
library(psych)
describeBy(data$Language.Score, group = data$Group)
# 표본의 개수(n), 평균(mean), 표준편차(sd)
# 단순 분산분석, aov(종속변수~독립변수)
summary(aov(Language.Score~Group, data=data))
# 사후검정
TukeyHSD(aov(Language.Score~Group, data=data))

그룹 빈도표 describeBy(data$Language.Score, group = data$Group)
단순 분산분석 summary(aov(Language.Score~Group, data=data))
사후검정 TukeyHSD(aov(Language.Score~Group, data=data))

 

7) 일원배치 분산분석

* 등분산분석 (분산의 차이 확인)

* 일원배치 분산분석 (평균의 차이 확인)

 

8) 등분산 분석 실습

num = 분자

denom = 분모

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST