O vídeo foi gentilmente enviado pela mestranda da FURB Caroline Soschinski e teve uma ótima repercussão. Acesse o vídeo clicando aqui e aproveite para se inscrever no nosso canal do Youtube clicando aqui.
A partir daí, o Professor Dr Abdinardo Oliveira se prontificou a também nos ajudar com um script para o R - software gratuito.
Agradeço imensamente ao Professor Abdinardo pelo envio do script. O email dele está nas instruções, caso precisem entrar em contato.
Abaixo eu apresento as instruções gerais, o script e a base de dados (BD_Template) que vocês podem baixar clicando aqui.
INSTRUÇÕES COM RELAÇÃO AO USO DO SCRIPT PARA ESTIMAÇÃO DE ACCRUALS DISCRICIONÁRIOS USANDO O R
1) A “programação” que o usuário
fará para utilizar corretamente a rotina se dará na montagem do banco de dados,
que deverá ser no formato do MS Excel, qualquer versão (.xls ou .xlsx). É
recomendável que o usuário use o template em Excel que foi disponibilizado no link acima. O Usuário não
deverá digitar NADA nas
linhas de código, a não ser que tenha experiência em R;
2) Ao abrir o template, o
usuário não deve mexer nos
conteúdos das células A1 e B1. Nas demais células são permitidas as alterações
dos valores. É imprescindível que o formato das células esteja na categoria
“Geral”, senão o R fará a leitura errada dos dados (o template já está nesse
formato);
3) Na coluna A, o usuário
colocará os anos (2010, 2011 etc.); na coluna B, os setores (1, 2 etc.); na
coluna C, os valores da variável dependente; nas demais colunas, os valores das
variáveis independentes. Para as variáveis independentes, aconselho usar a
configuração do template (x1, x2 etc.);
4) É recomendado que o usuário
use o RStudio para rodar os dados (mas lhe é facultado a usar o ambiente que
quiser). Antes de rodar a rotina, ele deve instalar as libraries, que estão na primeira linha da rotina;
5) Uma vez instaladas as
libraries, é só usar o comando Ctrl+Alt+R. Em seguida, aparecerá uma janela de
prompt pedindo que você localize o arquivo do seu banco de dados, montado a
partir do template;
6) Pronto! Como resultado, o R
produzirá quatro tabelas e uma lista. As tabelas mostrarão os valores do R2
ajustado (tabela_R2), e os p-valores dos testes de Durbin-Watson (para ausência
de autocorrelação serial nos resíduos – tabela_DW), Jarque-Bera (para
normalidade dos resíduos – tabela_JB) e Ljung-Box (para ausência de
heterocedasticidade nos resíduos – tabela_LB). A lista (lista_resultados)
mostrará o sumário de todas as regressões lineares, para cada ano e setor. É só
digitar lista_resultados$ e escolher a lista desejada.
Dúvidas, favor mandar um e-mail
para abdinardom@utfpr.edu.br
P.s.: recomendação de leitura sobre definição, mensuração e modelagem de accruals discricionários. Clique aqui.
P.s.: recomendação de leitura sobre definição, mensuração e modelagem de accruals discricionários. Clique aqui.
Enjoy!!!
SCRIPT NO R PARA ESTIMAÇÃO DE ACCRUALS DISCRICIONÁRIOS POR ANO E POR SETOR
#Rotina
desenvolvida por Abdinardo M. B. de Oliveira, Dr. (UTFPR), em
30/09/2018.
library(readxl);library(lmtest);library(tseries)
#Ler o banco de
dados
BD=read_xlsx(file.choose(),sheet = 1)
#Monta as
equações e as tabelas para armazenar os resultados
variaveis =
colnames(BD)
f_kothari =
as.formula(paste(variaveis[3]," ~ ",
paste(variaveis[4:length(variaveis)],collapse = "+")))
Setores =
sort(unique(BD$setor)); Anos = sort(unique(BD$year))
lista_resultados
= list()
tabela_R2 =
matrix(NA,length(Setores),length(Anos));colnames(tabela_R2)=Anos;rownames(tabela_R2)=paste("Setor",Setores)
tabela_DW =
matrix(NA,length(Setores),length(Anos));colnames(tabela_DW)=Anos;rownames(tabela_DW)=paste("Setor",Setores)
tabela_JB =
matrix(NA,length(Setores),length(Anos));colnames(tabela_JB)=Anos;rownames(tabela_JB)=paste("Setor",Setores)
tabela_LB =
matrix(NA,length(Setores),length(Anos));colnames(tabela_LB)=Anos;rownames(tabela_LB)=paste("Setor",Setores)
#Roda o loop para
calcular os valores das regressões lineares
for (i in 1:length(Setores))
{for(j in 1:length(Anos))
{BD_aux =
BD[which((BD$setor==Setores[i])&(BD$year==Anos[j]),arr.ind = F),]
attach(BD_aux)
resultado =
summary(lm(formula = f_kothari,data = BD_aux,na.action = na.omit))
lista_resultados[paste("Setor",Setores[i],"_",Anos[j])]
= list(resultado)
tabela_R2[i,j] = resultado$adj.r.squared
tabela_DW[i,j] = dwtest(resultado,alternative
= "two.sided")$p.value
tabela_JB[i,j] =
jarque.bera.test(resultado$residuals)$p.value
tabela_LB[i,j] =
Box.test(resultado$residuals^2,lag=5,type = "Ljung-Box")$p.value
detach(BD_aux)
}
}
#Imprime na tela
as tabelas de resultados
rm(BD_aux,resultado,Anos,f_kothari,i,j,Setores,variaveis)
round(tabela_R2,digits
= 3)
round(tabela_DW,digits
= 3)
round(tabela_JB,digits
= 3)
round(tabela_LB,digits
= 3)
Nenhum comentário:
Postar um comentário