Carregamento de Bibliotecas

library(knitr)
library(readr)
library(readxl)
library(xtable)
library(kableExtra)
library(tibble)
library(lubridate)
library(tidyverse)
library(DescTools)
library(sjlabelled)

# Ajuste de limites para se usar a notação científica
options(scipen = 9999)

# Setando valores de Fusos horários
Sys.setenv(TZ="Brazil/East")
options(tz="Brazil/East")
Sys.getenv("TZ")
## [1] "Brazil/East"
Sys.setlocale("LC_TIME", "pt_BR")
## [1] "pt_BR"

Carregamento de Funções Auxiliares

# Funçoes Auxiliares
source("~/Dropbox/Coding/R/funs/msrfun.R")

Carregamento do Banco

# Carregamento do arquivo
p56 <- read_delim("~/Dropbox/AaZ/M/Mestrado/Aulas/2019-01/EPI84 - Introdução à informática aplicada à pesquisa epidemiológica/r_p56/data/p56_int_2017.csv", 
    ";", escape_double = FALSE, col_names = FALSE, 
    trim_ws = TRUE)

# Atribuo o banco a variavel de trabalho df.
df <- p56

Criação dos Rótulos das Variáveis

# Trocando o nome das varíáveis
names(df) <- c("questionario", "data", "idade", "peso", "altura", "serie", "grau", "fumo", "cor", "sexo", "aco", 
               "sist", "diast", "p56" )

# Criação dos rótulos das variáveis
rotulos <- c("Número do questionário", "Data da Medida", "Idade - Anos completos", "Peso em kg", "Altura em metros", 
             "Escolaridade - Série", "Escolaridade - Grau", "Fumo de cigarros", "Cor da pele", 
             "Uso de anticoncepcional oral", "Pressão arterial sistólica", "Pressão arterial diastólica", 
             "Peptídeo 56")

# Atribui os rotúlos as variáveis
df <- set_label(df,label = rotulos)

Análise Exploratória das variáveis

# Testa se existem variáveis duplicadas
df$questionario[duplicated(df$questionario)]
## numeric(0)
# Testa os limites da idade
Desc(df$idade)
## ------------------------------------------------------------------------- 
## df$idade (numeric)
## 
##   length       n    NAs  unique     0s   mean  meanCI
##      755     755      0      51      0  35.95   35.05
##           100.0%   0.0%           0.0%          36.85
##                                                      
##      .05     .10    .25  median    .75    .90     .95
##    18.00   21.00  27.00   34.00  43.00  55.60   60.00
##                                                      
##    range      sd  vcoef     mad    IQR   skew    kurt
##    50.00   12.62   0.35   11.86  16.00   0.51   -0.59
##                                                      
## lowest : 15.0 (4), 16.0 (13), 17.0 (19), 18.0 (22), 19.0 (6)
## highest: 61.0 (10), 62.0 (6), 63.0 (7), 64.0 (10), 65.0 (3)

# Peso
summary(df$peso)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   35.00   56.00   63.00   78.98   73.00  888.00
plot(df$peso)

hist(df$peso)

# Detectado pesos com valor 888
# OU atribuir NA ao valor 888 OU filtrar o caso inteiro OU criar variável auxiliar "inclusão"
df$inclusao <- ifelse(df$peso == 888, 0, 1)  # Remover os pesos com valor 888
table(df$inclusao)
## 
##   0   1 
##  13 742
# p56
Desc(df$p56)
## ------------------------------------------------------------------------- 
## df$p56 (numeric)
## 
##   length       n     NAs  unique      0s    mean  meanCI
##      755     755       0     284       0  236.58  227.36
##           100.0%    0.0%            0.0%          245.80
##                                                         
##      .05     .10     .25  median     .75     .90     .95
##   129.70  142.40  163.00  196.00  256.00  370.60  506.30
##                                                         
##    range      sd   vcoef     mad     IQR    skew    kurt
##   882.00  129.01    0.55   60.79   93.00    2.62    8.08
##                                                         
## lowest : 103.0, 105.0, 106.0 (2), 108.0, 109.0
## highest: 817.0, 851.0, 908.0, 939.0, 985.0

# Criação de labels e variáveis categoricas
df$cor <- factor(df$cor, labels = c("Branco", "Mulato", "Negro", NA))
df$sexo <- factor(df$sexo, labels =  c("Masculino", "Feminino"))
df$grau <- factor(df$grau, labels = c("Fundamental", "Médio", "Superior"))
df$fumo <- factor(df$fumo, labels = c("Sim", "Não"))

variaveis <- c("df$cor", "df$sexo", "df$grau")

