Artigo 2

Artigo 2 - Sem Filtro: Escolaridade, Renda e o Perfil Real de Quem Fuma no Brasil.

Introdução e hipótese

Quebrando estereótipos relacionados ao hábito de tabagismo, que vai ser medido pela quantidade de cigarros por dia.

Como a PNS fala sobre a estrutura social brasileira, nossas hipóteses perpassarão o campo das políticas públicas e da desigualdade estrutural.

Primeira hipótese Desigualdade de Acesso (Setor Público vs. Privado): H0 Não há diferença estatisticamente significativa na mediana de cigarros consumidos por dia entre quem tem e quem não tem plano de saúde.

H1: Indivíduos sem plano de saúde privado (I00102 = Não) apresentam um consumo diário de cigarros estatisticamente maior do que aqueles com cobertura privada. Teste de Mann-Whitney;

Segunda Hipótese: educação é um determinante social, superando até mesmo a renda na predição de comportamentos de fumante. Quanto mais anos o Estado consegue manter um indivíduo no sistema educacional, menor será a carga de tabagismo que ele desenvolverá na vida adulta.

H0: A quantidade de cigarros fumados por dia é igual em todos os níveis de instrução.

H1: Existe uma diferença significativa no consumo, com uma queda abrupta na intensidade do tabagismo a partir da conclusão do Ensino Médio.

Teste de Kruskal-Wallis

Terceira Hipótese: tabagismo atinge de forma mais pesada os grupos demográficos que já sofrem com outras exclusões históricas.

H0: O consumo diário de cigarros é estatisticamente igual entre todas as categorias de cor/raça autodeclaradas.

H1: A mediana de consumo de cigarros varia significativamente entre os grupos, sendo estatisticamente maior nas populações preta e parda (C009) em comparação à população branca.

Teste: Teste de Kruskal-Wallis

Pré-processamento de dados.

O banco de dados foi retirado https://ftp.ibge.gov.br/PNS/2019/Microdados/Dados/PNS_2019_20220525.zip

Foram selecionadas somente as variáveis:

A VARIÁVEL ALVO: P05402: Quantos cigarros a pessoa pessoa fuma por dia, variável quantitativa discreta. Removido o 99 e os NAS

C008 IDADE

P05402 QUANTOS CIGARROS

VDD004A nível de instrução

VDF004 RENDA

C009 Cor de pele

I00102 Plano de saúde

V0001 ESTADO

V0026 Situação censitária

V00291 peso amostral

TODAS ELAS FORAM REMOVIDAS AS IGNORADAS E AS NAS

# #| echo: true
# bd1 = pns2019 |>
#   select(UPA_PNS, V0024, P05402, P050, C008, VDD004A, VDF004, C009, I00102, V0001, V0026, V00291) |>
#     filter(P05402 < 99, P050 < 9, C009 < 9, I00102 < 9) |>
#     drop_na()
# 
# write_csv(bd1, "pns2019final.csv")
## EU COMENTEI ISSO PQ NÃO DÁ PRA COLOCAR O BANCO DE DADOS ORIGINAL NO GITHUB ENTÃO NÃO DÁ PRA RODAR ESSE GRÁFICO NO RPUBS

O banco de dados pré amostragem foi para o github

bd1 = read_csv("https://raw.githubusercontent.com/renatobarreira/artigotabagismo/refs/heads/main/pns2019final.csv")

AMOSTRAGEM

Como a PNS não entrevista todos os brasileiros, o IBGE atribui “pesos” para garantir que, por exemplo, um jovem entrevistado no interior do Acre represente “X” mil jovens parecidos com ele na população real.

NA DÚVIDA, JOGUEM NO NOTEBOOKLM E PERGUNTEM OQ EU TO FAZENDO E PEÇA A REFERÊNCIA.

cap. 2 do Statistical para social sciences do Agresti

Lumley, T. (2004). Analysis of Complex Survey Samples. Journal of Statistical Software, 9(8), 1–19. https://doi.org/10.18637/jss.v009.i08

LUMLEY, T. Complex surveys: a guide to analysis using R. Hoboken: John Wiley & Sons, 2010.

Variáveis de amostragem UPA_PNS, Estado V0024, V00291 PESO de acordo com a referência oficial do STOPA, S. R. et al. Pesquisa Nacional de Saúde 2019: histórico, métodos e perspectivas. Epidemiologia e Serviços de Saúde, Brasília, v. 29, n. 5, e2020315, 2020. DOI: 10.1590/S1679-4974202000

options(survey.lonely.psu = "adjust")

bd1_svy = svydesign(
  ids = ~UPA_PNS,          #nidades Primárias de Amostragem (UPA)
  strata = ~V0024,         #Estratificação
  weights = ~V00291,       #peso calibrado correto dometado
  data = bd1,              #bd1 bd1 aquele do github
  nest = TRUE              #sei lá só sei q tá assim
)

