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()
Idade Categórica/Sexo | masculino | femenino |
18 a 19 | 0.00% | 100.00% |
20 a 30 | 52.00% | 48.00% |
31 a 40 | 54.17% | 45.83% |
41 a 49 | 57.14% | 42.86% |
#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()
Estado Marital/Sexo | masculino | femenino |
casado/a | 51.43% | 48.57% |
divorciado/a | 22.22% | 77.78% |
desquitado/a | 75.00% | 25.00% |
separado/a | 80.00% | 20.00% |
viúvo/a | 28.57% | 71.43% |
solteiro/a | 56.67% | 43.33% |
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()
Profissão/Sexo | masculino | femenino |
exatas | 47.73% | 52.27% |
humanas | 40.00% | 60.00% |
outras | 62.50% | 37.50% |
#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).