獨斷論

Permutation t test 본문

과학과 기술/R 통계

Permutation t test

부르칸 2023. 5. 17. 03:16

# 두 개의 데이터가 있다고 가정

data1 <- c(500, 450, 600, 700, 550, 551, 552)
data2 <- c(560, 460, 620, 720, 540, 600, 750)

 

# 두 데이터의 평균의 차이
mean_diff_data12 = mean(data2) - mean(data1) 

 

# Permutationt test 수행
data_combined = c(data1, data2)   # 데이터를 합친후에

set.seed(1)
null_dist = c()

for(i in 1:100000) {    # 100000번 반복
  data_shuffled = sample(data_combined)   # 샘플링한다
  data_shuffled_1 = data_shuffled[1:7]  # 순서대로 7개를 data1이라고 가정
  data_shuffled_2 = data_shuffled[8:14] # 그 뒤 7개를 data2라고 가정
  null_dist[i] = mean(data_shuffled_2) - mean(data_shuffled_1)  # 새로운 두 데이터의 평균의 차이를 구함
}

# 샘플링한 데이터와 기존 데이터 비교

 

# 샘플링한 데이터의 평균의 차이가 기존 평균보다 큰 경우 수
p_right = sum(null_dist >= mean_diff_data12)

 

# 평균차이를 각각 음수를 취하여 작은 경우의 수를 구함. two-side test이기때문,

p_left = sum(null_dist <= -mean_diff_data12)

 

# 위에서 구한 두 경우의 수를 전체 샘플수로 나누어 확률을 구함
p_value = (p_right + p_left) / length(null_dist)
print(p_value)

# by stat package
t.test(data1, data2)

# permutation t test by MKinfer package
library(MKinfer)
perm.t.test(data1, data2)

Comments