Esse é o banco de dados que vamos usar agora, o banco de dados com os pesos da monstragem.

Análise exploratória

ggplot(bd1, aes(x = factor(P05402))) +
  geom_bar(fill = "steelblue") +
  labs(
    title = "Quantos cigarros a pessoa fuma",
    x = "Quantidade de cigarros",
    y = "Quantidade"
  ) +
  theme_minimal()

bd1 |>
  mutate(faixa_idade = case_when(
    C008 >= 18 & C008 <= 24 ~ "18-24",
    C008 >= 25 & C008 <= 34 ~ "25-34",
    C008 >= 35 & C008 <= 44 ~ "35-44",
    C008 >= 45 & C008 <= 54 ~ "45-54",
    C008 >= 55 & C008 <= 64 ~ "55-64",
    C008 >= 65 & C008 <= 74 ~ "65-74",
    C008 >= 75 ~ "75+"
  )) |>
  
  filter(!is.na(faixa_idade) & !is.na(P05402) & !is.na(V00291)) |> 
  
  
  ggplot(aes(x = faixa_idade, y = P05402, fill = faixa_idade, weight = V00291)) +
  geom_boxplot(
    alpha = 0.7,
    outlier.color = "red",  # Ajuda a identificar os extremos de cada década
    outlier.alpha = 0.5
  ) +
  labs(
    title = "Consumo Diário de Cigarros por Faixa Etária Detalhada",
    subtitle = "Estimativa populacional utilizando os pesos amostrais (PNS 2019)",
    x = "Faixa Etária (Anos)", 
    y = "Cigarros por dia"
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",
    # Inclina as legendas do eixo X em 45º para facilitar a leitura
    axis.text.x = element_text(angle = 45, hjust = 1) 
  )

bd1 |>
  filter(!is.na(VDD004A) & !is.na(P05402) & !is.na(V00291)) |>
  mutate(escolaridade = factor(
    VDD004A, 
    levels = 1:7, 
    labels = c("Sem instrução", "Fund. Inc.", "Fund. Comp.", "Médio Inc.", "Médio Comp.", "Sup. Inc.", "Sup. Comp.")
  )) |>
  
  ggplot(aes(x = escolaridade, y = P05402, fill = escolaridade, weight = V00291)) +
  geom_boxplot(alpha = 0.7, outlier.color = "red", outlier.alpha = 0.5) +
  labs(
    title = "Distribuição do Consumo de Cigarros por Escolaridade (Ponderado)",
    x = "Nível de Instrução",
    y = "Cigarros fumados por dia"
  ) +
  theme_minimal() +
  theme(legend.position = "none", axis.text.x = element_text(angle = 45, hjust = 1))

bd1 |>
  filter(!is.na(VDF004) & !is.na(P05402) & !is.na(V00291)) |>
  
  
  mutate(renda_categorias = factor(
    VDF004, 
    levels = 1:7, 
    labels = c(
      "Até 1/4 SM", 
      "1/4 a 1/2 SM", 
      "1/2 a 1 SM", 
      "1 a 2 SM", 
      "2 a 3 SM", 
      "3 a 5 SM", 
      "Mais de 5 SM"
    )
  )) |>
  
  
  ggplot(aes(x = renda_categorias, y = P05402, fill = renda_categorias, weight = V00291)) +
  geom_boxplot(
    alpha = 0.7, 
    outlier.color = "red", 
    outlier.alpha = 0.5
  ) +
  labs(
    title = "Distribuição do Consumo de Cigarros por Faixa de Renda",
    subtitle = "Estimativa populacional utilizando os pesos amostrais (PNS 2019)",
    x = "Renda Domiciliar Per Capita (Salários Mínimos - SM)",
    y = "Cigarros fumados por dia"
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1, size = 10)
  )

