Используя смоделированный набор данных, где пропорции более или менее равны среди БП и профессий:
set.seed(111)
DFD = data.frame(jobcode = sample(c("Doctor","Engineer","Student"),10000,replace=TRUE),
bp_Category = sample(c("low_BP","Medium_BP","High_BP"),10000,replace=TRUE)
)
Поскольку это моделируется при нулевом значении, вы видите, что это примерно 33% для всех:
tabDFD <- with(DFD, table(DFD$bp_Category,DFD$jobcode))
tabLE<-table(DFD$bp_Category,DFD$jobcode)
prop.table(tabLE,2)*100
Doctor Engineer Student
High_BP 32.81156 33.89058 32.96930
low_BP 33.68453 32.73556 33.82527
Medium_BP 33.50391 33.37386 33.20543
Мы можем выполнить тест хи-квадрат для каждой строки, но нам нужно знать ожидаемые пропорции доктора, инженера, студента, поэтому мы получим следующее:
probs = colSums(tabLE)/sum(tabLE)
И затем для каждого Строка, мы проверяем, насколько каждая клетка отклоняется от того, что мы ожидаем:
library(broom)
library(purrr)
results = split(as.matrix(tabLE),rownames(tabLE)) %>%
map_dfr(~tidy(chisq.test(.x,p=probs)),.id="BP")
results
# A tibble: 3 x 5
BP statistic p.value parameter method
<chr> <dbl> <dbl> <dbl> <chr>
1 High_BP 0.676 0.713 2 Chi-squared test for given probabilities
2 low_BP 0.697 0.706 2 Chi-squared test for given probabilities
3 Medium_BP 0.0451 0.978 2 Chi-squared test for given probabilities