Para este estudo utilizamos apenas o dataset referente ao ano de 2020 coletado no openDataSus Porta openDataSus.
Neste pré-processamento criamos a variável desfecho binarizada (CIRCOBITO_SUI) que informa a circunstância onde se deu a morte não natural.
#importando a base
dados <- data.table::fread("data/Mortalidade_Geral_2020.csv") %>%
tibble::as_tibble() #transformando em um tibble
|--------------------------------------------------|
|==================================================|
|--------------------------------------------------|
|==================================================|
#Pré-processamento das variáveis
source("munge/1-Selecionando.R") #selecionando variáveis de interesse
source("munge/2-Filtrando-Criando.R") #Filtrando e criando variáveis de interesse
source("munge/3-Renomeando.R") #renomeando niveis das variáveis
#criando a tabela de contingência
dados %>%
select( #aqui ta selecionando as variáveis na tabela
IDADE,
SEXO,
RACACOR,
ESTCIV,
ESC2010,
CIRCOBITO_SUI) %>%
tbl_summary(by = CIRCOBITO_SUI,
statistic = list(all_continuous() ~ "{mean} ({sd})")) %>%
add_p() #adiciona os p-valores dos testes estatÃsticos
| Characteristic | Outras causas, N = 129,9931 | SuicÃdio, N = 13,1431 | p-value2 |
|---|---|---|---|
| IDADE | 43 (22) | 43 (18) | <0.001 |
| SEXO | <0.001 | ||
| Masculino | 106,139 (82%) | 10,321 (79%) | |
| Feminino | 23,844 (18%) | 2,822 (21%) | |
| Unknown | 10 | 0 | |
| RACACOR | <0.001 | ||
| Branca | 44,694 (35%) | 6,322 (49%) | |
| Preta | 9,153 (7.2%) | 719 (5.5%) | |
| Amarela | 516 (0.4%) | 47 (0.4%) | |
| Parda | 72,983 (57%) | 5,805 (45%) | |
| IndÃgena | 477 (0.4%) | 115 (0.9%) | |
| Unknown | 2,170 | 135 | |
| ESTCIV | <0.001 | ||
| Solteiro | 72,319 (58%) | 6,766 (53%) | |
| Casado | 24,369 (19%) | 3,232 (25%) | |
| Viúvo | 9,428 (7.5%) | 419 (3.3%) | |
| Separado/divorciado | 6,074 (4.8%) | 978 (7.6%) | |
| União estável | 6,452 (5.1%) | 676 (5.3%) | |
| Ignorado | 6,887 (5.5%) | 768 (6.0%) | |
| Unknown | 4,464 | 304 | |
| ESC2010 | <0.001 | ||
| Sem escolaridade | 8,276 (6.8%) | 527 (4.2%) | |
| Fundamental I | 29,308 (24%) | 2,443 (20%) | |
| Fundamental II | 37,116 (30%) | 3,035 (24%) | |
| Ensino Médio | 24,040 (20%) | 2,946 (24%) | |
| Superior incompleto | 1,757 (1.4%) | 428 (3.4%) | |
| Superior completo | 3,866 (3.2%) | 911 (7.3%) | |
| Ignorado | 17,460 (14%) | 2,152 (17%) | |
| Unknown | 8,170 | 701 | |
|
1
Mean (SD); n (%)
2
Wilcoxon rank sum test; Pearson's Chi-squared test
|
|||
dados %>%
ggplot(aes(IDADE, fill=CIRCOBITO_SUI)) + geom_density(alpha=0.5) + facet_wrap(~SEXO)
NA
dados %>%
ggplot(aes(IDADE, fill=CIRCOBITO_SUI)) + geom_density(alpha=0.5) + facet_wrap(~RACACOR)
dados %>%
ggplot(aes(IDADE, fill=CIRCOBITO_SUI)) + geom_density(alpha=0.5) + facet_wrap(~ESTCIV)
dados %>%
ggplot(aes(IDADE, fill=CIRCOBITO_SUI)) + geom_density(alpha=0.5) + facet_wrap(~ESC2010)
#selecionando variáveis de interesse
dados <- dados %>%
select(SEXO, IDADE, ESC2010, RACACOR, CIRCOBITO_SUI) %>%
drop_na()
# Separação dos dados de treinamento e de teste com o pacote caret
split <- createDataPartition(y = dados$CIRCOBITO_SUI, p = 0.7, list = FALSE)
treinamento <- dados[split,]
teste <- dados[-split,]
#aplicando o método de cross validation com 10 fold e 10 repetições
fitControl <- trainControl(## 10-fold CV
method = "repeatedcv",
number = 10,
repeats = 5) ## repeated ten times
#métrica para comparacao entre classificadores
metric <- "Accuracy"
confusionMatrix(predicao, teste$CIRCOBITO_SUI, positive = "SuicÃdio")
Confusion Matrix and Statistics
Reference
Prediction Outras causas SuicÃdio
Outras causas 36114 3705
SuicÃdio 0 0
Accuracy : 0.907
95% CI : (0.9041, 0.9098)
No Information Rate : 0.907
P-Value [Acc > NIR] : 0.5044
Kappa : 0
Mcnemar's Test P-Value : <2e-16
Sensitivity : 0.00000
Specificity : 1.00000
Pos Pred Value : NaN
Neg Pred Value : 0.90695
Prevalence : 0.09305
Detection Rate : 0.00000
Detection Prevalence : 0.00000
Balanced Accuracy : 0.50000
'Positive' Class : SuicÃdio
confusionMatrix(predicao, teste$CIRCOBITO_SUI, positive = "SuicÃdio")
Confusion Matrix and Statistics
Reference
Prediction Outras causas SuicÃdio
Outras causas 36111 3705
SuicÃdio 3 0
Accuracy : 0.9069
95% CI : (0.904, 0.9097)
No Information Rate : 0.907
P-Value [Acc > NIR] : 0.525
Kappa : -2e-04
Mcnemar's Test P-Value : <2e-16
Sensitivity : 0.000e+00
Specificity : 9.999e-01
Pos Pred Value : 0.000e+00
Neg Pred Value : 9.069e-01
Prevalence : 9.305e-02
Detection Rate : 0.000e+00
Detection Prevalence : 7.534e-05
Balanced Accuracy : 5.000e-01
'Positive' Class : SuicÃdio
# Obtendo o Resultado
results <- resamples(list(LG=modelfit.glm, LDA=modelfit.lda))
summary(results)
Call:
summary.resamples(object = results)
Models: LG, LDA
Number of resamples: 50
Accuracy
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LG 0.9069492 0.9070468 0.9070568 0.9070363 0.9070568 0.9070568 0
LDA 0.9067341 0.9069492 0.9069492 0.9069502 0.9069592 0.9070568 0
Kappa
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LG 0.0000000000 0.0000000000 0.0000000000 0.000000e+00 0 0.000000000 0
LDA -0.0006436195 -0.0002149438 -0.0002149438 -5.904422e-05 0 0.001880977 0
dotplot(results)