R Markdown

Limpeza do banco de dados

Importante: Lembre-se que a primeira coisa é importar seu banco de dados.

Os pacotes dplyr, tidyverse, gt, janitor, rstatix serão carregados para realizar a análise de interesse.

library(dplyr)
library(tidyverse)
library(gt)
library(janitor)
library(rstatix)

Exploração inicial das variáveis categóricas.

table_sexo <- bd %>% tabyl(SEXO...5) %>%
  adorn_totals(where = "row") %>% 
  adorn_pct_formatting(digits = 2)
table_sexo
table_prof <- bd %>% tabyl(PROFISS) %>%
  adorn_totals(where = "row") %>% 
  adorn_pct_formatting(digits = 2)
table_prof
table_estmar <- bd %>% tabyl(ESTMAR) %>%
  adorn_totals(where = "row") %>% 
  adorn_pct_formatting(digits = 2)
table_estmar

Como você pode ver, as variáveis precisam ser recodificadas para serem analisadas.

Recodificação das variáveis categóricas

#Recodificação de variaveis
#Sexo
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == "feminino", 2)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == "femenino", 2)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == "Femenino", 2)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == "FEMININO", 2)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == "MACULINO", 1)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == "masculino", 1)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == "Masculino", 1)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == 1, 1)
bd$"SexoCat" <- replace(bd$SexoCat, bd$SEXO...5 == 2, 2)
bd$"SexoCat" <- factor(bd$"SexoCat", labels = c("masculino", "femenino"))

#Estado marital
bd$"EstadoMar" <- bd$ESTMAR
bd$"EstadoMar" <- replace(bd$EstadoMar, bd$EstadoMar == "Casado", 1)
bd$"EstadoMar" <- replace(bd$EstadoMar, bd$EstadoMar == "Divorciado", 2)
bd$"EstadoMar" <- replace(bd$EstadoMar, bd$EstadoMar == "Solteiro", 6)
bd$"EstadoMar" <- factor(bd$"EstadoMar", labels = c("casado/a", "divorciado/a", "desquitado/a", 
                                                    "separado/a", "viúvo/a", "solteiro/a"))

#Profissão
bd$"Profiss" <- bd$PROFISS
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == 1, NA)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == 2, NA)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == 3, NA)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == 5, NA)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "biologicas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "Biologicas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "BIOLOGICAS", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "biológicas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "Biológicas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "exactas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "exatas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "Exatas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "EXATAS", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "excatas", 1)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "humanas", 2)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "Humanas", 2)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "HUMANAS", 2)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "outras", 3)
bd$"Profiss" <- replace(bd$Profiss, bd$Profiss == "outros", 3)
bd$"Profiss" <- factor(bd$Profiss, labels = c("exatas", "humanas", "outras"))

Exploração inicial das variáveis numéricas.

table_num <- bd %>% 
  get_summary_stats(IDADE, ESCOL, type = "full",
                    show = c("n", "min", "max", "median", "mean", "sd")) 
table_num
table_num1 <- bd %>% 
  get_summary_stats(PESO, ESTATURA, IMC, type = "full",
                    show = c("n", "min", "max", "median", "mean", "sd")) 
table_num1
table_num2 <- bd %>% 
  get_summary_stats(Q1, Q2, Q3, Q4, Q5, Q6, type = "full",
                    show = c("n", "min", "max", "median", "mean", "sd")) 
table_num2

Novamente, como pode ser visto, algumas variáveis, como idade ou escolaridade, precisam ser recodificadas porque alguns de seus valores estão fora das faixas esperadas (18 a 49 anos para idade e mais de 25 anos para escolaridade). Da mesma forma, a variável idade e a variável IMC possuem muitos decimais, portanto também serão corrigidas. Também a variável Q6 (de qualidade de vida) possui um valor (o número 6) fora de sua faixa estabelecida (1 a 5), portanto será corrigida (o valor 6 será transformado em dados faltantes (NA)).

Recodificação das variáveis numéricas.

bd$"Idade" <- bd$IDADE
bd$"Idade" <- replace(bd$Idade, bd$Idade < 18 | bd$Idade > 49, NA)
bd$"Idade" <- round(bd$Idade, digits = 0)

bd$"Escol" <- bd$ESCOL
bd$"Escol" <- replace(bd$Escol, bd$Escol > 25, NA)

bd$"Peso" <- bd$PESO

bd$"Estatura" <- bd$ESTATURA

bd$"Imc" <- bd$IMC
bd$"Imc" <- round(bd$Imc, digits = 2)

As variáveis Q2, Q5 e Q6 possuem lógica oposta às variáveis Q1, Q3 e Q4, então serão criadas 3 novas variáveis (a partir delas) para que as seis variáveis concordem. Seguindo o seguinte modelo: Q2n = 6 - Q2; Q5n = 6 - Q5; e Q6n = 6 - Q6.

#Transfrmação variável Q6 
bd$"Q6" <- replace(bd$Q6, bd$Q6 > 5, NA)

