1 Estatística descritiva

  1. O livro “Estatística Básica” de W. O. Bussab e P. A. Morettin traz no segundo capítulo um conjunto de dados hipotético de atributos de 36 funcionários da companhia “Milsa”. Este conjunto de dados está disponível em formato CSV neste endereço. Com isso:
    1. Faça a importação destes dados para o R.
    2. Considerando a variável “estado civil” (Est.civil):
      1. Faça tabelas de frequência absoluta e relativa
      2. Faça um gráfico de barras e um de setores (“pizza”)
    3. Considerando a variável “grau de instrução” (Inst):
      1. Faça tabelas de frequência absoluta e relativa
      2. Faça um gráfico de barras e um de setores (“pizza”)
    4. Considerando a variável “número de filhos” (Filhos):
      1. Faça tabelas de frequência absoluta, relativa e acumulada
      2. Faça um gráfico com as frequências relativas e outro com as frequências relativas acumuladas
    5. Considerando a variável “salário” (Salario):
      1. Verifique os valores máximo e mínimo e qual seria o número adequado de classes para a construção de uma tabela de frequência para resumir esta variável
      2. Faça um histograma
    6. Considerando as variáveis “estado civil” (Est.civil) e “grau de instrução” (Inst):
      1. Faça uma tabela de contingência para resumir o cruzamento destas duas variáveis
      2. A partir da tabela de contingância, faça um gráfico de barras (veja como ficam as barras sobrepostas e lado a lado)
    7. Considerando as variáveis “grau de instrução” (Inst) e “salário” (Salario):
      1. Faça um boxplot para verificar a relação entre estas duas variáveis
      2. Calcule a média e o desvio-padrão dos salários para cada grau de instrução
    8. Considerando as variáveis Anos e Meses:
      1. Calcule a idade como \(\text{Anos} + \text{Meses}/12\) (criando uma nova “coluna” chamada Idade)
    9. Considerando as variáveis Salario e Idade:
      1. Faça um gráfico para explorar a relação entre estas duas variáveis
      2. Calcule a correlação entre estas duas variáveis
##----------------------------------------------------------------------
## 1. Faça a importação destes dados para o R.
url <- "http://www.leg.ufpr.br/~fernandomayer/dados/milsa.csv"
milsa <- read.table(url, header = TRUE, sep = ",", dec = ".")
str(milsa)
##----------------------------------------------------------------------
## 2. Considerando a variável "estado civil" (`Est.civil`):
# a. Faça tabelas de frequência absoluta e relativa
table(milsa$Est.civil)
prop.table(table(milsa$Est.civil))
# b. Faça um gráfico de barras e um de setores ("pizza")
barplot(table(milsa$Est.civil))
pie(table(milsa$Est.civil))
##----------------------------------------------------------------------
## 3. Considerando a variável "grau de instrução" (`Inst`):
# a. Faça tabelas de frequência absoluta e relativa
table(milsa$Inst)
prop.table(table(milsa$Inst))
# b. Faça um gráfico de barras e um de setores ("pizza")
barplot(table(milsa$Inst))
pie(table(milsa$Inst))
##----------------------------------------------------------------------
## 4. Considerando a variável "número de filhos" (`Filhos`):
# a. Faça tabelas de frequência absoluta, relativa e acumulada
table(milsa$Filhos)
prop.table(table(milsa$Filhos))
cumsum(table(milsa$Filhos))
# b. Faça um gráfico com as frequências relativas e outro com as
# frequências relativas acumuladas
plot(prop.table(table(milsa$Filhos)))
plot(cumsum(prop.table(table(milsa$Filhos))), type = "S",
     axes = FALSE)
