Escolar Documentos
Profissional Documentos
Cultura Documentos
Análise de Regressão
Prof. Dr. Marcelo Botelho da Costa Moraes
mbotelho@usp.br
1
Agenda – Aula 4/8
• Programação STATA e R
2
Aplicação em Softwares
3
Stata – Base de dados veículos
sysuse auto set dp comma
** carrega base de dados ** colocar no padrão
sobre veículos decimal BR
describe
** mostra as set more off
informações dos dados ** retirar o botão more
browse
** visualizar os dados clear
** limpa toda a memória
4
• Estatística Descritiva
summarize
** estatísticas descritivas básicas
summarize, detail
** estatísticas descritivas detalhadas
tabstat price mpg rep78 headroom trunk foreign, stats (mean
sd skewness kurtosis n min max)
** formato tabela
tabulate rep78
tab rep78, sort missing
tab rep78, summarize(price)
** separação dos dados por tipo
tab rep78 foreign
** semelhante ao anterior
tab2 rep78 headroom foreign
** tabula os dados combinando as variáveis
5
• Linearidade na relação
twoway scatter trunk weight
** gráfico de dispersão
twoway scatter trunk weight if foreign==0
** apenas com foreing = 0 (nacionais/domestic)
twoway scatter trunk weight, by(foreign)
** gráfico por tipo (foreign)
twoway line trunk weight, by(foreign)
** gráfico de linhas
twoway line trunk weight, by(foreign) sort
** gráfico de linhas ordenado
graph bar weight price, over(foreign)
** gráfico de preço e peso, segregando em importados e nacionais
correlate price rep78 trunk weight
** correlação linear
pwcorr price rep78 trunk weight, sig
** correlação linear com significância estatística
6
• Normalidade das variáveis
graph box price, over(foreign)
** box plot
histogram price
** histograma
sktest price mpg rep78
** Skewness/Kurtosis test
swilk price mpg rep78
** Shapiro-Wilk test
7
• winsorização
winsor2 price, replace cuts (1 99)
** instalar pacote
** winsoriza a variável (verificar cuts)
8
Stata – Cross Section e Dados em
Painel
• Antes de começar
clear all
set more off
set dp comma
9
Stata – Cross Section e Dados em
Painel
• Estatística Descritiva
• Comando: summarize, detail
• Teste de Normalidade
• Comando: swilk variáveis
• Comando: sfrancia variáveis
• Winsorização
• Comando: winsor2 variáveis, replace cuts (1 99)
10
Stata – Cross Section e Dados em
Painel
• Regressão Linear
Statistics → Linear model → Linear regression
• Comando: regress nome das variáveis (dep+indep)
• Verificar Heterocedasticidade
Statistics → Postestimation → Specification, diagnotics
→ Tests for heteroskedasticity → Breusch-pagan∕cook
• Comando: estat hettest
• Se rejeitar H0, deve refazer o modelo com erro padrão
• Caso necessite modelo Robust, adicionar: , vce(robust)
ao final do comando regress
11
Stata – Cross Section e Dados em
Painel
• Multicolinearidade
Postestimation → Specification, diagnotics → VIF
• Comando: estat vif
12
Stata – Cross Section e Dados em
Painel
• Análise dos Resíduos (Regressão Múltipla e POLS)
Statistics → Postestimation → Predictions →
Predictions and their SE
• predict residuos, residuals
• correlate variáveis residuos
• summarize residuos
• swilk residuos, noties
13
Stata – Dados em Painel
• Reconhecer dados em painel
Statistics → Longitudinal∕panel data → Setup and
utilities → Declare dataset to be a panel data
• ID variable: empresa
• Time: ano
14
Stata – Dados em Painel
• Efeitos Fixos
Statistics → Longitudinal∕panel data → Linear models →
Linear regression → Fixed-effects
• Comando: xtreg nome das variáveis (dep + indep), fe
• Se robusto: xtreg nome das variáveis, fe vce (robust)
• Armazenar resultados
Statistics → Postestimation → Manage → Store current
estimates
• estimates store fixedres
15
Stata – Dados em Painel
• Efeitos Aleatórios
Statistics → Longitudinal∕panel data → Linear models →
Linear regression → GLS
• Comando: xtreg nome das variáveis (dep + indep), re
• Se robusto: xtreg nome das variáveis, re vce (robust)
• Armazenar resultados
Statistics → Postestimation → Manage → Store current
estimates
• estimates store randomres
16
Stata – Dados em Painel
• Teste Breusch-Pagan
Statistics → Postestimation → Specification, diagnotics →
Breusch and Pagan
• Comando: xttest0
• Teste Hausman
Statistics → Postestimation → Specification, diagnotics →
Breusch and Pagan
• Comando: hausman fixedres randomres, sigmamore
• Se robusto: Help → Search → Robust hausman → Install
• rhausman fixedres randomres, cluster
17
Stata – Dados em Painel
• Sigmamore especifica que as matrizes de
covariância devem ser baseadas na variância de
perturbação estimada a partir do estimador
eficiente. Esta opção fornece uma estimativa
adequada da variância de contraste para os
chamados testes de exogeneidade e
superidentificação na regressão de variáveis
instrumentais.
18
Stata – Variáveis Instrumentais
• Variáveis Instrumentais
Statistics → Longitudinal/panel data → Endogenous
covariates → Instrumental-variabel regression
• Comando: xtivreg dependente + independentes
exógenas (independente endógena = instrumento),
fe (ou re)
19
Stata – Painel Dinâmico
• Painel Dinâmico
Statistics → Longitudinal/panel data → Dynamic panel
data (DPD)→ Arrelano-Bond estimation
• Comando: xtabond dependente + independentes,
lags(1) twostep artests(2)
• Arrelano-Bond
• Comando: estat abond
• Sargan-Hansen
• Comando: estat sargan
20
Stata – Análise Discriminante
• Análise Discriminante
Statistics → Multivariate analysis → Discriminant
analysis → Linear (LDA)
• Comando: discrim lda variáveis independentes,
group(variável dependente)
• ANOVA
• Comando: estat anova
21
Stata – Análise Discriminante
• Correlação
• Comando: estat correlation
22
Stata – Análise Discriminante
• Resultados
• Comando: estat list
23
Stata – Regressão Logística
• Regressão Logística
Statistics → Binary outcomes → Logistic regression,
reporting coefficients
• Comando: logit variável dependente + variáveis
independentes
• Classificação
• Comando: estat classification
24
Stata – Regressão Logística
• Gráfico Curva ROC
• Comando: lroc
25
O que é o R
• O R é uma linguagem de programação voltada para a
resolução de problemas estatísticos e para a
visualização gráfica de dados. O código base do R foi
inicialmente criado no laboratório
da Bell/AT&T por John Chambers e seus colegas, com
base na linguagem S. Esse código foi reaproveitado por
dois acadêmicos, Ross Ihaka e Robert Gentleman,
resultando na plataforma de programação que temos
hoje. Para os curiosos, o nome R foi escolhido devido
ao compartilhamento da primeira letra do nome de
seus criadores.
26
O que é o R
• Hoje, R é sinônimo de programação voltada à análise de
dados, com uma larga base de usuários e funções bem
estabelecidas. É muito provável que pesquisadores de áreas
diversas, desde Economia até Biologia, ou mesmo Música,
encontrem no R uma quantidade significativa de códigos
que facilitem suas análises. No campo empresarial, grandes
empresas como Google e Microsoft já o adotaram como a
linguagem interna para a análise de dados. O R é
atualmente mantido pelo R Foundation e o R Consortium,
um esforço coletivo para financiar projetos de extensão da
linguagem.
27
O que é o R
• E o mais importante: o R é totalmente livre e
disponível em vários sistemas operacionais. Seja
você um usuário do Windows, do Linux/UNIX ou do
Mac-OS, existe uma instalação do R para a sua
plataforma, e os seus códigos devem rodar entre
uma e outra com mínimas alterações.
28
Uso do R
Linguagem de programação
• Importação, exportação, tratamento e armazenamento de dados
financeiros e econômicos com base em arquivos locais ou da internet;
• Criação de rotinas para o cálculo e a administração do risco de uma
carteira de investimento;
• Desenvolvimento de rotinas para a administração e execução de ordens
financeiras no mercado de capitais;
• Criação de ferramentas para controle, avaliação e divulgação de índices
econômicos sobre um país ou região;
• Execução de diversas possibilidades de pesquisa empírica através da
estimação de modelos econométricos e testes de hipóteses;
• Criação de websites dinâmicos com o pacote Shiny, possibilitando que
qualquer pessoa no mundo utilize uma ferramenta criada por você;
• Organização de um processo automatizado de criação e divulgação de
relatórios técnicos com o pacote knitr e a tecnologia RMarkdown.
29
Instalação do R
• https://www.r-project.org/
30
Instalação do R
31
Instalação do R
32
Instalação do R
33
Instalação do R
34
Instalando o RStudio
• A instalação do R inclui a sua própria interface gráfica, um programa que
facilita a edição e execução de nossos scripts. Essa, porém, possui várias
limitações. O RStudio é um software que torna o uso e o visual do R
muito mais prático e eficiente. Uma forma de entender essa relação é
com uma analogia com carros. Enquanto o R é o motor da linguagem de
programação, o RStudio é a carroceria e o painel de instrumentos, os
quais melhoram significativamente a experiência de uso. Além de
apresentar um visual mais atrativo, o RStudio também é acrescido de
várias funcionalidades que facilitam a vida do usuário, possibilitando a
construção de projetos e pacotes do próprio R, a criação de documentos
dinâmicos (Sweave/knitr) e a interface com edição de textos em LaTeX,
entre várias outras. Assim como o R, o RStudio também é gratuito e
pode ser utilizado no ambiente empresarial.
35
Instalando o RStudio
• A instalação do RStudio é mais simples do que a do R. Os arquivos estão
disponíveis no endereço disponibilizado no site do livro. Após acessar a
página, clique em Download RStudio e depois em Download Rstudio
Desktop. Logo após, basta selecionar o arquivo relativo ao sistema
operacional em que você irá trabalhar. Provavelmente, essa opção
será Windows Vista/7/8/10. Note que, assim como o R, o RStudio
também está disponível para diferentes plataformas.
• Destaco que o uso do RStudio não é essencial para desenvolver
programas no R. Outros softwares de interface estão disponíveis e
podem ser utilizados. Porém, dada minha experiência atual, o RStudio é
o programa de interface que oferece a maior variedade de
funcionalidades para essa linguagem, além de ser amplamente
utilizado, o que justifica a sua escolha.
36
Comunidade R na internet
• https://www.r-bloggers.com/
• https://brbloggers.com.br/
• https://marcosvital.github.io/blogs-de-R-no-Brasil/
• https://www.facebook.com/groups/141002352593
9155/
37
Operações Básicas no R
Uso de scripts
38
Objetos e Funções
• Tudo é um objeto, e cada tipo de objeto tem suas
propriedades
• Os comandos básicos do R, não incluindo demais
pacotes, somam um total de 1221 funções
• Cada função tem um nome
• Ex.: mean = média
• mean(1:5, na.rm = TRUE)
• MinhaFct(input1, input2, input3, ...)
• na.rm = TRUE, significa ignorar elementos do tipo
NA (not available), caso eles existam
39
O Formato Brasileiro
• Decimal: utilize a vírgula para separar funções. O
separador decimal é o ponto, exemplo 2.5
• Caracteres Latinos: não use cedilha e acentos.
Recomendado desenvolver o código em inglês
• Formato de datas: padrão YYYY-MM-DD, onde YYYY é o
ano em quatro números, MM é o mês e DD é o dia.
• Para saber qual o formato que o R está configurado,
digite o seguinte comando: Sys.localeconv()
• Para alterar temporariamente seu formato local para a
notação internacional: Sys.setlocale("LC_ALL",
"English")
40
Tipos de Arquivos
• Arquivos com extensão .R: Representam arquivos do tipo texto contendo
diversas instruções para o R. Esses são os arquivos que conterão o código da
pesquisa. Também pode ser chamado de um script ou rotina de pesquisa.
Exemplos: Minha_pesquisa.R, Minhas_Funções.R.
• Arquivos com extensão .RData e .rds: armazenam dados nativos do R. Esses
arquivos servem para salvar objetos criados em diferentes sessões. Por exemplo,
podes guardar o resultado de uma pesquisa em uma tabela, a qual é salva em
um arquivo com extensão .RData ou .rds. A diferença entre os dois formatos
anteriores é que o RData possibilita armazenar mais de um objeto do R,
enquanto o .rds armazena apenas um. Os arquivos salvos nesse formato podem
ser futuramente carregados em outra sessão do R. Exemplos:
Meus_dados.RData, Resultados_Pesquisa.rds.
41
Tipos de Arquivos
• Arquivos com extensão .Rmd, .md e .Rnw: representam arquivos para a
edição de documentos dinâmicos relacionados a
linguagem Rmarkdown e markdown. O uso desses arquivos permite a
criação de documentos onde texto e código são integrados.
• Arquivos com extensão .Rproj: contém informações para a edição de
projetos no RStudio. O uso desse tipo de arquivo facilita a criação de
projetos no R, tal com um novo pacote ou um script de pesquisa. O uso
desse arquivo possibilita configurar um projeto qualquer e também
facilita a utilização de ferramentas de controle de código, tal como
controle de versões. O seu uso, porém, não é essencial. Para aqueles
com interesse em conhecer esta funcionalidade, sugiro a leitura
do manual do RStudio. Exemplo: Meu_Projeto.Rproj.
42
Dados
Fonte: B3 (Brasil Bolsa Balcão) e CVM (Comissão de
Valores Mobiliários)
43
Pesquisas com fontes de dados
48
GetDFPData no R
• Carregando
library(GetDFPData)
library(tibble)
df.info <- gdfpd.get.info.companies(type.data =
'companies')
## Found cache file. Loading data..
glimpse(df.info)
## Observations: 525
## Variables: 16
## $ name.company <chr> "521 PARTICIPAÇOES S.A. - ...
…
49
GetDFPData no R
• Setores B3
t.sector <- table(df.info$main.sector)
print(as.data.frame(sort(t.sector, decreasing =
TRUE)))
50
GetDFPData no R
• Setores B3
Var1 Freq
1 Consumo Cíclico 81
2 Financeiro 79
3 Bens Industriais 76
4 Utilidade Pública 67
5 Materiais Básicos 32
6 Consumo não Cíclico 26
7 Outros 24
8 Saúde 19
9 Petróleo. Gás e Biocombustíveis 10
10 Financeiro e Outros 8
11 Não Classificados 8
12 Tecnologia da Informação 7
13 Comunicações 6
51
GetDFPData no R
• Listagem Governança
t.listings <- table(df.info$listing.segment)
print(as.data.frame(sort(t.listings, decreasing =
TRUE)))
52
GetDFPData no R
• Listagem Governança
Var1 Freq
1 Tradicional 235
2 Novo Mercado 144
3 Corporate Governance - Level 1 26
4 Corporate Governance - Level 2 21
5 Bovespa Mais 15
6 Bovespa Mais - Level 2 2
53
GetDFPData no R
• Recuperando Tickers
idx <- which(df.info$name.company == 'GERDAU
S.A.')
tickers.Gerdau <- df.info$tickers[idx]
print(tickers.Gerdau)
## [1] "GGBR3;GGBR4"
54
GetDFPData no R
• Encontrando empresa pelo nome
library(GetDFPData)
my.names <- gdfpd.search.company('ambev')
## Found cache file. Loading data..
##
## Found 1 companies:
## AMBEV S.A. | situation = ATIVO | first date =
2012-12-31 | last date - 2019-12-31
55
GetDFPData no R
• Download da informação financeira
name.companies <- 'AMBEV S.A.'
first.date <- ‘2016-12-31'
last.date <- '2019-12-31'
df.reports <- gdfpd.GetDFPData(name.companies =
name.companies,
first.date = first.date,
last.date = last.date)
56
GetDFPData no R
• Carregando a DRE (cada ano em nova linha)
df.income.long <- df.reports$fr.income[[1]]
glimpse(df.income.long)
57
GetDFPData no R
• Carregando a DRE (transformação para cada ano
em nova coluna)
df.income.wide <-
gdfpd.convert.to.wide(df.income.long)
glimpse(df.income.wide)
58
GetDFPData no R
• Download de várias empresas simultaneamente
set.seed(1)
active.companies <- df.info$name.company[df.info$situation ==
'ATIVO']
my.companies <- sample(active.companies, 3)
first.date <- '2016-01-31'
last.date <- '2020-01-01'
df.reports <- gdfpd.GetDFPData(name.companies = my.companies,
first.date = first.date,
last.date = last.date)
• Verificando o resultado
glimpse(df.reports)
59
Exemplo com Ativo Total
library(dplyr)
# bind rows of assets for different companies
df.assets <- bind_rows(df.reports$fr.assets)
# check result
glimpse(df.assets)
60
Exemplo com Ativo Total
• Construindo uma tabela com Ativo Total
library(dplyr)
my.tab <- df.assets %>%
filter(acc.desc == 'Ativo Total') %>%
group_by(name.company, ref.date) %>%
summarise(Total.Assets = acc.value)
print(my.tab)
61
Exemplo com Ativo Total
• Analisando em uma figura
library(ggplot2)
p <- ggplot(my.tab, aes(x = ref.date, y=Total.Assets)) +
geom_col() + facet_wrap(~name.company, nrow = 3,
scales = 'free') +
labs(y = 'Total Assets', x = 'Year')
print(p)
62
Exemplo com Ativo Total
64
Estatística Descritiva no R
função(dados$coluna, digits = 1, na.rm = TRUE)
65
Importando Dados no R
• install.packages('xlsx')
• library(xlsx)
• Caixa <-
read.xlsx("C:/Users/mbote/Documents/Aula4-
SaldoCaixa.xlsx", 1) # importar a primeira planilha
66
Exportando Dados no R
• install.packages('xlsx')
• library(xlsx)
• write.xlsx(Estat_Descritiva, file =
“Caixa_Descritiva.xlsx", sheetName = "Dados",
append = FALSE)
67
Obrigado pela
Atenção!!!
Até a próxima aula
/mbotelhocm
/mbotelhocm
/in/mbotelhocm
68