Automatice Chi-square en categorías y columnas

Tengo un marco de datos de encuesta que contiene varias preguntas (columnas) codificadas como 1 = de acuerdo / 0 = en desacuerdo. Los encuestados (filas) se clasifican según las métricas "edad" ("joven", "medio", "viejo"), "región" ("Este", "Medio", "Oeste"), etc. Hay alrededor de 30 categorías en total (3 edades, 3 regiones, 2 géneros, 11 ocupaciones, etc.). Dentro de cada métrica, las categorías no se superponen y son de diferentes tamaños.

Esto simula una versión reducida del conjunto de datos:

n<-400
set.seed(1)
data<-data.frame(age=sample(c('young','middle','old'),n,replace=T),region=sample(c('East','Mid','West'),n,replace=T),gender=sample(c('M','F'),n,replace=T),Q15a=sample(c(0,1),n,replace=T),Q15b=sample(c(0,1),n,replace=T))

Puedo usar Chi-cuadrado para probar si las respuestas en, por ejemplo, Occidente difieren significativamente de la muestra total, para Q15a, con:

attach(data)
chisq.test(table(subset(data,region=='West')$Q15a),p=table(Q15a),rescale.p=T)

Quiero probar todas las categorías contra la muestra total para Q15a, y luego para ~ 20 otras preguntas. Como hay alrededor de 30 pruebas por pregunta, quiero encontrar una manera (eficiente o no) de automatizar esto, pero estoy luchando para ver cómo hacer que R lo haga por sí mismo o cómo escribir un ciclo para recorrer las categorías. He buscado [1] y me desvié en las pruebas de comparación por pares con pairwise.prop.test (), pero aún no he encontrado nada que realmente responda a esto.

[1] preguntas similares pero no duplicadas (ambas son pruebas de columnas):

Usando bucles para hacer la prueba de Chi-cuadrado en R

Análisis de Chi cuadrado usando for loop en R

Respuestas a la pregunta(2)

Su respuesta a la pregunta