axis(1, at = 1:5, labels = c(0, 1, 2, 3, 5))
axis(2)
box()
##----------------------------------------------------------------------
## 5. Considerando a variável "salário" (`Salario`):
# a. Verifique os valores máximo e mínimo e qual seria o número
# adequado de classes para a construção de uma tabela de
# frequência para resumir esta variável
range(milsa$Salario)
nclass.Sturges(milsa$Salario)
classes <- cut(milsa$Salario, breaks = nclass.Sturges(milsa$Salario))
table(classes)
# b. Faça um histograma
hist(milsa$Salario)
##----------------------------------------------------------------------
## 6. Considerando as variáveis "estado civil" (`Est.civil`) e "grau de
## instrução" (`Inst`):
# a. Faça uma tabela de contingência para resumir o cruzamento
# destas duas variáveis
tab <- table(milsa$Est.civil, milsa$Inst)
# b. A partir da tabela de contingância, faça um gráfico de barras
# (veja como ficam as barras sobrepostas e lado a lado)
par(mfrow = c(1,2))
barplot(tab, legend = TRUE)
barplot(tab, beside = TRUE, legend = TRUE)
par(mfrow = c(1,1))
##----------------------------------------------------------------------
## 7. Considerando as variáveis "grau de instrução" (`Inst`) e
## "salário" (`Salario`):
# a. Faça um *boxplot* para verificar a relação entre estas duas
# variáveis
boxplot(Salario ~ Inst, data = milsa)
# b. Calcule a média e o desvio-padrão dos salários para cada grau
# de instrução
with(milsa, tapply(Salario, Inst, mean))
with(milsa, tapply(Salario, Inst, sd))
##----------------------------------------------------------------------
## 8. Considerando as variáveis `Anos` e `Meses`:
# a. Calcule a idade como $\text{Anos} + \text{Meses}/12$ (criando
# uma nova "coluna" chamada `Idade`)
milsa$Idade <- milsa$Anos + milsa$Meses/12
##----------------------------------------------------------------------
## 9. Considerando as variáveis `Salario` e `Idade`:
# a. Faça um gráfico para explorar a relação entre estas duas
# variáveis
plot(Salario ~ Idade, data = milsa)
# b. Calcule a correlação entre estas duas variáveis
cor(milsa$Idade, milsa$Salario)
  1. Experimente as funções mean(), var(), sd(), median(), quantile() nos dados mostrados anteriormente (“milsa”). Veja a documentação das funções e as opções de uso.
##----------------------------------------------------------------------
## Usando a variável Salario
mean(milsa$Salario)
var(milsa$Salario)
sd(milsa$Salario)
median(milsa$Salario)
quantile(milsa$Salario)
##----------------------------------------------------------------------
## Usando a variável Filhos
mean(milsa$Filhos, na.rm = TRUE)
var(milsa$Filhos, na.rm = TRUE)
sd(milsa$Filhos, na.rm = TRUE)
median(milsa$Filhos, na.rm = TRUE)
quantile(milsa$Filhos, na.rm = TRUE)
  1. Carregue o conjunto de dados USArrests com data(USArrests). Examine a sua documentação com help(USArrests) e responda as perguntas a seguir:
    1. Qual o número médio e mediano de cada um dos crimes?
    2. Encontre a mediana e quartis para cada crime.
    3. Encontre o número máximo e mínimo para cada crime.
    4. Faça um gráfico adequado para o número de assassinatos (Murder).
    5. Faça um boxplot para o número de estupros (Rape).
    6. Verifique se há correlação entre os diferentes tipos de crime.
    7. Verifique se há correlação entre os crimes e a proporção de população urbana.
    8. Encontre os estados com maior e menor ocorrência de cada tipo de crime.
    9. Encontre os estados com maior e menor ocorrência per capta de cada tipo de crime.
    10. Encontre os estados com maior e menor ocorrência do total de crimes.
    11. Calcule a média de crimes (entre Murder, Assault e Rape) para cada estado.
##----------------------------------------------------------------------
data(USArrests)
str(USArrests)
##----------------------------------------------------------------------
## a. Qual o número médio e mediano de cada um dos crimes?
crimes <- c("Murder", "Assault", "Rape")
apply(USArrests[, crimes], 2,
      function(x) c(Media = mean(x), Mediana = median(x)))
##----------------------------------------------------------------------
## b. Encontre a mediana e quartis para cada crime.
apply(USArrests[, crimes], 2, quantile)
##----------------------------------------------------------------------
## c. Encontre o número máximo e mínimo para cada crime.
apply(USArrests[, crimes], 2, range)
apply(USArrests[, crimes], 2,
      function(x) c(Min = min(x), Max = max(x)))
