Trabalho criado com a orientação do professor Caio Oliveira Azevedo.
Questões retiradas do livro ESTATÍSTICA BÁSICA, 9º edição, Pedro A. Morettin Wilton de O. Bussab.
Para mais informações siga nas redes sociais Instagram (@obraga_16)
Pacotes a serem utilizados em todo o trabalho.
library(readxl)
library(descr)
library(fdth)
library(ggplot2)
library(graphics)
site <- "https://raw.githubusercontent.com/caio-azevedo/Aulas/main/cia_MB.csv"
dados<- read.table(site, header=T, sep=";", dec = ",", col.names = c("obs", "X", "Y", "Z", "S", "U", "V"))
attach(dados)
#View(dados) Se quiser vizualizar a tabela.
freq(X, plot = FALSE)
## X
## Frequência Percentual
## casado 20 55.56
## solteiro 16 44.44
## Total 36 100.00
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
freq(Z, plot = FALSE)
## Z
## Frequência Percentual Perc. Válido
## 0 4 11.111 20
## 1 5 13.889 25
## 2 7 19.444 35
## 3 3 8.333 15
## 5 1 2.778 5
## NA's 16 44.444
## Total 36 100.000 100
# número de classe
n_class<- nclass.FD(U)
# Dividindo a amplitude total pelo número de classes e
# arredondando para cima.
amp<- ceiling((max(U)-min(U))/n_class)
tab<-fdt(U,start = min(U), end = min(U)+amp*n_class, h=amp)
tab
## Class limits f rf rf(%) cf cf(%)
## [20,26) 3 0.08 8.33 3 8.33
## [26,32) 9 0.25 25.00 12 33.33
## [32,38) 12 0.33 33.33 24 66.67
## [38,44) 9 0.25 25.00 33 91.67
## [44,50) 3 0.08 8.33 36 100.00
Usando os resultados do Problema 2 e da Tabela 2.3:
(a) construa um histograma para a variável idade;
(b) proponha uma representação gráfica para a variável grau de
instrução.
#histograma da idade
hist(U, main = "", freq = FALSE, xlab = "Idade",breaks = seq(20,50,6),ylab = "Densidade",xaxp=c(20,50,5),ylim = c(0,0.1))
Gráfico de pizza.
porc<-round(prop.table(table(Y))*100,2)
grau_intr<-c("Fundamental","Médio", "Superior")
rotulos=paste(grau_intr," - (",porc,"%)",sep="")
pie(table(Y), labels = rotulos, radius=0.95,init.angle = 180,
border = NA, col=c("salmon", "limegreen", "dodgerblue"))
Grafíco de barras.
barplot(table(Y),
ylab="Freq",
cex.lab=1.6, cex.names=1.3, cex.axis = 1.3,
col=c("salmon", "limegreen", "dodgerblue"),
axes=TRUE,
ylim=c(0,20))
A MB Indústria e Comércio, desejando melhorar o nível de seus
funcionários em cargos de chefia, montou um curso experimental e indicou
25 funcionários para a primeira turma. Os dados referentes à seção a que
pertencem, notas e graus obtidos no curso estão na tabela a seguir. Como
havia dúvidas quanto à adoção de um único critério de avaliação, cada
instrutor adotou seu próprio sistema de aferição. Usando dados daquela
tabela, responda as questões:
(a) Após observar atentamente cada variável, e com o intuito de
resumi-las, como você identificaria (qualitativa ordinal ou nominal e
quantitativa discreta ou contínua) cada uma das 9 variáveis
listadas?
(b) Compare e indique as diferenças existentes entre as distribuições
das variáveis Direito, Política e Estatística.
(c) Construa o histograma para as notas da variável Redação. (d)
Construa a distribuição de frequências da variável Metodologia e faça um
gráfico para indicar essa distribuição.
(e) Sorteado ao acaso um dos 25 funcionários, qual a probabilidade de
que ele tenha obtido grau A em Metodologia?
(f) Se, em vez de um, sorteássemos dois, a probabilidade de que ambos
tivessem tido A em Metodologia é maior ou menor do que a resposta dada
em (e)?
(g) Como é o aproveitamento dos funcionários na disciplina Estatística,
segundo a seção a que eles pertencem?
Criando vetores
Variaveis<- c("Secao", "Administracao", "Direito", "Redacao", "Estatisticas", "Ingles", "Metodologia", "Politica", "Economia")
Classificacao<- c("Quantitativa discreta", "Quantitativa continua ", "Quantitativa continua ","Quantitativa continua ","Quantitativa continua ", "Qualitativa ordinal", "Quaitativa ordinal", "Quantitativa continua ", "Quantitativa continua ")
Usando o data.frame
tabela1<- data.frame(Variaveis ,Classificacao )
tabela1
## Variaveis Classificacao
## 1 Secao Quantitativa discreta
## 2 Administracao Quantitativa continua
## 3 Direito Quantitativa continua
## 4 Redacao Quantitativa continua
## 5 Estatisticas Quantitativa continua
## 6 Ingles Qualitativa ordinal
## 7 Metodologia Quaitativa ordinal
## 8 Politica Quantitativa continua
## 9 Economia Quantitativa continua
R- A variável Direito se tem nenhuma variação todos conseguiram a nota a 9,0, enquanto estatística tem variância maior comparada a Política.
Importanto os dados
library(readxl)
pro9 <- read_excel("C:/Users/Cliente/Desktop/Gustavo/R/pro9.xlsx")
attach(pro9)
Construindo o histograma
hist(Redação, freq = FALSE, main = "Histograma de notas em Redação", xlab = "Notas", ylab = "Densidade")
Usando a função fre(), com o plot=TRUE, o R cria um grafíco de barras simples.
freq(Metodologia, plot = TRUE)
## Metodologia
## Frequência Percentual
## A 7 28
## B 8 32
## C 10 40
## Total 25 100
A<- grep("A", Metodologia) #grep() é para saber quem tirou A em Metodologia
prob.A<- length(A)/length(Metodologia) #length() para saber quantas pessoas tiram A.
prob.A
## [1] 0.28
Sendo sorteio simultâneo, usando análise combinatória;
Quantidade total de possibilidade é 25x24 = 600;
E os casos favoráveis é 7x6 = 42
p<- 42/600
p
## [1] 0.07
Departamento Pessoal.
tabela.P<- pro9[grep("P", Secao),]
freq(tabela.P$Estatíst., plot = TRUE, main="Departamento Pessoal (P) - Estatísticas ")
## tabela.P$Estatíst.
## Frequência Percentual
## 8 3 42.86
## 9 3 42.86
## 10 1 14.29
## Total 7 100.00
Seção técnica.
tabela.T<- pro9[grep("T", Secao),]
freq(tabela.T$Estatíst., plot = TRUE, main="Seção técnica (T) - Estatísticas ")
## tabela.T$Estatíst.
## Frequência Percentual
## 7 2 28.57
## 8 2 28.57
## 9 2 28.57
## 10 1 14.29
## Total 7 100.00
Seção de vendas.
tabela.V<- pro9[grep("V", Secao),]
freq(tabela.V$Estatíst., plot = TRUE, main="Seção de vendas (V) - Estatísticas ")
## tabela.V$Estatíst.
## Frequência Percentual
## 4 1 9.091
## 7 3 27.273
## 8 2 18.182
## 9 4 36.364
## 10 1 9.091
## Total 11 100.000
Zona urbana;
alugueisZU <- c(rep(c(2,4,6,8.5,12.5),c(10,40,80,50,20))) #supondo um vetor com as mesma frequências em cada intervalo.
hist(alugueisZU,
main = "Histograma da zona urbana", xlab = "Aluguéis", ylab = "Densidade", #Nome ao histograma, Nome do eixo x, Nome do eixo y
freq = FALSE, #Freq=TRUE - para mostrar a frequência; Freq=FALSE - para mostrar a densidade
breaks = c(2,3,5,7,10,15), #Definir os limites das classes
xaxp=c(2,15,13), #Alterar a posiçao e quantidade de separadores dos eixos x
labels = FALSE, #Se quiser colocar os valores em cima das barras
ylim = c(0,0.25) #limitante do eixo y
)
Zona rural
alugueisZR<- c(rep(c(2,4,6,8.5,12.5),c(30,50,15,5,0)))
#Criando o histograma, análogo ao exemplo da zona rural
hist(alugueisZR,
main = "Histograma da zona rural", xlab = "Aluguéis", ylab = "Densidade",
freq = FALSE,
breaks = c(2,3,5,7,10,15),
xaxp=c(2,15,13),
labels = FALSE,
ylim = c(0,0.4))
Aluguéis na zona rual tem tendência a ser mais baratos.
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. Calcule a média, a mediana e o desvio padrão.
taxas<- c(2.59, 2.64, 2.60, 2.62, 2.57, 2.55, 2.61, 2.50, 2.63, 2.64)
#Média
mean(taxas)
## [1] 2.595
#Mediana
median(taxas)
## [1] 2.605
#Desvio Padrão amostral
sd(taxas)
## [1] 0.04453463
#Desvio Padrão populacional
sd(taxas)*sqrt((length(taxas)-1)/length(taxas))
## [1] 0.04224926
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:
(a) Use cinco intervalos e construa um histograma.
(b) Determine uma medida de posição central e uma medida de
dispersão.
Primeiramente coletar os dados e importar para o R, ou pelo pacote
“readxl” ou pelo pacote “readr”, tanto arquivos do Excel (.xlsx), quanto
arquivos do bloco de notas (.txt).
Para isto, e poder visualizar os dados:
P3C3 <- read_excel("C:/Users/Cliente/Desktop/Gustavo/R/P3C3.xlsx",
col_types = c("numeric"))
attach(P3C3)
#View(P3C3) Se quiser vizualizar a tabela.
Para o item (a), devemos usar o comando hist(), sendo o argumento a variável que queremos, que faça o histograma, com relação a densidade;
hist(quarteiroes, freq = FALSE)
Para mudar os títulos dos eixos;
hist(quarteiroes, 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(quarteiroes, freq = FALSE,
main = "Quantidade de casas por quarteirão",
xlab = "Casas", ylab = "Freq. Absoluta",
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(quarteiroes, freq = FALSE,
main = "Quantidade de casas por quarteirão",
xlab = "Casas", ylab = "Densidade",
breaks = seq(2,97,19),
xaxp=c(2,97,5),)
Moda:
Para a moda, não se tem uma função direta, para isso usaremos a função
table(). Que nos dá uma frequência de quantas vezes uma observação se
repete, ai usando a sintaxe, conseguimos a moda;
moda <- table(quarteiroes)
moda[moda == max(moda)]
## 61
## 3
Ou seja, a moda é o valor 61, que se repete 3 vezes
Mediana:
Existe a função median();
median(quarteiroes)
## [1] 31
Media:
Existe a função median();
mean(quarteiroes)
## [1] 40.42
As medidas de dispersão, veremos algumas aqui, amplitude, variância e
desvio padrão
Amplitude:
Basta fazer a diferença entre a maior observação e a menor.
max(quarteiroes)- min(quarteiroes)
## [1] 95
Variância:
No R, a variância dada é a variância amostral, com o comando var().
var(quarteiroes)
## [1] 680.0037
Desvio padrão:
Desvio padrão amostral, função sd().
sd(quarteiroes)
## [1] 26.07688
Numa pesquisa realizada com 100 famílias, levantaram-se as seguintes informações:
#criando o objeto
filhos<- c(rep(c(0,1,2,3,4,5,6), c(17,20,28,19,7,4,5)))
#Mediana
median(filhos)
## [1] 2
#Sem uma função direta, temos a seguinte sintaxe para acharmos a moda.
modafilhos <- table(filhos)
modafilhos[modafilhos == max(modafilhos)]
## 2
## 28
mean(filhos)
## [1] 2.11
Obtenha o esquema dos cinco números para os dados do Problema 3. Calcule a distância interquartil e as dispersões inferior e superior. Baseado nessas medidas, verifique se a forma da distribuição dos dados é normal.
#Usando os dados do problema 3 (P3C3)
attach(P3C3)
## The following object is masked from P3C3 (pos = 3):
##
## quarteiroes
#Calculando o primeiro e o terceiro quatil
Q1<- quantile(quarteiroes, prob=0.25)
Q1
## 25%
## 20.25
Q3<- quantile(quarteiroes, prob=0.75)
Q3
## 75%
## 61
#Distância interquartil é a diferença entre o terceiro e o primeiro quartil
dis.int.quar. <- Q3 - Q1
dis.int.quar.
## 75%
## 40.75
#Dispersão inferior, é a diferença entre o segundo quartil e a primeira observação
di<- quantile(quarteiroes, probs = 0.5) - min(quarteiroes)
di
## 50%
## 29
#Dispersão superior, é a diferença entre a última observação e o segundo quartil
ds<- max(quarteiroes) - quantile(quarteiroes, probs = 0.5)
ds
## 50%
## 66
#A forma de distribuição dos dados não é normal, pois;
di == ds
## 50%
## FALSE
Obter os três quartis, q(0,1) e q(0,90) para os dados do Problema 3.
attach(P3C3)
## The following object is masked from P3C3 (pos = 3):
##
## quarteiroes
## The following object is masked from P3C3 (pos = 4):
##
## quarteiroes
quantile(quarteiroes, probs = c(0.1,0.25,0.5,0.75,0.9))
## 10% 25% 50% 75% 90%
## 13.90 20.25 31.00 61.00 78.20
#criando o objeto com as mesma frequência nos intervalos
vendas<- c(rep(seq(32.5,67.5,5), c(2,10,18,50,70,30,18,2)))
#criando o histograma
hist(vendas,
main = "Histograma de vendas", xlab = "vendas", ylab = "Densidade", #Nome ao histograma, Nome do eixo x, Nome do eixo y
freq = FALSE, #Freq=TRUE - para mostrar a frequência; Freq=FALSE - para mostrar a densidade
breaks = seq(30,70,5), #Definir os limites das classes
xaxp=c(30,70,8), #Alterar a posiçao e quantidade de separadores dos eixos x
labels = FALSE, #Se quiser colocar os valores em cima das barras
ylim = c(0,0.08) #limitante do eixo y
)
Como os dados estão agrupados em intervalos, para se calcular a média
neste caso, devemos primeiro determinar a média do intervalo e depois
multiplicar pela frequência absoluta do intervalo. Em seguida somar os
resultados e dividir pela quantidade de amostra.
Como o vetor (vendas) criado é formado pelas médias dos invervalos;
x<- sum(vendas)/length(vendas)
x
## [1] 51.2
s<- sd(vendas)
s
## [1] 6.635522
a<- x-2*s
a
## [1] 37.92896
b<- x+2*s
b
## [1] 64.47104
Observando a frequência relativa:
tab163<-fdt(vendas, start = 30, end = 70, h=5)
tab163
## Class limits f rf rf(%) cf cf(%)
## [30,35) 2 0.01 1 2 1
## [35,40) 10 0.05 5 12 6
## [40,45) 18 0.09 9 30 15
## [45,50) 50 0.25 25 80 40
## [50,55) 70 0.35 35 150 75
## [55,60) 30 0.15 15 180 90
## [60,65) 18 0.09 9 198 99
## [65,70) 2 0.01 1 200 100
Percebe-se que \(a=37.92\) está no
intervalo [35,40) e \(b=64.47\) está em
[60,65)
Pelo histograma:
[35,40) tem uma área de 5% com uma base de 5 Queremos saber a área
(\(x\)) de base \(a=37.92\) até 40, logo, por
polarização
\[
\frac{AREA \rightarrow }{BASE\; \rightarrow } \Rightarrow
\frac{x}{40-37.92}= \frac{0.05}{5} \Rightarrow x=2.08\%
\]
Agora em [60,65) tem uma área de 9% com base 5;
Queremos saber a área (\(y\)) de base
60 até \(b=64.47\)
\[
\frac{AREA \rightarrow }{BASE\; \rightarrow } \Rightarrow
\frac{y}{64.46-60}= \frac{0.09}{5} \Rightarrow x=8.028\%
\]
Para achar a porcentagem entre 40 até 60, basta soma as frequências
relativas, então a porcentagem (\(P\))
compreendida entre \(a=37.92\) e \(b=64.47\) é
\[
P= 2.08\%+9\%+25\%+35\%+15\%+8.028\% = 94,108\%
\]
#criando um vetor correspondente a distribuição
#Uma vez que temos as frequências relativas, basta multiplicarmos pelo total (120)
salario <- c(rep(c(1,3,5,8),c(0.25*120,0.4*120,0.2*120,0.15*120)))
#criando o histograma
hist(salario,
main = "Histograma da faixa salarial", xlab = "salário", ylab = "Densidade", #Nome ao histograma, Nome do eixo x, Nome do eixo y
freq = FALSE, #Freq=TRUE - para mostrar a frequência; Freq=FALSE - para mostrar a densidade
breaks = c(0,2,4,6,10), #Definir os limites das classes
xaxp=c(0,10,5), #Alterar a posiçao e quantidade de separadores dos eixos x
labels = TRUE, #Se quiser colocar os valores em cima das barras
ylim = c(0,0.22), #limitante do eixo y
col= c("blue"), #Adicionar cor.
)
#Calculando a média
mean(salario)
## [1] 3.65
#Calculando variância (amostral)
var(salario)
## [1] 5.170588
#Calculando o desvio padrão
sd(salario)
## [1] 2.273893
# Ou
sqrt(var(salario))
## [1] 2.273893
Calcular os quartis pelo R, dessa maneira não nos retornará um
resultado fiel, pois, os dados disponíveis, não são reais, é a média
aritmética das classes de intervalo, logo devemos fazer por
polarização.
1º quartis: pela distribuição de frequência
\[q(0.25)=2\]
Mediana ou 2º quartil
Está entre [2,4), então por polarização, a partir do primeiro intervalo
falta 25% para os 50% \[
\frac{TOTAL\; (AREA) \rightarrow }{BASE\; \rightarrow } \Rightarrow
\frac{0.4}{4-2}= \frac{0.25}{q(0.5)-2} \Rightarrow q(0.5)=3.5
\] Ou seja, \[
M=q(0.5)=3.5
\]
Um aumento de 100% significa dobrar o salário, ou seja:
Média:
#criando novo vetor salario
salario2<- salario*2
#Nova Média
mean(salario2)
## [1] 7.3
# Antiga média
mean(salario)
## [1] 3.65
#ou seja dobrou a média
Poderiamos pensar de maneira geral, Seja \(\bar{x}\) a média original e \(\bar{\bar{x}}\) a nova média. \[ \bar{\bar{x}}=\frac{2x_{1}+2x_{2}+...+2x_{120}}{120}=2\frac{x_{1}+x_{2}+...+x_{120}}{120}=2*\bar{x} \]
Variância:
#Nova variância
var(salario2)
## [1] 20.68235
# Antiga média
var(salario)
## [1] 5.170588
#ou seja quadriplicou a variância
Seja \(s^2\) a variância amostral original e \(\bar{x}\) a média original (\(\bar{\bar{x}}=2\bar{x}\)), e \(s'^2\) a nova variância;
\[ s'^2=\frac{\sum_{4}^{i=1}(2x_i-\bar{\bar{x}})^2}{n-1}=\frac{\sum_{4}^{i=1}(2x_i-2\bar{x})^2}{n-1}= \frac{\sum_{4}^{i=1}[2(x_i-\bar{x})]^2}{n-1} \\ \Leftrightarrow s'^2=4\frac{\sum_{4}^{i=1}(x_i-\bar{x})^2}{n-1} \\ \Leftrightarrow s'^2=4s^2 \]
O pensamento é análogo para o item e)
Seja o abono de 2 salários, logo, devemos somar 2 a cada observação:
#Criando o novo vetor, somando 2 ao vetor originial
salario3 <- salario+2
Média:
#Nova Média
mean(salario3)
## [1] 5.65
# Antiga média
mean(salario)
## [1] 3.65
#ou seja somou 2 a média
Variância:
#Nova variância
var(salario3)
## [1] 5.170588
# Antiga média
var(salario)
## [1] 5.170588
#ou seja a variância não mudou.