Introdução

Este trabalho tem como objetivo analisar os dados sobre suícidio no Brasil e no mundo e gerar informações que possam ser útil para pessoas que trabalham na área da saúde ou que tenham interesse em saber mais sobre o tema.

A motivação deste trabalho surgiu quando percebi a falta de informações claras sobre o tema e a disseminação de informações que era pautada apenas em achismos e conhecimentos populares.

Estrutura do Trabalho

O projeto abaixo é dividido em 3 Etapas:

Etapa 1: Análise do panorama geral no mundo

Nesta fase foram coletados dados sobre o suícidio no mundo disponibilizados por terceiro na plataforma kaggle com objetivo de gerar uma análise exploratória de diversas informações que podem ser úteis para tomada de decisão.

Etapa 2: Análise de Dados do brasil com base no SUS

Foram coletadas e tratadas diversas bases de dados relacionadas a suícidio através do DATASUS, esta fase foi importante pois as informações disponiveis para download estavam mal organizadas, com linhas de totais e subtotais em todas as colunas e outras informações que comprometeriam as análises feitas a posteriore com os dados.

Etapa 3: Séries Temporais e previsão

Foi feita uma análise temporal com os dados coletados no DATASUS com objetivo de encontrar tendências e padrões ao longo dos anos. Como os dados disponibilizados pelo DATASUS tem um gap de 2 anos foi gerado previsões para os anos faltantes, a medida que no futuro se deseje avaliar se os resultados possuem uma boa aproximação com a realidade.

Etapa 1: Análise do panorama geral no mundo

Objetivo: Analisar dados referêntes a taxa de suicídio e obter insigths a partir de algumas hipóteses

Descrição

Para este trabalho foi utilizado uma base de dados disponibilizada na plataforma Kaggle https://www.kaggle.com/russellyates88/suicide-rates-overview-1985-to-2016, este dataset é um compilado de outros 4 conjuntos de dados vinculados: Programa das Nações Unidas para o Desenvolvimento. (2018). Índice de desenvolvimento humano (IDH). Recuperado em http://hdr.undp.org/en/indicators/137506

Banco Mundial. (2018). Indicadores de desenvolvimento mundial: PIB (US $ atual) por país: 1985 a 2016. Recuperado em http://databank.worldbank.org/data/source/world-development-indicators#

Szamil. Suicídio no século XXI conjunto de dados. Obtido em https://www.kaggle.com/szamil/suicide-in-the-twenty-first-century/notebook

Organização Mundial de Saúde. (2018). Prevenção de suicídio. Recuperado em http://www.who.int/mental_health/suicide-prevention/en/

Dicionario dos dados

country: país onde os dados foram registrados “n” 101 países

year: ano em que os dados foram registrados 1987 a 2016

sex: sexo considerado no registro male – masculino female – feminino

age: faixa etária considerada 5-14 anos 15-24 anos 25-34 anos 35-54 anos 55-74 anos 75+ anos

suicides_no: número de suicídios

population: população para o grupo

suicides/100k pop: número de suicídios por 100 mil habitantes

country_year: identificador contendo country + year

HDI for year: Índice de Desenvolvimento Humano (IDH) para o ano

gdp_for_year: Produto Interno Bruto (PIB) para o ano

gdp_per_capita: Produto Interno Bruto (PIB) per capita

Análise exploratória dos dados

Carregando os pacotes que seram utilizados para a análise

#install.packages("readr")
#install.packages("visdat")
#install.packages("dplyr")
#install.packages("plotly")
#install.packages("ggplot2")
#install.packages("corrplot")
#install.packages("knitr")
#install.packages("webshot")
library(webshot)
webshot::install_phantomjs()
library(knitr)
library(readr)
library(visdat)
library(dplyr)
library(plotly)
library(corrplot)
library(ggplot2)

setwd("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados")

Abaixo segue uma pequena amostra dos dados para que possamos entender como eles estão organizados

df=read_csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/master.csv")
head(df)

Iremos alterar os nomes das colunas do dataset para ficar mais simples de enteder as análises feitas. Utilizaremos nomes em português com significados iguais ou com significado semelhantes com a variável relacionada.

names(df)= c("pais","ano","sexo","idade","num_suicidio","população","suicidios/100k","idendificador","IDH","PIB","Renda_per_capita","geracao")
head(df)