Desc(df$cor)
## ------------------------------------------------------------------------- 
## df$cor (factor)
## 
##   length      n    NAs unique levels  dupes
##      755    755      0      4      4      y
##          100.0%   0.0%                     
## 
##     level  freq   perc  cumfreq  cumperc
## 1  Branco   621  82.3%      621    82.3%
## 2   Negro    88  11.7%      709    93.9%
## 3  Mulato    45   6.0%      754    99.9%
## 4    <NA>     1   0.1%      755   100.0%

Desc(df$sexo)
## ------------------------------------------------------------------------- 
## df$sexo (factor - dichotomous)
## 
##   length      n    NAs unique
##      755    755      0      2
##          100.0%   0.0%       
## 
##            freq   perc  lci.95  uci.95'
## Masculino   298  39.5%   36.0%   43.0%
## Feminino    457  60.5%   57.0%   64.0%
## 
## ' 95%-CI Wilson

Desc(df$grau)
## ------------------------------------------------------------------------- 
## df$grau (factor)
## 
##   length      n    NAs unique levels  dupes
##      755    755      0      3      3      y
##          100.0%   0.0%                     
## 
##          level  freq   perc  cumfreq  cumperc
## 1  Fundamental   398  52.7%      398    52.7%
## 2     Superior   208  27.5%      606    80.3%
## 3        Médio   149  19.7%      755   100.0%

Desc(df$fumo)
## ------------------------------------------------------------------------- 
## df$fumo (factor - dichotomous)
## 
##   length      n    NAs unique
##      755    755      0      2
##          100.0%   0.0%       
## 
##      freq   perc  lci.95  uci.95'
## Sim   272  36.0%   32.7%   39.5%
## Não   483  64.0%   60.5%   67.3%
## 
## ' 95%-CI Wilson

# Criação de variáveis de data
df$data <- mdy(df$data)
Desc(df$data)
## ------------------------------------------------------------------------- 
## df$data (Date)
## 
##   length      n    NAs unique
##      755    755      0    288
##          100.0%   0.0%       
## 
## lowest : 2002-01-01 (3), 2002-01-02 (2), 2002-01-03, 2002-01-04
## highest: 2002-11-24, 2002-11-26 (5), 2002-11-28 (5), 2002-11-29 (3)
## 
## 
## Weekday:
## 
## Pearson's Chi-squared test (1-dim uniform):
##   X-squared = 3.5311, df = 6, p-value = 0.7398
## 
##        level  freq   perc  cumfreq  cumperc
## 1     Monday   108  14.3%      108    14.3%
## 2    Tuesday   114  15.1%      222    29.4%
## 3  Wednesday   114  15.1%      336    44.5%
## 4   Thursday    96  12.7%      432    57.2%
## 5     Friday   118  15.6%      550    72.8%
## 6   Saturday   101  13.4%      651    86.2%
## 7     Sunday   104  13.8%      755   100.0%
## 
## Months:
## 
## Pearson's Chi-squared test (1-dim uniform):
##   X-squared = 81.042, df = 11, p-value = 0.0000000000009274
## 
##         level  freq   perc  cumfreq  cumperc
## 1     January    58   7.7%       58     7.7%
## 2    February    69   9.1%      127    16.8%
## 3       March    74   9.8%      201    26.6%
## 4       April    78  10.3%      279    37.0%
## 5         May    63   8.3%      342    45.3%
## 6        June    68   9.0%      410    54.3%
## 7        July    76  10.1%      486    64.4%
## 8      August    61   8.1%      547    72.5%
## 9   September    53   7.0%      600    79.5%
## 10    October    79  10.5%      679    89.9%
## 11   November    76  10.1%      755   100.0%
## 12   December     0   0.0%      755   100.0%
## 
## By weeks :
## 
##          level  freq  perc  cumfreq  cumperc
## 1   2001-12-31    12  1.6%       12     1.6%
## 2   2002-01-07    15  2.0%       27     3.6%
## 3   2002-01-14     8  1.1%       35     4.6%
## 4   2002-01-21    19  2.5%       54     7.2%
## 5   2002-01-28    15  2.0%       69     9.1%
## 6   2002-02-04    19  2.5%       88    11.7%
## 7   2002-02-11    16  2.1%      104    13.8%
## 8   2002-02-18    15  2.0%      119    15.8%
## 9   2002-02-25    13  1.7%      132    17.5%
## 10  2002-03-04    21  2.8%      153    20.3%
## 11  2002-03-11    24  3.2%      177    23.4%
## 12  2002-03-18    14  1.9%      191    25.3%
## 13  2002-03-25    10  1.3%      201    26.6%
## 14  2002-04-01    17  2.3%      218    28.9%
## 15  2002-04-08    16  2.1%      234    31.0%
## 16  2002-04-15    18  2.4%      252    33.4%
## 17  2002-04-22    22  2.9%      274    36.3%
## 18  2002-04-29    17  2.3%      291    38.5%
## 19  2002-05-06    13  1.7%      304    40.3%
## 20  2002-05-13    12  1.6%      316    41.9%
## 21  2002-05-20    17  2.3%      333    44.1%
## 22  2002-05-27    14  1.9%      347    46.0%
## 23  2002-06-03    16  2.1%      363    48.1%
## 24  2002-06-10    19  2.5%      382    50.6%
## 25  2002-06-17    14  1.9%      396    52.5%
## 26  2002-06-24    14  1.9%      410    54.3%
## 27  2002-07-01    15  2.0%      425    56.3%
## 28  2002-07-08    22  2.9%      447    59.2%
## 29  2002-07-15    15  2.0%      462    61.2%
## 30  2002-07-22    22  2.9%      484    64.1%
## 31  2002-07-29     5  0.7%      489    64.8%
## 32  2002-08-05    14  1.9%      503    66.6%
## 33  2002-08-12    22  2.9%      525    69.5%
## 34  2002-08-19    10  1.3%      535    70.9%
## 35  2002-08-26    13  1.7%      548    72.6%
## 36  2002-09-02    15  2.0%      563    74.6%
## 37  2002-09-09    14  1.9%      577    76.4%
## 38  2002-09-16    13  1.7%      590    78.1%
## 39  2002-09-23    10  1.3%      600    79.5%
## 40  2002-09-30    14  1.9%      614    81.3%
## 41  2002-10-07    21  2.8%      635    84.1%
## 42  2002-10-14    13  1.7%      648    85.8%
## 43  2002-10-21    23  3.0%      671    88.9%
## 44  2002-10-28    19  2.5%      690    91.4%
## 45  2002-11-04    16  2.1%      706    93.5%
## 46  2002-11-11    19  2.5%      725    96.0%
## 47  2002-11-18    17  2.3%      742    98.3%
## 48  2002-11-25    13  1.7%      755   100.0%