#Criação de novas variaveis
bd$"Q2n" <- 6 - bd$Q2
bd$"Q5n" <- 6 - bd$Q5
bd$"Q6n" <- 6 - bd$Q6

A qualidade de vida do acompanhante será calculada somando os valores de cada uma das seis variáveis incluídas no questionário.

bd$"Escore" <- bd$Q1 + bd$Q2n + bd$Q3 + bd$Q4 + bd$Q5n + bd$Q6n

Para a análise, um novo banco de dados é criado contendo as novas variáveis e as variáveis recodificadas. Além disso, são eliminados os casos em que foram encontrados valores ausentes em qualquer uma das 6 questões relacionadas à qualidade de vida (o banco de dados passou de 103 casos para 90 casos).

#Novo banco de dados (sem NA em variaveis de qualidade de vida)
bd1 <- bd %>% select(Idade, Escol, Peso, Estatura, Imc, SexoCat, EstadoMar, Profiss, Q1, Q2n, Q3, 
                     Q4, Q5n, Q6n, Escore) %>% 
  filter(Q6n > 0 | Q6n < 6 )

#Análise descritiva

Variaveis categóricas

#novas tabelas
table_sexo <- bd1 %>% tabyl(SexoCat) %>%
  adorn_totals(where = "row") %>% 
  adorn_pct_formatting(digits = 2)
table_sexo
table_estmar <- bd1 %>% tabyl(EstadoMar) %>%
  adorn_totals(where = "row") %>% 
  adorn_pct_formatting(digits = 2)
table_estmar
table_prof <- bd1 %>% tabyl(Profiss) %>%
  adorn_totals(where = "row") %>% 
  adorn_pct_formatting(digits = 2)
table_prof

Gráficos

#Gráfico de barras
#Sexo
barplot(count_sexo, main = "Gráfico de barras da variável sexo", xlab = "Sexo", ylab = "%", 
        las = 1, names.arg = c("Masculino", "Femenino"), col = "red")

#Estado Marital
barplot(count_estmar, main = "Gráfico de barras da variável estado marital", xlab = "Estado Marital", ylab = "%", las = 1, names.arg = c("Casado", "Divorci", "Desqui", "Separado",
                                           "Viúvo", "Solteiro"), col = "red")

#Profissão
barplot(count_prof, main = "Gráfico de barras da variável profissão", xlab = "Profissão", 
        ylab = "%", las = 1, names.arg = c("Exactas", "Humanas", "Outras"), col = "red")

Como se vê, a proporção de homens e mulheres é quase igual (51,11% vs. 48,89%). Em relação ao estado civil, a maioria das pessoas indica ser casada ou solteira (38,89% vs. 33,33%), no meio de ambas as categorias estão divorciados, solteiros, viúvos ou separados (em proporções semelhantes).Por fim, mais ou menos metade das pessoas (51,76%) indicou ter uma profissão dentro das ciências exatas, 29,41% dentro das humanidades e 18,82% outra.

Variaveis numéricas

#Novo resumo
table_num <- bd1 %>% 
  get_summary_stats(Idade, Escol, type = "full",
                    show = c("n", "min", "max", "median", "mean", "sd")) 
table_num
table_num1 <- bd1 %>% 
  get_summary_stats(Peso, Estatura, Imc, type = "full",
                    show = c("n", "min", "max", "median", "mean", "sd"))
table_num1
table_num2 <- bd1 %>% 
  get_summary_stats(Q1, Q2n, Q3, Q4, Q5n, Q6n, Escore, type = "full",
                    show = c("n", "min", "max", "median", "mean", "sd")) 
table_num2

Gráficos (histogramas)

hist(bd1$Idade, col = "green", main = "Histograma: Idade", 
     xlab = "Anos", ylab = "Frequência")

hist(bd1$Escol, col = "green", main = "Histograma: Escolaridade (em anos)", 
     xlab = "Anos de escolaridade", ylab = "Frequência")

hist(bd$Peso, col = "green", main = "Histograma: Peso (em quilogramas)", 
     xlab = "Quilogramas", ylab = "Frequência")

hist(bd1$Estatura, col = "green", main = "Histograma: Estatura (em metros)", 
     xlab = "Metros", ylab = "Frequência")

hist(bd1$Imc, col = "green", main = "Histograma: IMC", 
     xlab = "IMC", ylab = "Frequência")

hist(bd1$Escore, col = "green", main = "Histograma: Escore Qualidade de Vida", 
     xlab = "Escore", ylab = "Frequência")