Tratamento de dados

Inicialmente iremos avaliar se o dataset possuem algum valor faltante.Abaixo é possível perceber que possuimos apenas dados faltantes na variavel IDH com 70% dos seus dados NA’s, devido ao número muito grande de dados faltantes decidimos retirar a variavel da análise.

df["IDH"]=NULL

Para começarmos a fazer qualquer tipo de analise, precisamos antes de tudo validar se as variaveis do nosso dataset estão formatadas com tipo de dados certo. Para ficar visualmente mais atrativo, decidi utilizar o pacote visdat.

vis_dat(df)

É necessário alterar os tipos da variavel idade, geração, país, sexo para o tipo de dados chamado factor, tipo especifico para variáveis de classificação de dados.

df$pais= as.factor(df$pais)
df$sexo= as.factor(df$sexo)
df$idade= as.factor(df$idade)
df$geracao=as.factor(df$geracao)
vis_dat(df)

Analise descritiva dos dados

Iremos analisar de forma rápida como cada variável estar distribuidas em relação as medidas de tendência central

summary(df)
##           pais            ano           sexo               idade     
##  Austria    :  382   Min.   :1985   female:13910   15-24 years:4642  
##  Iceland    :  382   1st Qu.:1995   male  :13910   25-34 years:4642  
##  Mauritius  :  382   Median :2002                  35-54 years:4642  
##  Netherlands:  382   Mean   :2001                  5-14 years :4610  
##  Argentina  :  372   3rd Qu.:2008                  55-74 years:4642  
##  Belgium    :  372   Max.   :2016                  75+ years  :4642  
##  (Other)    :25548                                                   
##   num_suicidio       população        suicidios/100k   idendificador     
##  Min.   :    0.0   Min.   :     278   Min.   :  0.00   Length:27820      
##  1st Qu.:    3.0   1st Qu.:   97498   1st Qu.:  0.92   Class :character  
##  Median :   25.0   Median :  430150   Median :  5.99   Mode  :character  
##  Mean   :  242.6   Mean   : 1844794   Mean   : 12.82                     
##  3rd Qu.:  131.0   3rd Qu.: 1486143   3rd Qu.: 16.62                     
##  Max.   :22338.0   Max.   :43805214   Max.   :224.97                     
##                                                                          
##       PIB            Renda_per_capita            geracao    
##  Min.   :4.692e+07   Min.   :   251   Boomers        :4990  
##  1st Qu.:8.985e+09   1st Qu.:  3447   G.I. Generation:2744  
##  Median :4.811e+10   Median :  9372   Generation X   :6408  
##  Mean   :4.456e+11   Mean   : 16866   Generation Z   :1470  
##  3rd Qu.:2.602e+11   3rd Qu.: 24874   Millenials     :5844  
##  Max.   :1.812e+13   Max.   :126352   Silent         :6364  
## 

Iremos avaliar apenas a variavel suicidios/100k de habitantes, cabe ao leitor tirar suas proprias conclusões para as outras variáveis apresentadas. Temos uma média de 12.82 suicidios a cada 100 mil habitantes nos dados, porém sua média e medianas são bem distantes uma das outras isso mostra que os dados estão bastante esparços e possuem vários picos que fazem a média subir bastante.

Analise Exploratoria nível de País

Para fazer a analise iremos usar como ideia central algumas perguntas para fazermos aos dados

Ao passar dos anos, qual foi a quantidade de suicídios ?

x=aggregate(df[,"suicidios/100k"], list(local=df$ano), sum)
g=ggplot(data=x, aes(x=local,y=`suicidios/100k`)) + geom_col(fill="black") + theme_classic() +
  labs(title = "Total de suícidios no mundo de 1985 até 2016") + xlab("Anos") + ylab("Número de suicídios por 100k de hab")
ggplotly(g)

preserve18b770e8492db1ac

O gráfico acima mostra que o número de suicídios por 100 mil habitantes veio de um crescimento rápido e encontrou seu pico entre os anos de 1995 a 2002, depois os dados desmonstram uma tendência decrescente.

Qual faixa etária que tem mais suicídios no mundo ? Crianças, adolescentes, adultos ou idosos ?

Qual métrica utilizar, por 100k ou total ?