##----------------------------------------------------------------------
## d. Faça um gráfico adequado para o número de assassinatos
## (`Murder`).
hist(USArrests$Murder)
##----------------------------------------------------------------------
## e. Faça um *boxplot* para o número de estupros (`Rape`).
boxplot(USArrests$Rape)
##----------------------------------------------------------------------
## f. Verifique se há correlação entre os diferentes tipos de crime.
plot(USArrests[, crimes])
cor(USArrests[, crimes])
##----------------------------------------------------------------------
## g. Verifique se há correlação entre os crimes e a proporção de
## população urbana.
plot(USArrests)
cor(USArrests)
##----------------------------------------------------------------------
## h. Encontre os estados com maior e menor ocorrência de cada tipo de
## crime.
# Murder
row.names(USArrests)[which.min(USArrests$Murder)]
row.names(USArrests)[which.max(USArrests$Murder)]
# Assault
row.names(USArrests)[which.min(USArrests$Assault)]
row.names(USArrests)[which.max(USArrests$Assault)]
# Rape
row.names(USArrests)[which.min(USArrests$Rape)]
row.names(USArrests)[which.max(USArrests$Rape)]
##----------------------------------------------------------------------
## i. Encontre os estados com maior e menor ocorrência per capta de cada
## tipo de crime.
# Os crimes estao em numeros por 100.000 habitantes. Para calcular o
# numero de crimes per capta (por habitante), basta dividir cada coluna
# por 100.000, e multiplicar pela porporcao de populacao urbana
USArrests <- transform(USArrests, Murder2 = Murder/100000 * UrbanPop,
                       Assault2 = Assault/100000 * UrbanPop,
                       Rape2 = Rape/100000 * UrbanPop)
# Murder per capta
row.names(USArrests)[which.min(USArrests$Murder2)]
row.names(USArrests)[which.max(USArrests$Murder2)]
# Assault per capta
row.names(USArrests)[which.min(USArrests$Assault2)]
row.names(USArrests)[which.max(USArrests$Assault2)]
# Rape per capta
row.names(USArrests)[which.min(USArrests$Rape2)]
row.names(USArrests)[which.max(USArrests$Rape2)]
##----------------------------------------------------------------------
## j. Encontre os estados com maior e menor ocorrência do total de crimes.
# Cria uma coluna com o total de crimes
USArrests <- transform(USArrests, Total = Murder + Assault + Rape)
row.names(USArrests)[which.min(USArrests$Total)]
row.names(USArrests)[which.max(USArrests$Total)]
##----------------------------------------------------------------------
## k. Calcule a média de crimes (entre `Murder`, `Assault` e `Rape`)
## para cada estado.
apply(USArrests[, crimes], 1, mean)

2 Probabilidade

  1. Para \(X \sim N(90, 100)\), obtenha:
    1. \(P(X \leq 115)\)
    2. \(P(X \geq 80)\)
    3. \(P(X \leq 75)\)
    4. \(P(85 \leq X \leq 110)\)
  2. Sendo \(X\) uma variável seguindo o modelo Binomial com parâmetros \(n = 15\) e \(p = 0.4\), pergunta-se:
    1. \(P(X \geq 14)\)
    2. \(P(8 < X \leq 10)\)
  3. Uma empresa informa que 30% de suas contas a receber de outras empresas encontram-se vencidas. Se o contador da empresa seleciona aleatoriamente 5 contas, determine a probabilidade de:
    1. Nenhuma conta estar vencida
    2. Exatamente duas contas estarem vencidas
    3. Três ou mais contas estarem vencidas
  4. Uma empresa recebe 720 emails em um intervalo de 8 horas. Qual a probabilidade de que:
    1. Em 6 minutos receba pelo menos 3 emails?
    2. Em 4 minutos não receba nenhum email?
  5. O processo de empacotamento de uma fábrica de cereais foi ajustado de maneira que uma média de \(\mu = 13,0\) kg de cereal seja colocado em cada caixa. Sabe-se que existe uma pequena variabilidade no enchimento dos pacotes devido à fatores aleatórios, e que o desvio-padrão do peso de enchimento é de \(\sigma = 0,1\) kg. Assume-se que a distribuição dos pesos tem distribuição normal. Com isso, determine as probabilidades de que uma caixa escolhida ao acaso:
    1. Pese entre 13,0 e 13,2 kg.
    2. Tenha um peso maior do que 13,25 kg.
    3. Pese entre 12,8 e 13,1 kg.
    4. Pese entre 13,1 e 13,2 kg.
