Neste trabalho, apresentaremos a linguagem R. Como já é conhecido, o R é uma linguagem de programação voltada para diversas áreas matemáticas, incluindo estatística e gráficos. Ao longo do tempo, o R tem se destacado na manipulação, análise e visualização de dados, sendo considerado por muitos como uma das melhores opções para esses fins.
O trabalho está sendo orientado pelo professor Me. Caio Oliveira Azevedo, e tem como livro de referência a ESTATÍSTICA BÁSICA, 9º edição, Pedro A. Morettin Wilton de O. Bussab. Para dúvidas, Instragam @obraga_16
Neste trabalho, abordaremos o uso da linguagem R na análise da
estatística descritiva. Nosso objetivo é demonstrar como calcular as
principais medidas utilizadas em uma análise de dados.
O trabalho será divido em seis partes, são elas;
Introdução
Dados a serem analisados;
2.1 Criando objetos;
2.2 Tabelas;
2.3 Importando dados;
Frequência;
Histograma;
Medidas de tendência central;
Medidas de dispersão;
Quantis empíricos.
Material de apoio
Antes de começarmos as análises, é essencial obter os dados necessários. Existem várias maneiras de adquirir esses dados no R. Podemos criar objetos diretamente no R, criar tabelas a partir desses objetos ou importar os dados de arquivos em nosso diretório. Esses arquivos podem estar em formato Excel (.xlsx), texto (.txt) ou outros formatos.
Exemplo 1:
Usaremos uma base para escrevermos na linguaguem R.
Seja os dado, retirado do problema 2 do capítulo 3 do livro ESTATÍSTICA
BÁSICA, 9º edição, Pedro A. Morettin Wilton de O. Bussab.
As taxas de juros recebidas por 10 ações durante um certo período foram (medidas em porcentagem) \[(2.59; \;2.64;\; 2.60;\; 2.62;\; 2.57;\; 2.55;\; 2.61;\; 2.50;\; 2.63;\; 2.64) \]
Para criar um objeto, basta colocar um nome (Letras, nomes específicos, abreviações, etc..), da seguinte forma;
taxas <- c(2.59, 2.64, 2.60, 2.62, 2.57, 2.55, 2.61, 2.50, 2.63, 2.64)
# Usando "<-" ou "=", acompanhada de "c()" ;
# Para vizualizar o objeto criado:
taxas
## [1] 2.59 2.64 2.60 2.62 2.57 2.55 2.61 2.50 2.63 2.64
E se tivermos nomes desses ações, \[ (Ativo1,\; Ativo2,\; Ativo3,\;Ativo4,\;Ativo5,\;Ativo6,\;Ativo7,\;Ativo8,\;Ativo9,\;Ativo10,\;) \]
#Criando objetos com nomes
ativos<- c("Ativo1","Ativo2","Ativo3","Ativo4","Ativo5","Ativo6","Ativo7","Ativo8","Ativo9","Ativo10")
ativos
## [1] "Ativo1" "Ativo2" "Ativo3" "Ativo4" "Ativo5" "Ativo6" "Ativo7"
## [8] "Ativo8" "Ativo9" "Ativo10"
#Para atriuir "nomes" a objetos/vetores, basta colocar em aspas ("")
Para adicionar tabelas simples, usamos uma função data.frame()
Por exemplo, vamos criar uma tabela com os vetores “taxas” e
“ativos”
tabela1 <- data.frame(ativos, taxas)
#vejamos atribuímos o nome tabela1 para a tabela cujo tem as colunas, ativos e taxas.
#Para vizualizar a tabela
tabela1
## ativos taxas
## 1 Ativo1 2.59
## 2 Ativo2 2.64
## 3 Ativo3 2.60
## 4 Ativo4 2.62
## 5 Ativo5 2.57
## 6 Ativo6 2.55
## 7 Ativo7 2.61
## 8 Ativo8 2.50
## 9 Ativo9 2.63
## 10 Ativo10 2.64
Dentre umas das muitas formas de importação de dados, uma das principais maneiras é a importação de arquivos Excel (.xlsx), mas para isto, devemos instalar o papote “readxl”, uma vez baixado devemos habilitar da seguinte maneira;
library(readxl)
Supomos que queremos as informações do exemplo 2 a seguir:
Uma vez com o pacote habilitado e os dados estando disponíveis em um arquivo de Excel, para importa-los devemos usar o seguinte comando
dados <- read_excel("C:/Users/Cliente/Desktop/Gustavo/R/cia_MB.xlsx")
#Dê nome a tabela, comando "<- read_excel(DIRETORIO DENTRO DO SEU PC)"
#View(dados) para visualizar em outra aba
#para ver;
dados
## # A tibble: 36 × 7
## obs X Y Z S U V
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <chr>
## 1 1 solteiro ensino fundamental NA 4 26 interior
## 2 2 casado ensino fundamental 1 4.56 32 capital
## 3 3 casado ensino fundamental 2 5.25 36 capital
## 4 4 solteiro ensino médio NA 5.73 20 outra
## 5 5 solteiro ensino fundamental NA 6.26 40 outra
## 6 6 casado ensino fundamental 0 6.66 28 interior
## 7 7 solteiro ensino fundamental NA 6.86 41 interior
## 8 8 solteiro ensino fundamental NA 7.39 43 capital
## 9 9 casado ensino médio 1 7.59 34 capital
## 10 10 solteiro ensino médio NA 7.44 23 outra
## # ℹ 26 more rows
A ideia para importar arquivos de texto (.txt) é análogo.
Para a frequência de uma variável, o comando é simples, freq()
Antes devemos instalar e habilitar o pacote “descr”!
Usaremos o exemplo 2, para vermos as frequências.
library(descr)
freq(dados$X, plot=FALSE) #Devemos colocar primeiro o nome da "tabela" e depois separados por um "$" a columa a ser analisada.
## dados$X
## Frequência Percentual
## casado 20 55.56
## solteiro 16 44.44
## Total 36 100.00
#plot=FALSE para não criar um gráfico de barras simples.
#plot=TRUE para criar um gráfico de barras simples
Para não precisarmos usar o “$” devemos usar o comando attach(“tabela”), que os próximos cálculos usaremos somente a columa a ser analisada. Veja:
attach(dados)
freq(Y, plot = FALSE)
## Y
## Frequência Percentual
## ensino fundamental 12 33.33
## ensino médio 18 50.00
## superior 6 16.67
## Total 36 100.00
Para variáveis quantitativas:
freq(S, plot = FALSE)
## S
## Frequência Percentual
## 4 1 2.778
## 4.56 1 2.778
## 5.25 1 2.778
## 5.73 1 2.778
## 6.26 1 2.778
## 6.66 1 2.778
## 6.86 1 2.778
## 7.39 1 2.778
## 7.44 1 2.778
## 7.59 1 2.778
## 8.12 1 2.778
## 8.46 1 2.778
## 8.74 1 2.778
## 8.95 1 2.778
## 9.13 1 2.778
## 9.35 1 2.778
## 9.77 1 2.778
## 9.8 1 2.778
## 10.53 1 2.778
## 10.76 1 2.778
## 11.06 1 2.778
## 11.59 1 2.778
## 12 1 2.778
## 12.79 1 2.778
## 13.23 1 2.778
## 13.6 1 2.778
## 13.85 1 2.778
## 14.69 1 2.778
## 14.71 1 2.778
## 15.99 1 2.778
## 16.22 1 2.778
## 16.61 1 2.778
## 17.26 1 2.778
## 18.75 1 2.778
## 19.4 1 2.778
## 23.3 1 2.778
## Total 36 100.000
Observe que não fica algo visualmente bonito, nesses casos, é
possível criar um tabela de frequência com intervalos
predeterminado.
Primeiro instalaremos o pacote “fdth”. Em seguida usaremos seguinte
sintaxe:
library(fdth)
tabela2 <- fdt(S,start = 4, end = 24, h=5)
#S; a variável a ser analisada
#start; onde o primeiro intervalo começa.
#end; onde o ultimo intervalo termina, observe que não colocamos o valor da última observação, pois o limite superior do intervalo é aberto.
#h; a amplitude do intervalo.
tabela2
## Class limits f rf rf(%) cf cf(%)
## [4,9) 14 0.39 38.89 14 38.89
## [9,14) 13 0.36 36.11 27 75.00
## [14,19) 7 0.19 19.44 34 94.44
## [19,24) 2 0.06 5.56 36 100.00
Para criar histogrmas, usaremos função hist(), para isso usaremos um exemplo, o problema 3 do capítulo 3, do livro base.
Problema 3 do capítulo 3
Para facilitar um projeto de ampliação da rede de esgoto de uma certa
região de uma cidade, as autoridades tomaram uma amostra de tamanho 50
dos 270 quarteirões que compõem a região, e foram encontrados os
seguintes números de casas por quarteirão:
#criando um objetivo com os dados
p3c3 <- c(rep(c(2,3,10,13,14,15,16,18,20,21,22,23,24,25,26,27,29,30,32,36,42,44,45,46,48,52,58,59,61,65,66,68,75,78,80,89,90,92,97),c(2,1,1,1,1,2,2,2,1,1,2,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,1,3,1,2,1,1,1,1,1,1,1,1)))
#A função rep(x,y), faz com o x se repita y-vezes, assim ecomizando ter que repeir números.
Construindo o histograma. devemos usar o comando hist(), sendo o argumento a variável que queremos, que faça o histograma, com relação a frequência absoluta;
hist(p3c3, freq = FALSE)
#Se quisermos a frequência absoluta, basta colocar, freq=TRUE.
Para mudar os títulos dos eixos;
hist(p3c3, freq = FALSE,
main = "Quantidade de casas por quarteirão",
xlab = "Casas", ylab = "Densidade", )
Para separar as classes em 5, devemos ter em mente que a amplitude
total da amostra é 97 - 2 = 95, que divido por 5 temos 19, ou seja,
temos uma amplitude de classe igual a 19.
Adiante para determinar as classes usaremos a função breaks= c() permite
definir o limite de cada classe, para isso basta determinar os valores
limites das classes. No caso usaremos uma sequência para os valores da
função.
hist(p3c3, freq = FALSE,
main = "Quantidade de casas por quarteirão",
xlab = "Casas", ylab = "Densidade",
breaks = seq(2,97,19))
Para alinhar os separadores dos eixos x, usaremos a função xaxp que
alterar a posição e quantidade de separadores.
xaxp=c(“limite inferior”, “limite superior”, “quantidade de
separadores”), no script;
hist(p3c3, freq = FALSE,
main = "Quantidade de casas por quarteirão",
xlab = "Casas", ylab = "Densidade",
breaks = seq(2,97,19),
xaxp=c(2,97,5))
As medidas de tendência cetral são
* Media
* Mediana
* Moda
Usando o exemplo 1: \[taxas=(2.59; \;2.64;\; 2.60;\; 2.62;\; 2.57;\; 2.55;\; 2.61;\; 2.50;\; 2.63;\; 2.64) \]
mean(taxas)
## [1] 2.595
median(taxas)
## [1] 2.605
# usando da função "table"
moda <- table(taxas) # Retorna o os dados e as freq. absolutas.
moda[moda == max(moda)] #Procura o elemento que tem a maior freq. absoluta
## 2.64
## 2
As medidas de dispersão principais são elas:
* variância amostral
* variância populacional
* desvio padrão amostral
* desvio padrão
Sabendo que
\[ {dp}^2_{amostral}=var_{amostral}=\frac{\sum_{i=0}^n(x_i-\bar{x})^2}{n-1} \]
E que \[ {dp}^2_{populacional}=var_{populacional}= \frac{\sum_{i=0}^n(x_i-\bar{x})^2}{n} \]
Usaremos os dados do exemplo 1;
Precisaremos do pacote “fdth”
R calcula a variância amostral com a função var()
var(taxas)
## [1] 0.001983333
Usamos a seguinte sintaxe
var(taxas)*((length(taxas)-1)/length(taxas))
## [1] 0.001785
Podemos apenas calcular a raiz quadrada da variância amostral, ou usar a função sd()
sd(taxas)
## [1] 0.04453463
Podemos apenas calcular a raiz quadrada da variância populacional, ou usar a função sd() e usar a seguinte sintaxe.
sd(taxas)*sqrt((length(taxas)-1)/length(taxas))
## [1] 0.04224926
Para achar quartis temos a função “quantile”:
Usando o exemplo 2 a variavel idade (U)
U
## [1] 26 32 36 20 40 28 41 43 34 23 33 27 37 44 30 38 31 39 25 37 30 34 41 26 32
## [26] 35 46 29 40 35 31 36 43 33 48 42
quantile(U)
## 0% 25% 50% 75% 100%
## 20.0 30.0 34.5 40.0 48.0
#Isto é o padrão da função se quisermos os percentis;
quantile(U, probs = seq(0,1,0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 20.0 26.0 29.0 31.0 33.0 34.5 36.0 38.5 41.0 43.0 48.0
#O DEFAUL dessa função é quantile(U, probs= seq(0,1,0.25))