x=aggregate(df[,"suicidios/100k"], list(local=df$idade), sum)
ggplot(data=x,aes(x=local, y=`suicidios/100k`, fill=local)) + geom_col(color="black",show.legend = FALSE) + theme_classic()+
  labs(title = "Quantidade de suícidios por faixa etária por 100k de hab") + xlab("Faixa Etária") + ylab("Numéro de suícidios") 

— Fazer analise dos sucidios

Se suicidam mais pessoas do sexo masculino ou feminino ?

x=aggregate(df[,"suicidios/100k"], list(local=df$sexo), sum)
g=ggplot(data=x, aes(x=local, y=`suicidios/100k`)) + geom_col(fill="black") + theme_classic() + labs(title = "Total de suícidios por sexo") + ylab("Número de suícidios por 100k de Hab") + xlab("Sexo") + scale_y_continuous(labels = function(x) format(x, scientific = FALSE))
ggplotly(g)

preserve8a71ec9ac478613e

–Fazer análise por sexo

Será que o padrão de homens se suicidarem mais que mulheres seguem esse padrão para todas as faixas etarias ?

ggplot(data=df, aes(x=sexo, y=`suicidios/100k`, fill=idade)) + geom_bar(stat="identity", show.legend = FALSE) + facet_wrap(df$idade) + xlab("Sexo") + labs(title = "Total de suicídios por idade e sexo") + theme_classic() + ylab("Número de suicídio por 100k Hab")

— Fazer analise de sucididio por sexo e idade

Quais os países que mais pessoas suicidam ?

x=aggregate(df[,"suicidios/100k"], list(local=df$pais), sum)
x=x[order(x[,2],decreasing = T),]
x$indice=c(1:101)
x=x[x$indice<11,]
ggplot(data=x, aes(x=reorder(local,-indice), y=`suicidios/100k`)) + geom_col() + coord_flip() + theme_classic()+ labs(title = "10 países com mais mortes por suícidio por 100 mil Habitantes") +
  ylab("Países") + xlab("Suicídio/100k") + geom_text(aes(label=`suicidios/100k`))

— Analise do Gráfico

Qual a geração que mais se suicidou ? Talvez tire

x=aggregate(df$`suicidios/100k`, list(local=df$geracao), sum)
ggplot(data=x, aes(x=local, y=x)) + geom_col() + theme_classic() + labs(title = "Suícidio por geração") + xlab("Geração") + ylab("Número de suicídio por 100k de hab")

—-Fazer análise

Como se dar os suícidios pela renda das pessoas

ggplot(data=df, aes(x=Renda_per_capita, y=df$`suicidios/100k`)) + geom_point()+ geom_density2d(colour="white")+ theme_bw() + scale_x_continuous(labels = function(x) format(x, scientific = FALSE)) + labs(title = "Número de suícidios pela renda per capita") + xlab("Renda") + ylab("Número de suicídios")

– Fazer analises

#Parte 2: Análise de Dados do brasil com base no SUS

Pré Processamento da da base de dados

Para segunda parte do projeto será necessário a utilização de dados no portal do SUS (DATASUS) do SIM (Sistema de informação de mortalidade) que possuem as informações oficiais do Brasil em relação as mortes por suicídio . Quando analisei as informações no site percebi que para uma pessoa coletar todas as informações precisaria de pelo menos uns 20 arquivos csv’s. Pensando nisso essa parte do projeto foi criada para coletar todos os datasets separados e agrupar suas informações. Essa etapa se faz essêncial para que seja possível analisar as informações do Brasil referêntes a suicídio.

Fonte: http://tabnet.datasus.gov.br/cgi/deftohtm.exe?sim/cnv/ext10uf.def.

Bibliotecas

#install.packages("dplyr")
library(dplyr)
#install.packages("tidyr")
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.0.2
#install.packages("readr")
library(readr)

Para que o leitor tenha uma ideia de como os dados estão organizado, abaixo tem uma amostra de um dos arquivos baixados que trata de informações de suicídio por Estado.

df=read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SucidioPorRegiao.csv", sep = ";")
head(df)

Note que temos colunas como Ano.mês.do.Óbito que está mal formatada e mistura linhas com total no ano com o total para cada mês. Além disso para cada estado foi criado uma coluna o que dificulta as possíveis análises feitas com o tema, embora não seja mostrado no slice acima a base também possuiam textos não relacionados aos dados no início e no final do arquivo que foram retirados.