## a
pnorm(13.2, 13, 0.1) - pnorm(13, 13, 0.1)
## b
pnorm(13.25, 13, 0.1, lower.tail = FALSE)
## c
pnorm(13.1, 13, 0.1) - pnorm(12.8, 13, 0.1)
## d
pnorm(13.2, 13, 0.1) - pnorm(13.1, 13, 0.1)
  1. Faça os seguintes gráficos:
    1. da função de densidade de uma variável com distribuição de Poisson com parâmetro \(\lambda = 5\)
    2. da densidade de uma variável \(X \sim N(90, 100)\)
    3. sobreponha ao gráfico anterior a densidade de uma variável \(Y \sim N(90, 80)\) e outra \(Z \sim N(85, 100)\)
    4. densidades de distribuições \(\chi^2\) com 1, 2 e 5 graus de liberdade.

3 Estatística inferencial

  1. Um fabricante sabe que a vida útil das lâmpadas que fabrica tem dstribuição aproximadamente normal, com desvio-padrão populacional (conhecido) de 200 horas. Para estimar a vida média das lâmpadas, foram amostradas 400 delas, obtendo uma vida média de 1000 horas. Construa intervalos de confiança para estimar a média da população, com níveis de confiança de
    1. \(\gamma = 0,90\)
    2. \(\gamma = 0,95\)
##----------------------------------------------------------------------
sigma <- 200
n <- 400
xbarra <- 1000
##----------------------------------------------------------------------
## a.
# valor de z
qnorm(0.05); qnorm(0.95)
xbarra + (qnorm(0.95) * (sigma/sqrt(n))) * c(-1, 1)
##----------------------------------------------------------------------
## b.
# valor de z
qnorm(0.025); qnorm(0.975)
xbarra + (qnorm(0.975) * (sigma/sqrt(n))) * c(-1, 1)
  1. Uma fábrica de automóveis anuncia que seus carros consomem, em média, 11 litros por 100 km, com desvio-padrão de 0,8 litro. Uma revista decide testar essa afirmação e analisa 35 carros dessa marca, obtendo 11,4 litros por 100 km como consumo médio. Admintindo que o consumo tenha distribuição normal, ao nível de 10%, o que a revista concluirá sobre o anúncio da fábrica?
##----------------------------------------------------------------------
mu0 <- 11
sigma <- 0.8
n <- 35
xbarra <- 11.4
##----------------------------------------------------------------------
zcalc <- (xbarra - mu0)/(sigma/sqrt(n))
zcrit <- qnorm(0.95)
zcalc > zcrit
pnorm(zcalc, lower.tail = FALSE) * 2
  1. Um investidor interessado em desenvolver um centro comercial, é informado por um representante de um grupo comunitário que a renda média familiar na comunidade é de no mínimo R$ 15.000,00 por ano. Supõe-se que os valores de renda na população sejam normalmente distribuídos. Para uma amostra aleatória de \(n=15\) famílias, a média amostral foi de R$ 14.000,00, e o desvio-padrão amostral foi de R$ 2.000,00. Com base nessa amostra, teste a hipótese do salário médio na comunidade ser no mínimo R$ 15.000,00, ao nível de 5% de significância.
