INTRODUÇÃO AO SOFTWARE R

Kleber Formiga
Alexsandro Prado
Yuri Azevedo

contabiliDados

Treinamento oferecido pelo projeto contabiliDados. Maiores informações, acesse: https://contabilidados.quarto.pub/

Pacotes

# Instalando pacotes
devtools::install_github("contabilidados/cntdd", force = T)
install.packages("report")
install.packages("psych")

# Carregando pacotes
library(report)
library(cntdd)
library(dplyr)
library(psych)
library(ggplot2)
library(report)

Configuraçoes do ambiente de trabalho

options(scipen = 999) # desativa notação científica

Criando objetos

empresa <- c("alfa", "beta", "gamma", "delta")
receita <- c(1500, 1600, 1700, 1800)
dados <- data.frame(Empresa = empresa, Receita = receita)
View(dados)

Importação de dados

## Arquivo csv 
library(readr)
df <- read_delim("dados.csv", delim = ";", escape_double = FALSE, trim_ws = TRUE)
View(df)

## Arquivo xlsx 
library(readxl)
df <- read_excel("dados.xlsx")
View(df)

Tratando missing values 1

anyNA(df)# verifica a presença de valores ausentes no objeto

df <- na.exclude(dados) # excluir quaisquer casos incompletos do conjunto de dados

Trabalhando com data frame



glimpse(df) #  visão geral compacta dos dados.

summary(df) # estatística descritivas

head(df) # visualizar primeiras linhas do data frame

tail(df) # visualizar ultimas linhas do data frame

names(df) # visualizar apenas os nomes das colunas

nrow(df) # retorna o número de linhas

ncol(df) # retorna o número de colunas

unique(df$empresa) # retorna os valores únicos de uma coluna

View(df) # Abre interface gráfica (janela separada) que exibe uma tabela de dados de forma interativa

Selecionando colunas (variáveis)

df <- df %>% select(ano, empresa, caixaEquiv, estoques, forneced, lucroLiquido, receita, patLiquido, ativoTotal)

Criando uma coluna (variável)

df <- df %>% mutate(dummy_prejuizo = ifelse(lucroLiquido <= 0, 1, 0)) # Dummy numérica
df$dummy_prejuizo <- factor(df$dummy_prejuizo, levels = 0:1, labels = c("lucro", "prejuizo")) # Atribuindo rótulo

df <- df %>% mutate(dummy_lucro_categ = ifelse(lucroLiquido > 0, "bom", "ruim")) # Criando uma coluna (variável) categorizada 

df <- df %>% mutate(roa = lucroLiquido/ativoTotal) # Criando uma coluna (variável) baseada em divisão

Filtrando dados: apenas empresas com lucro

df %>% filter(lucroLiquido > 0)

df %>% filter(lucroLiquido > 0) %>% select(empresa,lucroLiquido, dummy_prejuizo)

Reordenando as linhas de um dataframe do maior para o menor

df %>% arrange(desc(ativoTotal))

Agrupando dados

# Obtendo a quantidade
df %>% group_by(empresa) %>% count()

# Obtendo a média de lucro por empresa
df %>% group_by(empresa) %>%
  summarise(media_lucro = mean(lucroLiquido, na.rm = TRUE))

Vamos praticar: filtre apenas empresas com Patrimonio Liquido positivo…

df %>% filter(patrimonioLiquido > 0)

Vamos praticar: Obtenha a média do ativo total das empresas por ano…

df %>% group_by(ano %>%
  summarise(media_ativototal = mean(ativoTotal, na.rm = TRUE))

Estatística Descritiva

summary(df)

describe(df)

psych::describe(df) %>% select(n, mean, sd, median, min, max)

Análise de Frequência

freqabs <- table(df$dummy_prejuizo) # Frequência Absoluta
freqabs

freqrel <- 100 * prop.table(freqabs) # Frequência Relativa
freqrel

Visualização de dados

## Boxplot
boxplot(df$lucroLiquido)

boxplot(df$lucroLiquido,
        col = "tomato4",     # Cor vibrante da caixa
        border = "black", # Cor contrastante das bordas
        notch = TRUE,    # Adiciona entalhes ao boxplot
        main = "Distribuição do Lucro Líquido",
        xlab = "Lucro Líquido",
        ylab = "Valores",
        outpch = 16,     # Símbolo preenchido para outliers
        outcol = "red")  # Cor dos outliers

## Gráfico de dispersão ----
ggplot(df, aes(ativoTotal, receita)) + geom_point()

ggplot(df, aes(ativoTotal, receita)) + geom_point() + geom_smooth(method = "lm", se = F)

Correlação e Regressão linear

# Correlação
cor.test(df$caixaEquiv, df$receita)

# Regressão MQO
regress <- lm(lucroLiquido ~ receita + ativoTotal + estoques, na.omit(df))

summary(regress)

report(regress)

Regressão Logit

reglogit <- glm(dummy_prejuizo ~ receita + ativoTotal + lucroLiquido, family = binomial(link = "logit"), df )
summary(reglogit)
report(reglogit)

Dúvidas ?

Obrigado!

Material: https://contabilidados.quarto.pub/eventos/introR/introR.html