Para fazer este tratamento foi criado a função abaixo, ela resolverá todos os problemas relatados anteriormente.

trataDados <- function(df,x){
#Reunindo os estados em uma coluna
df=gather(df,UF,Suicidios,2:x)
names(df)[1]= "Ano.Mes"

#Retirando textos que estão no meio da tabela
df=df[!is.na(df$Suicidios),]
df=df[!is.null(df$Suicidios)]
df=df[!(df$Suicidios==""),]

#Retirando valores de totais anuais
df=filter(df,!df$Ano.Mes %in% c(1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,
                               2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018))

#Retirando a linha que contem o total 
df=filter(df, !df$Ano.Mes %in% c("Total"))

#Separando a coluna Ano.Mês.do.Obito em ano e mês

chave=paste(df$Ano.Mes,df$UF,sep="_")
df=separate(df,Ano.Mes,into=c("Mes","Ano"), sep="/")

#Colocando uma coluna de chave para fazer a união das futuras tabelas
df$chave=chave

#Retira os dois pontos que ficou na frente de texto
df$Mes=gsub("\\.\\.","",df$Mes)


#Transforma dados em inteiros, isso vai gerar NAS quando o valor for "-"
df$Suicidios=as.integer(df$Suicidios)

#Substituindo os valores NAs gerados por "0"
df[is.na(df$Suicidios),"Suicidios"]=0

return(df)
}


df= trataDados(df,29)
## Note: Using an external vector in selections is ambiguous.
## i Use `all_of(x)` instead of `x` to silence this message.
## i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
## Warning in trataDados(df, 29): NAs introduzidos por coerção
df=filter(df, !df$UF %in% c("Total"))

Tratando os os dados relacionado aos obitos por sexo

SuicidioFem= read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorSexoFem.csv",sep=";")
SuicidioMasc= read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorSexoMasc.csv",sep=";")
SuicidioIgn= read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorSexoIgn.csv",sep=";")

SuicidioFem=trataDados(SuicidioFem,29)
## Warning in trataDados(SuicidioFem, 29): NAs introduzidos por coerção
SuicidioMasc=trataDados(SuicidioMasc,29)
## Warning in trataDados(SuicidioMasc, 29): NAs introduzidos por coerção
SuicidioIgn= trataDados(SuicidioIgn,16)
## Warning in trataDados(SuicidioIgn, 16): NAs introduzidos por coerção
SuicidioFem$Sexo="Feminino"
SuicidioMasc$Sexo="Masculino"
SuicidioIgn$Sexo="Ign"
sexo=rbind(SuicidioFem,SuicidioMasc)
sexo=rbind(sexo,SuicidioIgn)

Tratando dados Relacionados a Cor

SuicidioPorCor<- read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorCor.csv", header = T, sep=";")
SuicidioPorCor=trataDados(SuicidioPorCor,8)
## Warning in trataDados(SuicidioPorCor, 8): NAs introduzidos por coerção
names(SuicidioPorCor)[3]="Cor"
SuicidioPorCor=filter(SuicidioPorCor, !SuicidioPorCor$Cor %in% c("Total"))
SuicidioPorCor$chave=NULL

Tratando dados Relacionados a Cor padrão IBGE

# Colocando os dados em Padrão IBGE
PretoPardo=group_by(filter(SuicidioPorCor, SuicidioPorCor$Cor %in% c("Preta","Parda")),Mes,Ano)%>%summarise(Suicidios=sum(Suicidios))
## `summarise()` regrouping output by 'Mes' (override with `.groups` argument)
PretoPardo$Cor="Pretos e Pardos"

SuicidioPorCorIBGE=rbind(filter(SuicidioPorCor, !SuicidioPorCor$Cor %in% c("Preta","Parda")), PretoPardo)

Tratando dados Relacionados a suicidio por Local

SuicidioPorLocal<-read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorLocal.csv", header = T, sep=";")
SuicidioPorLocal=trataDados(SuicidioPorLocal,8)
## Warning in trataDados(SuicidioPorLocal, 8): NAs introduzidos por coerção
names(SuicidioPorLocal)[3]=c("Local")
SuicidioPorLocal=filter(SuicidioPorLocal,!SuicidioPorLocal$Local %in% c("Total"))