##----------------------------------------------------------------------
mu0 <- 15000
n <- 15
xbarra <- 14000
s <- 2000
##----------------------------------------------------------------------
tcalc <- (xbarra - mu0)/(s/sqrt(n))
tcrit <- qt(0.05, df = n - 1)
abs(tcalc) > abs(tcrit)
pt(tcalc, df = n - 1)
  1. Em um estudo sobre caranguejos, 156 indivíduos de duas espécies (“azul” e “laranja”) foram medidos. Os dados estão disponíveis neste endereço.
    1. Testar a hipótese de que a média (\(\mu\)) de CL (comprimento da carapaça) é igual a 30 mm (com 95% de confiança).
    2. Testar a hipótese de que a média (\(\mu\)) de CL é menor ou igual a 30 mm (com 95% de confiança).
    3. Testar a hipótese de que a média (\(\mu\)) de CL é maior ou igual a 30 mm (com 95% de confiança).
    4. Faça dois histogramas lado-a-lado da medida CL para cada uma das espécies.
    5. Testar a hipótese de que a diferença entre a média de CL da espécie azul (\(\mu_A\)) e a média de CL da espécie laranja (\(\mu_L\)) é igual a 0 (zero) (com 95% de confiança).
    6. Testar a hipótese de que a diferença entre a média de CL da espécie azul (\(\mu_A\)) e a média de CL da espécie laranja (\(\mu_L\)) é menor ou iual a 0 (zero) (com 95% de confiança). Em outras palavras: O CL médio é menor para a espécie azul?
##----------------------------------------------------------------------
url <- "http://www.leg.ufpr.br/~fernandomayer/dados/crabs.csv"
dados <- read.table(url, header = TRUE, sep = ";", dec = ",")
str(dados)
##----------------------------------------------------------------------
## a. Testar a hipótese de que a média de CL (comprimento da carapaça) é
## igual a 30 mm (com 95% de confiança).
t.test(x = dados$CL, mu = 30)
## Fazendo a mao
mu0 <- 30
n <- length(dados$CL)
xbarra <- mean(dados$CL)
s <- sd(dados$CL)
tcalc <- (xbarra - mu0)/(s/sqrt(n))
tcrit <- qt(0.975, df = n - 1)
abs(tcalc) > abs(tcrit)
pt(tcalc, df = n - 1, lower.tail = FALSE) * 2
##----------------------------------------------------------------------
## b. Testar a hipótese de que a média de CL é menor ou igual a 30 mm
## (com 95% de confiança).
t.test(x = dados$CL, alternative = "greater", mu = 30)
## Fazendo a mao
mu0 <- 30
n <- length(dados$CL)
xbarra <- mean(dados$CL)
s <- sd(dados$CL)
tcalc <- (xbarra - mu0)/(s/sqrt(n))
tcrit <- qt(0.95, df = n - 1)
abs(tcalc) > abs(tcrit)
pt(tcalc, df = n - 1, lower.tail = FALSE)
##----------------------------------------------------------------------
## c. Testar a hipótese de que a média de CL é maior ou igual a
## 30 mm (com 95% de confiança).
t.test(x = dados$CL, alternative = "less", mu = 30)
## Fazendo a mao
mu0 <- 30
n <- length(dados$CL)
xbarra <- mean(dados$CL)
s <- sd(dados$CL)
tcalc <- (xbarra - mu0)/(s/sqrt(n))
tcrit <- qt(0.05, df = n - 1)
pt(tcalc, df = n - 1, lower.tail = TRUE)
##----------------------------------------------------------------------
## d. Faça dois histogramas lado-a-lado da medida CL para cada uma das
## espécies.
par(mfrow = c(1,2))
hist(dados$CL[dados$especie == "azul"])
hist(dados$CL[dados$especie == "laranja"])
par(mfrow = c(1,1))
## Usando o pacote lattice
library(lattice)
histogram(~ CL | especie, data = dados)
##----------------------------------------------------------------------
## e. Testar a hipótese de que a diferença entre a média de CL da
## espécie azul e a média de CL da espécie laranja é igual a 0 (zero)
## (com 95% de confiança).
t.test(CL ~ especie, data = dados, mu = 0)
##----------------------------------------------------------------------
## f. Testar a hipótese de que a diferença entre a média de CL da espécie
## azul e a média de CL da espécie laranja é menor ou igual a 0 (com
## 95% de confiança). Em outras palavras: O CL médio é menor para a
## espécie azul?
t.test(CL ~ especie, data = dados, mu = 0, alternative = "greater")

Licença Creative Commons 4.0

Este conteúdo está disponível por meio da Licença Creative Commons 4.0