통계학에서 데이터를 가지고 검정을 해야할 경우가 많다. 독립성 검정이나 CMH 검정을 하려면 table 형식으로 변경해야할 때가 있다. 알아두면 편한 몇 가지 팁을 정리해본다.
기본적으로 에서 패키지가 table을 자세하게 보여주기 때문에 활용하면 좋다. 실습은 기본 함수를 사용하겠다. 만약 다음과 같은 표가 있다고 하자.
그림 출처: Agresti, Categorical Data Analysis
먼저 필요한 패키지를 부르자.
library(dplyr)
library(gmodels)
위와 같은 표가 있을 때, 함수를 통해 data.frame 형식으로 표현할 수 있다.
dp_df = data.frame(victim = c("W", "W", "W", "W", "B", "B", "B", "B"),
def=c("W", "W", "B", "B", "W", "W", "B", "B"),
dp = c("Y", "N", "Y", "N", "Y", "N","Y", "N"),
freq = c(53, 414, 11, 37, 0, 16, 4, 139))
관측치로 정리된 data.frame
하지만 흔히 관측치로 기록된 data.frame의 형태를 사용하는 경우가 더 많다.
tidy_dp_df = as.data.frame(lapply(dp_df, rep, dp_df$freq))[, 1:3]
tidy_dp_df %>% head()
관측치로 정리된 data.frame
변수가 3개여서 우리가 Table이 필요하다. 함수를 사용하여 주변부 표(marginal table)을 쉽게 확인할 수 있다. 변수를 직접 적지 않으면 data.frame에서 마지막 열 변수를 조절 변수(control variable)를 사용하여 표를 만든다.
table(tidy_dp_df) ### dp를 조절 변수로 하여 table을 만듬
table(tidy_dp_df$victim, tidy_dp_df$dp, tidy_dp_df$def) ### def를 조절 변수로 하여 table을 만듬
def를 조절 변수로 하여 table을 만든 경우
처음에는 빈도가 있는 data.frame이 쉬울 것 같다고 생각했는데 함수로 쉽게 만들 수 없었다. 대안으로 함수를 사용하여 주변부 표(marginal table)을 쉽게 확인할 수 있다. formula 형태로 table을 구성할 수 있는데 일반적으로 "빈도 ~ 변수1 + 변수2 + 조절 변수" 의 형태이다.
xtabs(freq ~ victim + dp + def, data=tidy_dp_df)
xtabs 함수를 사용하여 def를 조절 변수로 하여 table을 만든 경우