Tratamento Dados Relacionados a suicidio por Faixa Etaria

SuicidioPorFaixaEtaria<-read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorFaixaEtaria.csv", header = T, sep=";")
SuicidioPorFaixaEtaria=trataDados(SuicidioPorFaixaEtaria,15)
## Warning in trataDados(SuicidioPorFaixaEtaria, 15): NAs introduzidos por coerção
names(SuicidioPorFaixaEtaria)[3]="FaixaEtaria"
SuicidioPorFaixaEtaria=filter(SuicidioPorFaixaEtaria,!SuicidioPorFaixaEtaria$FaixaEtaria %in% c("Total"))

Tratamento Dados Relacionados a suicidio por Estado Civil

SuicidioPorEstadoCivil<- read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorEstadoCivil.csv", header = T, sep=";")
SuicidioPorEstadoCivil=trataDados(SuicidioPorEstadoCivil,29)
## Warning: Expected 2 pieces. Missing pieces filled with `NA` in 168 rows [1, 2,
## 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...].
SuicidioPorEstadoCivil$Ano=NULL
names(SuicidioPorEstadoCivil)[1]="EstadoCivil"

Tratamento de Dados Relacionado a suicidio por Tipo de Causa

SuicidioPorCausa<- read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioPorCausa.csv", header = T, sep=";")
SuicidioPorCausa=trataDados(SuicidioPorCausa,5)
## Warning: Expected 2 pieces. Missing pieces filled with `NA` in 72 rows [1, 2, 3,
## 4, 5, 7, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 23, 26, 27, ...].
## Warning in trataDados(SuicidioPorCausa, 5): NAs introduzidos por coerção
SuicidioPorCausa$Ano=NULL
names(SuicidioPorCausa)[1]="Causa"
names(SuicidioPorCausa)[2]="Sexo"
SuicidioPorCausa=filter(SuicidioPorCausa,!SuicidioPorCausa$Sexo %in% c("Total"))

Tratamento de dados relacionado a suicidio por cor e idade

SuicidioCorIdade<- read.csv("C:/Users/italo/OneDrive/Estudo/CursoR/ProjetosR/ProjetosPortfolio/AnaliseExploratoriaSuicidio/Dados/SuicidioCorIdade.csv", header = T, sep=";")
SuicidioCorIdade= trataDados(SuicidioCorIdade,15)
## Warning: Expected 2 pieces. Missing pieces filled with `NA` in 84 rows [1, 2, 3,
## 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...].
## Warning in trataDados(SuicidioCorIdade, 15): NAs introduzidos por coerção
SuicidioCorIdade$Ano=NULL
names(SuicidioCorIdade)[1]="Cor"
names(SuicidioCorIdade)[2]="Idade"
SuicidioCorIdade=filter(SuicidioCorIdade,!SuicidioCorIdade$Idade %in% c("Total"))
SuicidioCorIdade$Cor=as.factor(SuicidioCorIdade$Cor)
SuicidioCorIdade$Idade=as.factor(SuicidioCorIdade$Idade)
SuicidioCorIdade$chave=NULL

## OBS= A base por cor esta diferente da base por cor e idade

Tratando dados relacionados a suicidio por cor e idade pelo padrão IBGE

# Colocando os dados em Padrão IBGE
PretoPardo=group_by(filter(SuicidioCorIdade, SuicidioCorIdade$Cor %in% c("Preta","Parda")),Idade)%>%summarise(Suicidios=sum(Suicidios))
## `summarise()` ungrouping output (override with `.groups` argument)
PretoPardo$Cor="Pretos e Pardos"

SuicidioCorIdadeIBGE=rbind(filter(SuicidioCorIdade, !SuicidioCorIdade$Cor %in% c("Preta","Parda")), PretoPardo)

Analise Descritiva dos dados

Com os dados devidamente tratados foi feito uma análise exploratória com objetivo de entender melhor o tema no brasil. As divisões abaixo está relacionada a cada base que foi tratada.

Suicidio Por estado

x=aggregate(df$Suicidios, list(local=df$UF), sum)
x=x[order(x[,2],decreasing = T),]
x$indice=c(1:27)
ggplot(x, aes(x=reorder(local,indice), y=x)) + geom_col() + theme_classic() + labs(title ="Suicidios por Estado") + ylab("Número de Suicídios") + xlab("")

