Você está na página 1de 68

RCC4703

Análise de Regressão
Prof. Dr. Marcelo Botelho da Costa Moraes
mbotelho@usp.br

Turma: 3º Trimestre / 2020

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

• File → Import → Excel


• Import first row as variable names ✔

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

• Gráfico dos Resíduos


Postestimation → Diagnostic and analytic plots
• Comando: rvfplot

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

• Comando: xtset empresa 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)

• Teste Chow: “F test that all u_i=0:”

• 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

• Função de Classificação Linear


• Comando: estat classfunctions

• Estatística Descritiva por Grupo


• Comando: estat grsummarize, n mean median sd
cv semean min max

22
Stata – Análise Discriminante
• Resultados
• Comando: estat list

• Probabilidades de Classificação Linear


• Comando: estat list, classification(noclass looclass)

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

• Goodness of Fit Teste (Hosmer-Lemeshow com 10


grupos)
• Comando: estat gof, group(10)

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)

• ITR: informações trimestrais (quarterly)


• DFP: demonstrações financeiras padronizadas
• FRE: formulários de referência (eventos
corporativos)
• FCA: formulários cadastrais (informações de
registro)

43
Pesquisas com fontes de dados

Perlin et. Al (2019)


44
Pesquisas com fontes de dados

Perlin et. Al (2019)


45
Pesquisas com fontes de dados

Perlin et. Al (2019)


46
Pesquisas com fontes de dados

Perlin et. Al (2019)


47
GetDFPData no R
• Instalação
# Release version in CRAN
install.packages('GetDFPData')

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

Perlin et. Al (2019)


63
GetDFPData no R
• Exportando dados para o Excel
my.basename <- 'MyExcelData'
my.type.export <- 'xlsx'
gdfpd.export.DFP.data(df.reports,
base.file.name = my.basename,
type.export = my.type.export)

64
Estatística Descritiva no R
função(dados$coluna, digits = 1, na.rm = TRUE)

Descrição Inglês Função no R


Média Mean mean()
Desvio padrão Standard deviation sd()
Variância Variance var()
Mínimo Minimum min()
Máximo Maximum max()
Mediana Median median()
Amplitude Range of values range()
(minimum and maximum)
Quartis Sample quantiles quantile()
Estatística descritiva Summary summary()
Amplitude Interquartil Interquartile range IQR()

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

• Estat_Descritiva <- summary(Caixa)

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

Você também pode gostar