= 75
peso
peso
NUT 105 Bioestatística – Limpeza de Dados e Classificação de Variáveis
Objetivo da Aula
Compreender o funcionamento do R e do RStudio, realizar operações básicas, importar dados e obter estatísticas iniciais.
1. O que é o R e o RStudio?
- R: linguagem de programação para análise estatística.
- RStudio: ambiente gráfico que facilita o uso do R.
2. Conhecendo o RStudio
- Console: onde comandos são executados.
- Script: onde você escreve e salva códigos.
- Environment: mostra objetos (como vetores e data frames).
- Files/Plots/Packages/Help: arquivos, gráficos e ajuda.
Figura 2.1. – Interface do RStudio
2.1 Editor / Script
Na aba Script (editor), podemos escrever e editar os códigos de programação necessários.Vamos começar escrevendo, na seção Script, o pequeno código abaixo:
Figura 2.1.1. – Interface do R Studio
2.2. Como compilar os códigos no R Studio?
A execução de uma linha de código no Script (Editor) pode ser feita de duas maneiras. Uma delas é utilizando um dos seguintes atalhos:
Ctrl + Enter
ou
Ctrl + R
A outra opção é utilizar o botão , posicionado à direita na aba Editor.
Ao executar as linhas do código de programação deve-se posicionar o cursor em qualquer posição da linha (Figura 2.2.1). A execução e leitura dos comandos implementados é realizada pelo R linha por linha.
Figura 2.2.1 – Cursor em diferentes posicionamentos
Figura a – Cursor fixado no início da linha a ser executada.
Figura b – Cursor fixado no centro da linha a ser executada.
Execute o código utilizando uma das duas opções mencionadas na Seção 2.2 e verifique se a saída é semelhante à apresentada na Figura 2.1.3.
Figura 2.2.3. – Interface do R Studio após execução dos códigos.
Para compilar todo ou parte do código de uma única vez basta selecionar a parte desejada e executá-la com Ctrl + Enter ou pelo
Figura 2.2.4. – Compilando um bloco de códigos.
2.3. Como salvar o Script?
Após digitar seus códigos no editor, é fundamental salvar o Script para evitar a perda de informações. O salvamento pode ser feito de duas formas:
Clicando no botão na parte superior do editor.
Utilizando o atalho Ctrl + S.
Crie uma pasta para a disciplina no diretório de sua preferência, após isso, salve seu Script com um nome simples e significativo, como aula_1.R (Figura 2.3.1). O arquivo será armazenado com a extensão .R e pode ser reutilizado em outras aulas ou projetos.
Figura 2.3.1. – Salvando o Script
3. Console e Environment
Após a compilação do código anterior as abas Console e Environment apresentam as seguintes informações:
Figura 3.1. – Resultados no Console.
Console: apresenta o resultado dos comandos executados.
Environment: exibe os nomes e os respectivos valores das variáveis criadas.
A cor azul do texto exibido no Console após a execução do código indica que a compilação foi realizada com sucesso e que os resultados estão sendo apresentados sem erros.
4. Primeiros Comandos : Operações matemáticas.
Neste momento, é interessante pensarmos no softawre R como uma simples calculadora.
Figura 4.1. – Calculadora R.
A tabela 4.1 apresenta os comandos em linguagem R para as operações matemáticas básicas.
Tabela 4.1 – Operações Matemáticas Básicas no R
Operação | Comando em R | Exemplo | Resultado |
---|---|---|---|
Soma | + |
2 + 2 |
4 |
Subtração | - |
10 - 4 |
6 |
Multiplicação | * |
5 * 3 |
15 |
Divisão | / |
20 / 5 |
4 |
Potência | ^ |
2^3 |
8 |
Raiz quadrada | sqrt() |
sqrt(25) |
5 |
Logaritmo | log() |
log(100) |
4.6052 |
2 + 2 # Soma
[1] 4
10 - 4 # Subtração
[1] 6
5 * 3 # Multiplicação
[1] 15
20 / 5 # Divisão
[1] 4
2^3 # Potência
[1] 8
sqrt(25) # Raiz quadrada
[1] 5
log(100) # Logaritmo
[1] 4.60517
Durante a anamnese nutricional, são coletadas informações como peso, estatura, idade e medidas corporais da paciente Ana Beatriz (Figura 4.2). A seguir, mostramos como tais dados podem ser organizados e utilizados no R para calcular os principais indicadores antropométricos e energéticos: IMC, RCQ, TMB,GET e ingestão calórica baseada no recordatório de 24h.
Figura 4.1. Informações antropométricas da paciente.
A seguir, na Tabela 4.2, estão descritas as fórmulas utilizadas para o cálculo dos indicadores mencionados, bem como suas respectivas fontes bibliográficas.
Complementando essas informações, a Tabela 4.3 apresenta os principais fatores de atividade física utilizados para estimar o GET a partir da TMB, conforme o nível habitual de esforço do paciente (FAO/WHO/UNU ,2004).
Tabelas 4.2 e 4.3 – Indicadores e Níveis de Atividade Física
Tabela 4.2 – Medidas Antropométricas e Energéticas Utilizadas
Medida | Fórmula | Referência |
---|---|---|
IMC | $\displaystyle \frac{\text{peso (kg)}}{\text{altura (m)}^2}$ | WHO, 2000 |
RCQ | $\displaystyle \frac{\text{cintura (cm)}}{\text{quadril (cm)}}$ | WHO, 2011 |
TMB – M | $\displaystyle 10 \cdot \text{peso} + 6{,}25 \cdot \text{altura} - 5 \cdot \text{idade} + 5$ | Mifflin-St Jeor, 1990 |
TMB – F | $\displaystyle 10 \cdot \text{peso} + 6{,}25 \cdot \text{altura} - 5 \cdot \text{idade} - 161$ | Mifflin-St Jeor, 1990 |
GET | $\displaystyle \text{TMB} \cdot \text{Fator de Atividade}$ | FAO/WHO/UNU, 2001 |
Tabela 4.3 – Fatores de Atividade Física
Nível de Atividade | Fator | Descrição |
---|---|---|
Sedentário | 1.2 | Pouca ou nenhuma atividade física |
Levemente ativo | 1.375 – 1.5 | Atividades leves como caminhar devagar ou tarefas domésticas |
Moderadamente ativo | 1.55 – 1.75 | Exercício moderado diário ou trabalho fisicamente exigente |
Altamente ativo | 1.75 – 2.0 | Exercício intenso ou atividade física pesada diária |
Extremamente ativo | 2.0 – 2.4 | Atletas de elite ou treino físico intenso por várias horas |
Para realizarmos os cálculos solicitados no Exemplo 1, é necessário dispor tanto das informações registradas no prontuário da paciente quanto das fórmulas dos indicadores adotados (Figura 4.2).
Figura 4.2 – Informações antropométricas da paciente e fórmulas dos índices.
Figura a – Prontuário nutricional.
Figura b – Fórmulas dos indicadores considerados.
Em R
fazemos da seguinte forma:
# Cálculo dos indicadores.
92.4/1.51^2 # IMC
[1] 40.52454
108/120 # RCQ
[1] 0.9
10*92.4+6.25*1.51-5*33-161) # TMB_Mulher (
[1] 607.4375
607.4375*1.2 # GET
[1] 728.925
Em R
os decimais são separados por .
e nunca por ,
.
4.1 Declarando Variáveis/Objetos e Vetores
De fato, todos os cálculos até aqui foram realizados da mesma forma que seriam em uma calculadora convencional, o que pode inicialmente nos levar a não perceber vantagens imediatas no uso do R
em comparação com uma calculadora comum! No entanto, o uso do R (Figura 4.1) oferece recursos adicionais que enriquecem a prática analítica. Na seção a seguir, por exemplo, vamos ver que é possível nomear explicitamente os indicadores calculados, o que se assemelha ao raciocínio adotado em cálculos manuais ou analíticos realizados em contexto clínico (Figura 4.1.3).
4.1.1. Variáveis ou Objetos
Em R
, uma variável (também chamada de objeto) é um nome associado a uma informação, valor ou conjunto de valores. Essas informações podem ser de natureza quantitativa (como peso, idade ou altura) ou qualitativa (como nome, sexo ou categoria alimentar).
A declaração de uma variável é feita por meio de um símbolo de atribuição, que associa o nome da variável ao seu conteúdo. A notação recomendada e mais utilizada em R é <-
, embora o sinal de igual =
também seja aceito1.
Figura a – Medidas antropométricas da paciente.
# Código para cálculo em R do Índices considerados
# Medidas antropométricas - Paciente: Ana Beatriz.
<- "Ana Beatriz"
Nome <- "11/03/1987"
Nascimento <- "25/10/2023"
D_atendimento <- "F"
Sexo <- 92.4
Peso <- 1.51
Altura <- 108.0
CC <- 120.0
CQ
<- 33.0
Idade
<- "sedentaria"
NAF
<- 2933.0 IC
Para evitar possíveis erros são consideradas algumas regras para nomeação das variáveis.
Nomes de variáveis podem começar com:
Uma letra (a a z, A a Z)
Um ponto (.) (desde que não seguido de número)
Um underline
Por exemplo:
<- "João"
nome <- 25
idade2 <- 30
.media_total <- 10 total_usuarios
Nomes de variáveis que não podem:
- Começar com número
- Conter espaços
- Conter acentos ou cedilhas
- Incluir caracteres especiais (
-
,;
,%
,@
, etc.)
- Usar operadores (
*
,+
,/
, etc.) no nome
- Sobrescrever palavras reservadas da linguagem (como
if
,TRUE
,for
)
- Começar com número
Por exemplo:
2idade <- 30 # começa com número
<- 10 # contém espaço
minha variavel -do-usuario <- "ana" # hífen é interpretado como subtração
nome<- TRUE # contém acento
é_valido <- 100 # caractere especial não permitido
total% *idade <- 5 # operador não permitido no nome
media@usuario <- "joao" # símbolo especial não permitido
TRUE <- "sim" # não pode sobrescrever palavra reservada
if <- "condição" # `if` é palavra-chave da linguagem
# PascalCase
MediaIdade # camelCase (menos comum no R) mediaIdade
A impressão ou visualização das informações que as variáveis guardam podem ser acessadas compilando apenas o nome escolhido para tal variável. Acesse as informações das variáveis que acabmos de declarar copiando ou escrevendo o código abaixo:
Nome
[1] "Ana Beatriz"
Nascimento
[1] "11/03/1987"
D_atendimento
[1] "25/10/2023"
Sexo
[1] "F"
Peso
[1] 92.4
Altura
[1] 1.51
CC
[1] 108
CQ
[1] 120
Idade
[1] 33
NAF
[1] "sedentaria"
IC
[1] 2933
Mesmo quando uma variável possui o mesmo nome, escrevê-la de formas diferentes — com letras maiúsculas ou minúsculas — faz com que o R reconheça essas entradas como variáveis distintas. Se tentarmos acessar uma variação inexistente, como NoMe
,NASCIMENTO
ou PeSo
, o R
retornará um erro informando que o objeto não foi encontrado. Execute o código abaixo:
NoMe
NASCIMENTO PeSo
4.1.2. Vetores
Agora, algumas vantagens quanto ao uso dessa calculadora (Figura 4.1) começam aparecer!
Uma das principais vantagens do uso do R em comparação com uma calculadora tradicional é a sua capacidade de operar com estruturas vetoriais. Vetores são objetos que armazenam uma sequência de valores do mesmo tipo, como números, textos ou valores lógicos. São fundamentais em análises estatísticas e estão presentes em praticamente todo tipo de dado em R.
Você pode criar vetores numéricos, de texto ou lógicos usando a função c()
(de combine).
No código abaixo temos um exemplo para criação de vetores de todos os tipos (numérico, texto e lógico).
# Vetor de texto (Caracteres)
<- c("Ana", "João", "Fernanda")
nomes
# Vetor numérico
<- c(34, 45, 29)
idades
# Vetor lógico
<- c(TRUE, FALSE, TRUE) respondeu
Considere agora que, além das informações antropométricas descritas no Exemplo 1 referente à paciente Ana, também temos os dados de mais dois pacientes. Nesse caso, os vetores (também chamados de strings no caso de textos) serão fundamentais para nos ajudar a armazenar e organizar as informações referentes aos três pacientes de forma eficiente.
Construa vetores para para armazenar as informações das variáveis antropométricas dos três pacientes (Figura 4.3)
Em R
, podemos fazer assim:
# Código para cálculo em R do Índices considerados
# Medidas antropométricas dos 3 pacientes.
<- c("Ana Beatriz","João","Fernanda")
Nomes <- c("11/03/1987","19/02/1995" ,"19/02/1995")
Nascimentos <- c("25/10/2023","25/10/2023","25/10/2023")
D_atendimentos <- c("F","M","F")
Gêneros <- c(92.4,55.00 ,56.6)
Pesos <- c(1.51,55.00 ,1.72)
Alturas <- c(108.0,55.00,70)
CCs <- c(120.0,55.00,95)
CQs <- c(33.0,55.00, 28)
Idades <- c("sedentaria","moderada","moderada")
NAFs <- c(2933.0,2165.0,2165.0) ICs
<- data.frame(
pacientes Nomes = c("Ana Beatriz","João","Fernanda"),
Nascimentos = c("11/03/1987","19/02/1995" ,"19/02/1995"),
D_atendimentos = c("25/10/2023","25/10/2023","25/10/2023"),
= c("F","M","F"),
Gêneros Pesos = c(92.4,55.00 ,56.6),
Alturas = c(1.51,55.00 ,1.72),
CCs = c(108.0,55.00,70),
CQs = c(120.0,55.00,95),
Idades = c(33.0,55.00, 28),
NAFs = c("sedentaria","moderada","moderada"),
ICs = c(2933.0,2165.0,2165.0)
)
View(pacientes)
<-Pesos/(Idades)^2
IMCs IMCs
[1] 0.08484848 0.01818182 0.07219388
-Agora essa aba está fazendo sentido. trabalhar a visualização das variáveis e suas informações no Environment. -outro exemplo/exercícios Cálcular os índices para todo mundo
-acessar os elementos de um vetor (chat)
-Criar um data frame
5.2 Explorando variáveis criadas
mean(idade) # Média
sd(idade) # Desvio padrão
length(idade) # Tamanho do vetor
6. Criando um Conjunto de Dados no Próprio R
<- data.frame(
pacientes nome = c("Ana", "Carlos", "Fernanda"),
idade = c(34, 45, 29),
sexo = c("F", "M", "F"),
imc = c(22.5, 27.8, 20.3)
)
View(pacientes)
7. Definindo Pasta de Trabalho
#getwd() # Verificar pasta atual
#setwd("C:/MeuProjeto") # Definir pasta (Windows)
8. Instalando e Carregando Pacotes
# install.packages("nome_do_pacote") # Instalar o pacote
# library(nome_do_pacote) # Carregar o pacote
9. Importando Dados Reais
<- read.csv("dados.csv")
dados head(dados)
id sexo idade peso altura imc nivel_glicose colesterol atividade_fisica
1 1 F 56.7 66.4 1.50 29.5 79.4 238.9 1-2x
2 2 M 71.9 72.1 1.69 25.2 120.8 192.0 >5x
3 3 F 29.5 73.8 1.84 21.8 90.1 193.9 >5x
4 4 F 32.5 74.3 1.73 24.8 92.2 152.1 1-2x
5 5 F 65.9 48.8 1.58 19.5 81.5 147.9 Nenhuma
6 6 F 35.4 41.8 1.48 19.1 81.0 170.9 1-2x
pressao_alta diabetes suplementa_magnesio ingestao_magnesio
1 0 0 0 238.5
2 1 0 0 288.1
3 1 1 0 446.0
4 1 0 0 276.8
5 0 0 1 254.0
6 0 0 0 179.9
classificacao_magnesio
1 Moderada
2 Hipomagnesemia leve
3 Normal
4 Hipomagnesemia leve
5 Moderada
6 Grave
O arquivo de dados deverá estar salvo na mesma pasta que o Script
10. Resumo e Exploração de Dados
summary(dados$idade)
Min. 1st Qu. Median Mean 3rd Qu. Max.
19.50 36.12 47.10 46.35 55.95 76.20
table(dados$sexo)
F M
55 45
mean(dados$imc)
[1] 25.458
11. Gráficos Simples
barplot(table(dados$sexo))
hist(dados$idade)
12. Limpeza dos Dados
O processo de limpeza de dados é uma etapa fundamental para garantir a qualidade das análises estatísticas. A seguir, aplicaremos técnicas simples, porém eficientes, para tratar inconsistências, dados ausentes e erros de digitação no nosso banco de dados.
12.1 Carregando os dados
<- read.csv("dados_nut105_problema.csv")
dados View(dados)
12.2. Verificando a estrutura dos dados
str(dados)
'data.frame': 35 obs. of 10 variables:
$ Nome : chr "Ana" "Joao" "Fernanda" "Carlos" ...
$ Nascimento: chr "1987-03-11" "1990-06-22" "1985-09-15" "1987-03-11" ...
$ Sexo : chr "F" "Feminino" "M" "" ...
$ Peso : chr "92" "55" "não informado" "55" ...
$ Altura : chr "1.7" "1.68" "1.68" "1.65" ...
$ CC : int NA 95 105 NA NA 70 100 NA NA 108 ...
$ CQ : int 105 100 115 95 95 115 90 115 NA NA ...
$ Idade : chr "45" "45" "35" "40" ...
$ NAF : chr "moderada" "sedentaria" "" "alta" ...
$ IC : chr "não informado" "não informado" "2000" "2200" ...
12.3 Corrigindo inconsistências na variável Sexo
Observe que a variável Sexo contém registros como “F”, “Feminino” e “M”, além de valores ausentes (NA). Vamos padronizar esses registros.
$Sexo[dados$Sexo == "Feminino"] <- "F"
dados$Sexo[dados$Sexo == "Masculino"] <- "M"
dadosunique(dados$Sexo)
[1] "F" "M" "" "feminino" "masculino"
12.4 Corrigindo problema na variável Peso
O valor “não informado” está presente na coluna Peso e impede que ela seja tratada como numérica.
$Peso <- as.numeric(gsub("não informado", NA, dados$Peso))
dadossummary(dados$Peso)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
55.00 57.50 72.00 72.89 83.00 92.00 8
Verificando dados faltantes
colSums(is.na(dados))
Nome Nascimento Sexo Peso Altura CC CQ
0 0 0 8 0 6 8
Idade NAF IC
0 0 0
12.5 Preenchendo valores ausentes de forma simples
Para esta aula, utilizaremos estratégias simples para preencher os dados faltantes. Nas práticas profissionais, este processo pode ser mais elaborado.
$CC[is.na(dados$CC)] <- mean(dados$CC, na.rm = TRUE)
dados$CQ[is.na(dados$CQ)] <- mean(dados$CQ, na.rm = TRUE)
dados$NAF[is.na(dados$NAF)] <- "moderada"
dados
$IC <- as.numeric(gsub("não informado", NA, dados$IC))
dados$IC[is.na(dados$IC)] <- mean(dados$IC, na.rm = TRUE)
dados
summary(dados)
Nome Nascimento Sexo Peso
Length:35 Length:35 Length:35 Min. :55.00
Class :character Class :character Class :character 1st Qu.:57.50
Mode :character Mode :character Mode :character Median :72.00
Mean :72.89
3rd Qu.:83.00
Max. :92.00
NA's :8
Altura CC CQ Idade
Length:35 Min. : 70.00 Min. : 90.0 Length:35
Class :character 1st Qu.: 87.50 1st Qu.: 95.0 Class :character
Mode :character Median : 91.66 Median :103.9 Mode :character
Mean : 91.66 Mean :103.9
3rd Qu.:100.00 3rd Qu.:110.0
Max. :108.00 Max. :120.0
NAF IC
Length:35 Min. :1800
Class :character 1st Qu.:2200
Mode :character Median :2681
Mean :2681
3rd Qu.:3000
Max. :3500
##12.6 Classificando as variáveis
Após a limpeza, as variáveis podem ser classificadas em:
Qualitativas Nominais: Nome, Sexo, NAF.
Quantitativas Discretas: Idade.
Quantitativas Contínuas: Peso, Altura, CC, CQ, IC.
Datas: Nascimento, D_atendimento (armazenadas como texto, podem ser convertidas).
str(dados)
'data.frame': 35 obs. of 10 variables:
$ Nome : chr "Ana" "Joao" "Fernanda" "Carlos" ...
$ Nascimento: chr "1987-03-11" "1990-06-22" "1985-09-15" "1987-03-11" ...
$ Sexo : chr "F" "F" "M" "" ...
$ Peso : num 92 55 NA 55 92 NA 72 80 72 55 ...
$ Altura : chr "1.7" "1.68" "1.68" "1.65" ...
$ CC : num 91.7 95 105 91.7 91.7 ...
$ CQ : num 105 100 115 95 95 ...
$ Idade : chr "45" "45" "35" "40" ...
$ NAF : chr "moderada" "sedentaria" "" "alta" ...
$ IC : num 2681 2681 2000 2200 3500 ...
##12.7 Exportando o banco limpo
write.csv(dados, "dados_nut105_limpo.csv", row.names = FALSE)
Agora o conjunto de dados está preparado para análises futuras.
🔍 Discussão Crítica sobre a Limpeza de Dados
Nesta etapa, aplicamos procedimentos básicos de limpeza no conjunto de dados dados_nut105_problema.csv
. Essas intervenções foram suficientes para preparar o banco de dados para análises iniciais. Contudo, é essencial refletirmos sobre as boas práticas associadas a esse processo no contexto científico e profissional.
O que foi realizado nesta aula:
- Padronização de categorias na variável
Sexo
(ex.: “Feminino” → “F”). - Conversão de dados textuais (como
"não informado"
) em valores ausentes (NA
) nas variáveisPeso
eIC
. - Preenchimento de valores ausentes:
- Numéricas (
CC
,CQ
,IC
) → Imputação pela média. - Categórica (
NAF
) → Substituição pela categoria mais frequente (“moderada”).
- Numéricas (
Importantes:
- As técnicas adotadas são simples e introdutórias, adequadas para os objetivos didáticos desta aula.
- Na prática clínica e na pesquisa, o tratamento de dados ausentes exige uma abordagem mais criteriosa, considerando:
- O padrão de ausência (aleatório ou não).
- A proporção de dados faltantes.
- O impacto estatístico e científico nas análises.
🔍 Tabela XX – Estratégias de Tratamento de Dados Ausentes
Estratégia | Vantagens | Limitações |
---|---|---|
Substituir pela Média | Simples, rápida, mantém tamanho da amostra | Reduz variabilidade, distorce análise se há muitos faltantes |
Substituir pela Mediana | Robusta a outliers | Mesmo risco de subestimar variabilidade |
Substituir pelo Valor Mais Frequente (Moda) | Fácil para variáveis categóricas | Pode gerar viés se não for representativo |
Imputação por Regressão | Considera relações entre variáveis | Supõe relação linear, pode amplificar erros |
Imputação Múltipla | Método robusto, mantém variabilidade | Mais complexo, exige ferramentas específicas |
Exclusão de Casos | Mantém dados íntegros, sem imputações | Perda de informação, possível viés se ausência não é aleatória |
13 Estatística descritiva - (Atividade avaliativa 2)
Vamos considerar os dados da pesquisa referente a dismagnesemia
# Leitura dos dados
<- read.csv("Dados_AtividadeFinal_NUT105.csv", header = TRUE, sep = ",", dec = ".") dados_dismagnesemia
$Idade<-as.numeric(dados_dismagnesemia$Idade)
dados_dismagnesemia$Origem<-as.factor(dados_dismagnesemia$Origem)
dados_dismagnesemia$Sexo<-as.factor(dados_dismagnesemia$Sexo)
dados_dismagnesemia
<-c("Idade","Origem,Sexo") variaveis_sociodemograficas
$Idade<-as.numeric(dados_dismagnesemia$Idade)
dados_dismagnesemia$Origem<-as.factor(dados_dismagnesemia$Origem)
dados_dismagnesemia$Sexo<-as.factor(dados_dismagnesemia$Sexo)
dados_dismagnesemia
<-c("HAS","DM","AVC","IAM","IRC","IRA","Neoplasias","ICC","Asma","DPOC","Pancreatite","Etilismo" )
variaveis_comorbidades
# Transformar todas as variáveis do vetor em categoricas
<- lapply(dados_dismagnesemia[variaveis_comorbidades], as.factor) dados_dismagnesemia[variaveis_comorbidades]
<-c("Diuretico","Gentamicina","Pentamidina","Foscarnet","Pamidronato","Beta2agonista","Cisplatina","Sirolimus","Cetuximabe","Panitumumabes","AnfotericinaB","IBP")
variaveis_medicamentos
# Transformar todas as variáveis do vetor em categoricas
<- lapply(dados_dismagnesemia[variaveis_medicamentos], as.factor) dados_dismagnesemia[variaveis_medicamentos]
<-c("Peso","Altura","IMC","CC" )
variaveis_antropometricas
# Transformar todas as variáveis do vetor em Quantitativas
<- lapply(dados_dismagnesemia[variaveis_antropometricas], as.numeric) dados_dismagnesemia[variaveis_antropometricas]
<- c("Hb", "GL", "Linfocitos", "Segmentados", "Plaquetas", "PCR","Ureia", "Creatinina", "P", "Ca", "Na", "K", "Mgserico", "Mgurinario")
variaveis_laboratorio
# Transformar todas as variáveis do vetor em Quantitativas
<- lapply(dados_dismagnesemia[variaveis_laboratorio], as.numeric) dados_dismagnesemia[variaveis_laboratorio]
Classificando a variável classificação 2
$classificacao <- dplyr::case_when(
dados_dismagnesemia$Mgserico < 1.7 ~ 0,
dados_dismagnesemia$Mgserico <= 2.3 ~ 1,
dados_dismagnesemia$Mgserico > 2.3 ~ 2,
dados_dismagnesemiaTRUE ~ NA_real_
)
$classificacao <-as.factor(dados_dismagnesemia$classificacao ) dados_dismagnesemia
Sociodemograficos
library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(janitor)
Attaching package: 'janitor'
The following objects are masked from 'package:stats':
chisq.test, fisher.test
library(kableExtra)
Attaching package: 'kableExtra'
The following object is masked from 'package:dplyr':
group_rows
# Tabela de frequências com janitor
<- dados_dismagnesemia |>
tabela_sexo tabyl(Sexo) |>
adorn_totals("row") |>
adorn_percentages("col") |>
adorn_pct_formatting()
# Exibir com kable para visual elegante
|>
tabela_sexo kable(caption = "Distribuição da variável Sexo", format = "html") |>
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Sexo | n | percent |
---|---|---|
0 | 0.4 | 39.6% |
1 | 0.6 | 60.4% |
Total | 1.0 | 100.0% |
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.4.1
ggplot(dados_dismagnesemia, aes(x = Sexo, fill = Sexo)) +
geom_bar(color = "black", show.legend = FALSE) +
labs(title = "Distribuição da variável Sexo",
x = "Sexo",
y = "Frequência absoluta") +
theme_minimal(base_size = 14) +
scale_fill_brewer(palette = "Set2")
<- dados_dismagnesemia |>
tabela_origem tabyl(Origem) |>
adorn_totals("row") |>
adorn_percentages("col") |>
adorn_pct_formatting()
|>
tabela_origem kable(caption = "Distribuição da variável Origem", format = "html") |>
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Origem | n | percent |
---|---|---|
0 | 0.1 | 6.1% |
1 | 0.7 | 71.7% |
2 | 0.1 | 14.5% |
3 | 0.1 | 7.8% |
Total | 1.0 | 100.0% |
ggplot(dados_dismagnesemia, aes(x = Origem, fill = Origem)) +
geom_bar(color = "black", show.legend = FALSE) +
labs(title = "Distribuição da variável Origem",
x = "Origem",
y = "Frequência absoluta") +
theme_minimal(base_size = 14) +
scale_fill_brewer(palette = "Pastel2")
# Tabela resumo da idade
<- dados_dismagnesemia |>
resumo_idade summarise(
= min(Idade, na.rm = TRUE),
Mínimo Q1 = quantile(Idade, probs = 0.25, na.rm = TRUE),
Mediana = median(Idade, na.rm = TRUE),
Q3 = quantile(Idade, probs = 0.75, na.rm = TRUE),
= max(Idade, na.rm = TRUE),
Máximo = round(mean(Idade, na.rm = TRUE), 1),
Média `Desvio Padrão` = round(sd(Idade, na.rm = TRUE), 1)
)
|>
resumo_idade kable(caption = "Resumo estatístico da variável Idade", format = "html") |>
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Mínimo | Q1 | Mediana | Q3 | Máximo | Média | Desvio Padrão |
---|---|---|---|---|---|---|
18 | 37 | 55 | 68.75 | 101 | 53.6 | 20.2 |
# Calcular largura do bin com base em Freedman–Diaconis
<- IQR(dados_dismagnesemia$Idade, na.rm = TRUE)
iqr_idade <- sum(!is.na(dados_dismagnesemia$Idade))
n <- 2 * iqr_idade / n^(1/3)
binwidth_fd
# Limites do eixo X
<- floor(min(dados_dismagnesemia$Idade, na.rm = TRUE))
lim_inf <- ceiling(max(dados_dismagnesemia$Idade, na.rm = TRUE))
lim_sup
# Quebras dos bins com largura exata
<- seq(from = lim_inf, to = lim_sup + binwidth_fd, by = binwidth_fd)
breaks_fd
# Histograma com os intervalos exatos
ggplot(dados_dismagnesemia, aes(x = Idade)) +
geom_histogram(breaks = breaks_fd, fill = "#69b3a2", color = "white") +
scale_x_continuous(breaks = round(breaks_fd, 1)) +
labs(
title = "Distribuição da variável Idade (Critério de Freedman–Diaconis)",
x = "Idade (anos)",
y = "Frequência"
+
) theme_minimal(base_size = 14)
Footnotes
Texto em fase de elaboração , sujeito a imperfeições . Por exemplo, vamos considerar novamente o exemplo anterior para considerar esse recurso que o
R
fornece que é nomear explicitamente os indicadores.↩︎Texto em fase de elaboração , sujeito a imperfeições . Por exemplo, vamos considerar novamente o exemplo anterior para considerar esse recurso que o
R
fornece que é nomear explicitamente os indicadores.↩︎