-Fazer análises

Suicidios Por Causas no geral e para cada sexo

#Ordenando Suicidios pelas principais causas
x=aggregate(SuicidioPorCausa$Suicidios, list(local=SuicidioPorCausa$Causa), sum)
x=x[order(x[,2],decreasing = T),]
x$indice=c(1:25)
x=x[x$indice<11,]
ggplot(x, aes(x=reorder(local,-indice), y=x)) + geom_col() + coord_flip() + theme_classic() + labs(title ="Principais formas de Suicídio no Brasil") + ylab("Número de Suicídios") + xlab("") 

  • Fazer Análises
SuicidioPorCausaMasc=subset(SuicidioPorCausa,SuicidioPorCausa$Sexo=="Masc")
x=aggregate(SuicidioPorCausaMasc$Suicidios, list(local=SuicidioPorCausaMasc$Causa), sum)
x=x[order(x[,2],decreasing = T),]
x$indice=c(1:25)
x=x[x$indice<11,]
ggplot(x, aes(x=reorder(local,-indice), y=x)) + geom_col() + coord_flip() + theme_classic() + labs(title ="Homens cometerem Suicídio no Brasil") + ylab("Número de Suicídios") + xlab("")

  • Fazer Análises
SuicidioPorCausaFem=subset(SuicidioPorCausa,SuicidioPorCausa$Sexo=="Fem")
x=aggregate(SuicidioPorCausaFem$Suicidios, list(local=SuicidioPorCausaFem$Causa), sum)
x=x[order(x[,2],decreasing = T),]
x$indice=c(1:25)
x=x[x$indice<11,]
ggplot(x, aes(x=reorder(local,-indice), y=x)) + geom_col() + coord_flip() + theme_classic() + labs(title ="Mulheres cometerem Suicídio no Brasil") + ylab("Número de Suicídios") + xlab("")

  • Fazer Análises
SuicidioPorCausaIgn=subset(SuicidioPorCausa,SuicidioPorCausa$Sexo=="Ign")
x=aggregate(SuicidioPorCausaIgn$Suicidios, list(local=SuicidioPorCausaIgn$Causa), sum)
x=x[order(x[,2],decreasing = T),]
x$indice=c(1:25)
x=x[x$indice<11,]
ggplot(x, aes(x=reorder(local,-indice), y=x)) + geom_col() + coord_flip() + theme_classic() + labs(title ="IGN's cometerem Suicídio no Brasil") + ylab("Número de Suicídios") + xlab("")

  • Fazer Análises

SUicidio por cor

### Padrão sem ser IBGE
#x= aggregate(SuicidioPorCor$Suicidios, list(local=SuicidioPorCor$Cor), sum)
#x=x[order(x[,2], decreasing = T),]
#x$indice= c(1:6)
#ggplot(x, aes(x=reorder(local,indice), y=x)) + geom_col() + theme_classic() + labs(title #="Nº de Suicidios por Cor") + ylab("Número de Suicídios") + xlab("")
############


x= aggregate(SuicidioPorCorIBGE$Suicidios, list(local=SuicidioPorCorIBGE$Cor), sum)
x=x[order(x[,2], decreasing = T),]
x$indice= c(1:5)
ggplot(x, aes(x=reorder(local,indice), y=x)) + geom_col() + theme_classic() + labs(title ="Nº de Suicidios por Cor (Padrão IBGE)") + ylab("Número de Suicídios") + xlab("")

### TENTAR GRAFICO DE LINHA/ APREDER A TRABALHAR COM DATAS

#install.packages("lubridate")
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.0.3
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
SuicidioPorCor$Ano= as.factor(SuicidioPorCor$Ano)
SuicidioPorCor$Cor=as.factor(SuicidioPorCor$Cor)
ggplot(SuicidioPorCor, aes(x=Cor, y=Suicidios, fill=Cor)) + geom_col() + labs(title ="Nº de Suicidios por Cor e por Ano") + ylab("Número de Suicídios") + xlab("") + theme_classic()+ theme(legend.direction = "vertical", axis.text.x = element_text(angle=-90)) + facet_wrap(SuicidioPorCor$Ano)