bd1 |>
  filter(!is.na(V0026) & !is.na(P05402) & !is.na(V00291)) |>
  
  mutate(situacao_domicilio = factor(
    V0026, 
    levels = c(1, 2), 
    labels = c("Urbano", "Rural")
  )) |>
  
  
  ggplot(aes(x = situacao_domicilio, y = P05402, fill = situacao_domicilio, weight = V00291)) +
  geom_boxplot(
    alpha = 0.7, 
    outlier.color = "red", 
    outlier.alpha = 0.5
  ) +
  
  
  scale_fill_manual(values = c("Urbano" = "slategray", "Rural" = "darkseagreen")) +
  
  labs(
    title = "Consumo Diário de Cigarros: Urbano vs. Rural",
    subtitle = "Estimativa populacional utilizando os pesos amostrais (PNS 2019)",
    x = "Situação do Domicílio (V0026)",
    y = "Cigarros fumados por dia (P05402)"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

bd1 |>
  filter(!is.na(C009) & !is.na(P05402) & !is.na(V00291)) |>
  
  
  mutate(cor_raca = factor(
    C009, 
    levels = 1:5, 
    labels = c("Branca", "Preta", "Amarela", "Parda", "Indígena")
  )) |>
  
  
  ggplot(aes(x = cor_raca, y = P05402, fill = cor_raca, weight = V00291)) +
  geom_boxplot(
    alpha = 0.7, 
    outlier.color = "red", 
    outlier.alpha = 0.5
  ) +
  
  scale_fill_brewer(palette = "Set2") +
  
  labs(
    title = "Distribuição do Consumo de Cigarros por Cor/Raça",
    subtitle = "Estimativa populacional utilizando os pesos amostrais (PNS 2019)",
    x = "Cor ou Raça autodeclarada (C009)",
    y = "Cigarros fumados por dia (P05402)"
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1, size = 11)
  )

bd1 |>
  filter(!is.na(I00102) & !is.na(P05402) & !is.na(V00291)) |>
  
  mutate(plano_saude = factor(
    I00102, 
    levels = c(1, 2), 
    labels = c("Sim", "Não")
  )) |>
  
  ggplot(aes(x = plano_saude, y = P05402, fill = plano_saude, weight = V00291)) +
  geom_boxplot(
    alpha = 0.7, 
    outlier.color = "darkred", 
    outlier.alpha = 0.5
  ) +
  scale_fill_manual(values = c("Sim" = "steelblue", "Não" = "indianred")) +
  
  labs(
    title = "Consumo de Cigarros: Cobertura de Plano de Saúde",
    subtitle = "Estimativa populacional utilizando os pesos amostrais (PNS 2019)",
    x = "Possui plano de saúde médico particular/empresa? (I00102)",
    y = "Cigarros fumados por dia (P05402)"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

TESTE DE HIPÓTESES

Referências:

Para os testes não paramétricos, além do livro do Agresti dá pra usar o

SIEGEL, S.; CASTELLAN JR., N. J. Estatística não-paramétrica para ciências do comportamento. 2. ed. Porto Alegre: Artmed, 2006.

WILCOXON–MANN–WHITNEY TEST pg. 201 do Statistical Methodsfor theSocial Sciences

Teste de Kruskal-Wallis (a versão não-paramétrica da ANOVA) idem pg. 362.

Os testes dizem se há diferença, mas não dizem qual é a diferença real em números. Por isso eu fiz tb a estimativa para vocês interpretarem.

Primeiro teste Plano de Saúde:

Testar se a quantidade de cigarros diários difere significativamente entre quem tem e quem não tem plano de saúde privado.

teste_plano = svyranktest(
  formula = P05402 ~ I00102, 
  design = bd1_svy, 
  test = "wilcoxon"
)

print(teste_plano)

    Design-based KruskalWallis test

data:  P05402 ~ I00102
t = -0.94228, df = 3935, p-value = 0.3461
alternative hypothesis: true difference in mean rank score is not equal to 0
sample estimates:
difference in mean rank score 
                   -0.0137362 

Segundo teste Hipótese 2: Nível de Escolaridade (7 Grupos)

teste_escolaridade = svyranktest(
  formula = P05402 ~ VDD004A, 
  design = bd1_svy, 
  test = "KruskalWallis"
)


print(teste_escolaridade)

    Design-based KruskalWallis test

data:  P05402 ~ VDD004A
df = 6, Chisq = 5.9261, p-value = 0.4317
estimativas_escola = svyby(~P05402, by = ~VDD004A, design = bd1_svy, FUN = svymean, na.rm = TRUE)
print(estimativas_escola)
  VDD004A   P05402        se
1       1 12.73353 0.6577105
2       2 13.70709 0.3496738
3       3 12.65857 0.6184878
4       4 12.77479 0.9798328
5       5 13.11418 0.3563726
6       6 13.88353 1.0775570
7       7 12.32559 0.5237731

Terceiro teste: Cor/Raça (5 Grupos)

teste_raca = svyranktest(
  formula = P05402 ~ C009, 
  design = bd1_svy, 
  test = "KruskalWallis"
)

# Exibe o resultado no console
print(teste_raca)

    Design-based KruskalWallis test

data:  P05402 ~ C009
df = 4, Chisq = 25.67, p-value = 3.822e-05
estimativas_raca = svyby(~P05402, by = ~C009, design = bd1_svy, FUN = svymean, na.rm = TRUE)
print(estimativas_raca)
  C009   P05402        se
1    1 14.13265 0.3169038
2    2 12.44021 0.4547649
3    3 15.24367 2.6940833
4    4 12.43599 0.3042334
5    5 11.14804 2.0917019