Criação das Variáveis Derivadas

# Percentil 75 da variável 
# Usei a função quantile para determinar o percentil 75%
# Precisa a opção include.lowest = TRUE para incluir o valor menor da distribuição - senão coloca NA nessa posição
df$p56_perc75 <- cut(x = df$p56,breaks = quantile(df$p56,probs = c(0,.75,1)),include.lowest = TRUE)
Desc(df$p56_perc75)
## ------------------------------------------------------------------------- 
## df$p56_perc75 (factor - dichotomous)
## 
##   length      n    NAs unique
##      755    755      0      2
##          100.0%   0.0%       
## 
##            freq   perc  lci.95  uci.95'
## [103,256]   568  75.2%   72.0%   78.2%
## (256,985]   187  24.8%   21.8%   28.0%
## 
## ' 95%-CI Wilson

# Criação da variável Hipertensão
# Ponto de corte: >= 140
df$hiper <- if_else(df$sist >= 140 | df$diast >= 90, 1, 0)
df$hiper <- factor(df$hiper, labels = c("Hipertenso", "Não Hipertenso"))
table(df$hiper)
## 
##     Hipertenso Não Hipertenso 
##            572            183

Análises Descritivas e Comparativas

# Análise Descritiva para variável p56
Desc(df$p56)
## ------------------------------------------------------------------------- 
## df$p56 (numeric)
## 
##   length       n     NAs  unique      0s    mean  meanCI
##      755     755       0     284       0  236.58  227.36
##           100.0%    0.0%            0.0%          245.80
##                                                         
##      .05     .10     .25  median     .75     .90     .95
##   129.70  142.40  163.00  196.00  256.00  370.60  506.30
##                                                         
##    range      sd   vcoef     mad     IQR    skew    kurt
##   882.00  129.01    0.55   60.79   93.00    2.62    8.08
##                                                         
## lowest : 103.0, 105.0, 106.0 (2), 108.0, 109.0
## highest: 817.0, 851.0, 908.0, 939.0, 985.0

# Comparação das médias da variável P56 para cada uma das categorias da variável HIPER
df %>% 
  group_by(hiper) %>% 
  summarise(Média_p56 = mean(p56))
## # A tibble: 2 x 2
##   hiper          Média_p56
##   <fct>              <dbl>
## 1 Hipertenso          220.
## 2 Não Hipertenso      289.
table(df$p56_perc75, df$hiper)
##            
##             Hipertenso Não Hipertenso
##   [103,256]        456            112
##   (256,985]        116             71
prop.table(table(df$p56_perc75, df$hiper))
##            
##             Hipertenso Não Hipertenso
##   [103,256] 0.60397351     0.14834437
##   (256,985] 0.15364238     0.09403974
fisher.test(df$p56_perc75, df$hiper)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  df$p56_perc75 and df$hiper
## p-value = 0.00000113
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.705682 3.624581
## sample estimates:
## odds ratio 
##   2.488541