#Gráfico padrao IBGE
SuicidioPorCorIBGE$Ano= as.factor(SuicidioPorCorIBGE$Ano)
SuicidioPorCorIBGE$Cor=as.factor(SuicidioPorCorIBGE$Cor)
ggplot(SuicidioPorCorIBGE, aes(x=Cor, y=Suicidios, fill=Cor)) + geom_col() + labs(title ="Nº de Suicidios por Cor e por Ano(Padrão IBGE)") + ylab("Número de Suicídios") + xlab("") + theme_classic()+ theme(legend.direction = "vertical", axis.text.x = element_text(angle=-90)) + facet_wrap(SuicidioPorCorIBGE$Ano)

### Dados Fora do Padrão IBGE
#ggplot(SuicidioCorIdade, aes(x=Cor, y=Suicidios, fill=Cor))+ geom_col() + labs(title ="Nº de #Suicidios por Cor e por Idade") + ylab("Número de Suicídios") + xlab("") + #facet_wrap(SuicidioCorIdade$Idade) + theme_classic()+ theme(legend.direction = "vertical", #axis.text.x = element_text(angle=-90))
########


##Padrão IBGE e retirando idades menores de 10 anos
SuicidioCorIdadeIBGE=filter(SuicidioCorIdadeIBGE,!SuicidioCorIdadeIBGE$Idade %in% c("X1.a.4.anos", "Menor.1.ano"))
ggplot(SuicidioCorIdadeIBGE, aes(x=Cor, y=Suicidios, fill=Cor))+ geom_col() + labs(title ="Nº de Suicidios por Cor e por Idade(Padrão IBGE)") + ylab("Número de Suicídios") + xlab("") + facet_wrap(SuicidioCorIdadeIBGE$Idade) + theme_classic()+ theme(legend.direction = "vertical", axis.text.x = element_text(angle=-90))

Suicidio por Sexo

sexo$Ano= as.factor(sexo$Ano)
ggplot(sexo, aes(x=Sexo, y=Suicidios, fill=Sexo))+ geom_col() + labs(title ="Suicidio por Sexo") + ylab("Número de Suicídios") + xlab("") + theme_classic() +scale_y_continuous(labels = function(x) format(x, scientific = FALSE))

sexo$Ano= as.factor(sexo$Ano)
ggplot(sexo, aes(x=Sexo, y=Suicidios, fill=Sexo))+ geom_col() + labs(title ="Suicidio por Sexo por Ano") + ylab("Número de Suicídios") + xlab("") + theme_classic() +scale_y_continuous(labels = function(x) format(x, scientific = FALSE)) + facet_wrap(sexo$Ano) + coord_flip()+theme(legend.direction = "vertical", axis.text.x = element_text(angle=-90))

Graficos relacionado ao estado civil

x= aggregate(SuicidioPorEstadoCivil$Suicidios, list(local=SuicidioPorEstadoCivil$EstadoCivil), sum)
x=x[order(x[,2], decreasing = T),]
x$indice= c(1:6)
ggplot(x, aes(x=reorder(local,indice), y=x)) + geom_col() + theme_classic() + labs(title ="Suícidio por Estado Civil") + ylab("Número de Suicídios") + xlab("")

x=SuicidioPorEstadoCivil[SuicidioPorEstadoCivil$UF=="PE",]
x= aggregate(x$Suicidios, list(local=x$EstadoCivil), sum)
x=x[order(x[,2], decreasing = T),]
x$indice= c(1:6)
ggplot(x, aes(x=reorder(local,indice), y=x)) + geom_col() + theme_classic() + labs(title ="Suícidio por Estado Civil em PE") + ylab("Número de Suicídios") + xlab("")

Gráfico de local

x= aggregate(SuicidioPorLocal$Suicidios, list(local=SuicidioPorLocal$Local), sum)
x=x[order(x[,2], decreasing = T),]
x$indice= c(1:6)
ggplot(x, aes(x=reorder(local,indice), y=x)) + geom_col() + theme_classic() + labs(title ="Suicidio por local de Óbito") + ylab("Número de Suicídios") + xlab("")

Parte 3- Serie Temporal (Prevendo valores de Suicidio)

