Como tornar uma regressão binomial mais rápida "Bid Data"?

Estou usando a base de dados do Sistema de Informações de Nascidos Vivos (SINASC) com 2.4 milhões de linhas. Quando rodo um modelo binomial avaliando a qualidade (variável dicotômica 0 ou 1) do pré-natal por estados (27 possibilidades de UF), o tempo para rodar é gigantesco (mais de 20 minutos e não tive paciencia para esperar terminar).

Vocês tem alguma sugestão para acelar este processo? Estou pensando em pegar uma amostra aleatoria de 10.000 nascidos vivos por estados ou de 10% dos nascidos vidos por UF e rodar. Imagino que como a amostra é aleatória, em tese terei resultados semelhantes.

Existiria algum pacote ou técnica para acelerar isso?

Olá pessoal. Encontrei esta solução aqui: r - How to speed up glm in bigdata? - Stack Overflow

Usei o código assim:

dados_uf ← dados |>
group_by(Nome_UF) |>
summarise(n = n(), k = sum(as.integer(as.character(pn_7_ou_mais_no_tempo))))

reg ← glm(formula = cbind(k, n-k) ~ Nome_UF, family = “binomial”,
data = dados_uf |>
mutate(Nome_UF = factor(Nome_UF,
levels = ordem_uf)))

tic(“Regressão usando tbl_regressions”)
tab_reg ← gtsummary::tbl_regression(reg, exponentiate = TRUE) |>
gtsummary::add_significance_stars(hide_ci = FALSE, hide_p = T)

toc()

Regressão em apenas 1 segundo. Meu medo é ao fazer isso está perdendo muita variância dos dados já que estou fazendo uma agregação. Porém os resultados das duas regressões são exatamente os mesmo com o mesmo intervalo de confiança.

tab_reg_final_7_gr_teste

A tibble: 5 × 4

UF Proporção OR IC 95%

1 Norte 54.5 NA NA
2 Nordeste 67.1 1.7*** 1.69, 1.72
3 Centro-oeste 70.2 1.97*** 1.94, 1.99
4 Sudeste 75.1 2.53*** 2.50, 2.55
5 Sul 78.1 2.98*** 2.95, 3.01

tab_reg_final_7_gr

A tibble: 5 × 4

Grande região Proporção OR IC 95%

1 Norte 54.5 NA NA
2 Nordeste 67.1 1.7*** 1.69, 1.72
3 Centro-oeste 70.2 1.97*** 1.94, 1.99
4 Sudeste 75.1 2.53*** 2.50, 2.55
5 Sul 78.1 2.98*** 2.95, 3.01

Então posso ficar tranquilo né?