No caso da variável idade, há 26 dados faltantes (NA), a variável tem uma amplitude de 30 anos (idade máxima menos idade mínima), média de 32,80 anos (mediana de 32 anos) e desvio padrão de 7,91 anos. No caso da variável escolaridad, há 6 dados faltantes (NA), a variável tem uma amplitude de 24 anos, média de 13,10 anos (mediana de 12,50 anos) e desvio padrão de 5,40 anos. No caso da variável peso, a variável tem uma amplitude de 85 quilos (valor mínimo de 30 quilos e valor máximo de 115 quilos), uma média de 69,9 quilos (mediana de 70,60 quilos) e desvio padrão de 17,30 quilos. No caso da variável estatura, a variável tem uma amplitude de 0,66 metros (valor mínimo de 1,29 metros e valor máximo de 1,95 metros), uma média de 1,66 metros (mediana de 1,67 quilos) e desvio padrão de 0,113 metros. No caso da variável IMC, a variável tem uma amplitude de 40 (valor mínimo de 14,70 e valor máximo de 54,70), uma média de 25,10 (mediana de 24,50) e desvio padrão de 5,66. Finalmente, no caso da variável do escore de qualidade de vida, a variável tem uma amplitude 20 puntos (valor mínimo de 8 puntos e valor máximo de 28 puntos), uma média de 18 puntos (uma mediana de 17,50) e um desvio padraão de 3,80 puntos.

Para conhecer o tipo de distribuição apresentada pelas variáveis numéricas (normal ou não), devem ser executados testes de normalidade. O que deve ser feito em outro momento

Tabelas 2x2 (com a variável de sexo nas colunas)

Para a variável idade, primeiro será criada uma nova variável que categoriza seus valores e em seguida será criada uma tabela 2x2 com a variável sexo.

#Edad categórica
bd1$"IdadeCat" <- replace(bd1$IdadeCat, bd1$Idade > 17 & bd1$Idade < 20, 1)
bd1$"IdadeCat" <- replace(bd1$IdadeCat, bd1$Idade > 19 & bd1$Idade < 31, 2)
bd1$"IdadeCat" <- replace(bd1$IdadeCat, bd1$Idade > 30 & bd1$Idade < 41, 3)
bd1$"IdadeCat" <- replace(bd1$IdadeCat, bd1$Idade > 40 & bd1$Idade < 50, 4)
bd1$"IdadeCat" <- factor(bd1$IdadeCat, labels = c("18 a 19", "20 a 30", "31 a 40", "41 a 49"))

#Tabelas 2x2
bd1 %>% tabyl(IdadeCat, SexoCat, show_na = FALSE) %>% 
  adorn_percentages(denominator = "row") %>% 
  adorn_pct_formatting(digits = 2) %>% 
  adorn_title(row_name = "Idade Categórica",
              col_name = "Sexo",
              placement = "combined") %>% 
  flextable::flextable() %>% 
  flextable::autofit()
#26 dados faltantes (NA)

bd1 %>% tabyl(EstadoMar, SexoCat) %>% 
  adorn_percentages(denominator = "row") %>% 
  adorn_pct_formatting(digits = 2) %>% 
  adorn_title(row_name = "Estado Marital",
              col_name = "Sexo",
              placement = "combined") %>% 
  flextable::flextable() %>% 
  flextable::autofit()
bd1 %>% tabyl(Profiss, SexoCat, show_na = FALSE) %>% 
  adorn_percentages(denominator = "row") %>% 
  adorn_pct_formatting(digits = 2) %>% 
  adorn_title(row_name = "Profissão",
              col_name = "Sexo",
              placement = "combined") %>% 
  flextable::flextable() %>% 
  flextable::autofit()
#5 dados faltantes (NA)

No caso da idade categórica, há certa diferença entre os sexos nas faixas que vão de 31 a 40 anos e de 41 a 49 anos. Em relação ao estado marital, as proporções entre os sexos são semelhantes nos casos de casados e solteiros. Não é assim para as outras categorias. Uma proporção maior (quase 1 a 3) de pessoas de sexo femenino relata ser divorciada ou viúva. Situação que se repete (1 a 3) para as pessoas de sexo masculino quanto à situação de separados e desquitados. Em relação à profissão, as pessoas do sexo feminino tem mais presença nas profissões exatas e humanas, enquanto as pessoas do sexo masculino o tem em a categoría outras.

Médias das variáveis numéricas por sexo

bd1 %>% 
  group_by(SexoCat) %>% 
  summarize(Peso_média = mean(Peso), Estatura_média = mean(Estatura), IMC_média = mean(Imc))
bd1 %>% 
  group_by(SexoCat) %>% 
  summarize(Q1_média = mean(Q1), Q2n_média = mean(Q2n), Q3_média = mean(Q3), Q4_média = mean(Q4),
            Q5n_média = mean(Q5n), Q6n_média = mean(Q6n), Escore_média = mean(Escore))

Ao comparar as médias por sexo, observa-se que as pessoas do sexo masculino, em média, apresenta maior peso, estatura e IMC que as pessoas do sexo femenino. Em relação às variáveis de qualidade de vida, pelo contrário, observa-se que as pessoas do sexo feminino apresentam, em média, valores mais elevados (exceto a variável Q4). Isso também se reflete no escore final de qualidade de vida (uma média de 18,6 para um de 17,4).