#install.packages("forecast")
library(forecast)
## Warning: package 'forecast' was built under R version 4.0.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
dados=group_by(df,Ano,Mes)%>%summarise(Suicidios=sum(Suicidios))
## `summarise()` regrouping output by 'Ano' (override with `.groups` argument)
serie= ts(dados$Suicidios, start = 1996, frequency = 12)

Geralmente para dados de series temporais se começa plotando um gráfico de tempo

plot(serie, xlab="Anos",ylab="Suicidio/população") + title("Suicidios entre 1996-2018 no Brasil") 

## integer(0)

Avaliando o gráfico acima temos uma forte sazonalidade, com tendência de aumento. Não há evidencias de qualquer comportamento cíclico.

Parcelas Sazonais

ggseasonplot(serie, year.labels = T, year.labels.left = T) + ylab("Taxa Suicidios/População") + ggtitle("Parcelas Sazonais")

Analisando os dados Sozonais é perceptivel o crescimento das series todos os anos, embora não se pode afirmar que isso é algo puramente devido ao número de suicidios ou se deve também a melhora da forma de coleta dessas informações. Além disso, parece que os dados seguem um padrão de queda e aumento entre março, abril e maio. Também da para se notar um crescimento padrão no mês de setembro,o que justifica setembro ser o mês de prevenção ao suicidio.

Parcelas de Subseries sazonais

Para tentar entender melhor as sazonalidades dos dados

ggsubseriesplot(serie)+ ylab("TaxaSuicidio/População")

Com esse gráfico fica mais evidente o padrão nos meses de fevereiro,março e abril. Com ele foi possivel perceber que existe uma flutuação em que os mês em média com menor quantidade de suicidios é julho.

Autocorrelação na serie

ggAcf(serie)

## Ajustes

lambda= BoxCox.lambda(serie)
autoplot(BoxCox(serie,lambda))

Decomposição de série temporal

Metodo X11

#install.packages("seasonal")
library(seasonal)
## Warning: package 'seasonal' was built under R version 4.0.3
fit= seas(serie, x11="")
autoplot(fit)

autoplot(serie, series="Serie Temporal") + 
  autolayer(trendcycle(fit), series="Ciclo de Tendência") + 
  autolayer(seasadj(fit),series="Sazonal Ajustada") + scale_color_manual(values=c("gray","blue","red")) + ggtitle("Serie de Suicidios")

Metodo SEATS

autoplot(seas(serie)) + ggtitle("Decomposição SEATS")

DEcomposição STL (A MAIS AVANÇADA)

fit= stl(serie, t.window = 13, s.window = "periodic", robust = T)
autoplot(fit)

Definindo a força de Sazonalidade e de tendência da serie

Prevendo a Serie temporal

Metodo de suavização exponencial Simples

previsao<- ses(serie, h=5)
autoplot(previsao,series = "Valores originais") +
  autolayer(fitted(previsao), series = "Valores previstos")

round(accuracy(previsao),2)
##                ME  RMSE   MAE  MPE MAPE MASE  ACF1
## Training set 9.64 52.49 41.02 0.81  5.4 0.97 -0.03

Metodo de suavizaçao exponencial com tendencia

previsao<-holt(serie,h=5)
round(accuracy(previsao),2)
##                ME  RMSE   MAE  MPE MAPE MASE ACF1
## Training set 3.91 51.13 39.71 0.03 5.28 0.94 0.03

Metodo de suavizaçao exponencial com tendencia amordecida

previsao<-holt(serie,damped = T,phi = 0.9,h=5)
round(accuracy(previsao),2)
##                ME  RMSE   MAE  MPE MAPE MASE ACF1
## Training set 7.16 51.98 40.48 0.49 5.35 0.95 0.05

Metodo de suavização exponencial sazonal de holt-winters

fit1= hw(serie,seasonal = "additive")
fit2= hw(serie,seasonal = "multiplicative")
autoplot(serie) + autolayer(fit1,series="HW Aditivo", PI=F) +
  autolayer(fit2, series="HW multiplicativo", PI=F)

round(accuracy(fit1),2)
##               ME  RMSE   MAE   MPE MAPE MASE ACF1
## Training set 0.1 35.06 27.11 -0.26 3.62 0.64 0.01
  round(accuracy(fit2),2)
##                ME  RMSE   MAE  MPE MAPE MASE ACF1
## Training set 2.12 34.34 26.52 0.03 3.55 0.62 0.06