Lembrando aqui os exemplos empregados no inicío, sobre intervalos de confiança, para variância conhecida da população e não conhecida (uso de uma amostra).
library(MASS)
head(survey)
## Sex Wr.Hnd NW.Hnd W.Hnd Fold Pulse Clap Exer Smoke Height M.I
## 1 Female 18.5 18.0 Right R on L 92 Left Some Never 173.00 Metric
## 2 Male 19.5 20.5 Left R on L 104 Left None Regul 177.80 Imperial
## 3 Male 18.0 13.3 Right L on R 87 Neither None Occas NA <NA>
## 4 Male 18.8 18.9 Right R on L NA Neither None Never 160.00 Metric
## 5 Male 20.0 20.0 Right Neither 35 Right Some Never 165.00 Metric
## 6 Female 18.0 17.7 Right L on R 64 Right Some Never 172.72 Imperial
## Age
## 1 18.250
## 2 17.583
## 3 16.917
## 4 20.333
## 5 23.667
## 6 21.000
mu = 5 # Média da amostra, valor dado
sigma = 2 # Desvio padrão conhecido da população
n = 20 # Tamanho da amostra
stdm = sigma/sqrt(n) # Desvio padrão da média da amostra (std mean)
error = qnorm(0.975)*stdm; error
## [1] 0.8765225
xbar= c(mu - error, mu + error); xbar
## [1] 4.123477 5.876523
mu = mean(survey$Height, na.rm=TRUE) # Média da amostra
sigma = sd(survey$Height, na.rm=TRUE) # Desvio padrão da amostra
n = sum(!is.na(survey$Height)) # Tamanho da amostra
stdm = sigma / sqrt(n) # ESTIMATIVA do desvio padrão da média da amostra (std mean)
error = qt(0.975, df= n - 1 )*stdm; error
## [1] 1.342878
xbar= c(mu - error, mu + error); xbar
## [1] 171.0380 173.7237
Para os testes de hipóteses vamos empregar o t.test()
a menos de menção contrária.
Considere a base abaixo.
head(ToothGrowth)
## len supp dose
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
help(ToothGrowth)
## starting httpd help server ... done
len
, de dados sobre crescimento dentário, para um nível de confiança de 95% (Você conhece a variância? acho que não :-) ).Solução
Solução
Solução
Considere a base de dados.
bitcoin = read.csv('https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/3_TwoNumOrdered.csv',sep=' ',header=T)
head(bitcoin)
## date value
## 1 2013-04-28 135.98
## 2 2013-04-29 147.49
## 3 2013-04-30 146.93
## 4 2013-05-01 139.89
## 5 2013-05-02 125.60
## 6 2013-05-03 108.13
Considerando a série toda a histórica do valor do Bitcoin, qual o intervalo de confiança com nível de 95%? (vamos considerar que não conhecemos a variância, ela será mais conservadora).
Crie um atributo year
para as cotações de bitcoin. Empregue esse campo para auxiliá-lo para construir o gráfico a seguir. Para cada ano exiba em um gráfico o intervalo de confiança com nível de confiabilidade de 95% para cada ano.
Dica: Empregue e modifique os exercícios e exemplos anteriores. Selecione o ano bitcoin[bitcoin$Year == ano ]$value
. Você também pode querer empregar unique(bitcoin$year)
.
Que anos apresentam intervalos de confiança maiores?
Solução
Considere a base.
head(USArrests)
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Alaska 10.0 263 48 44.5
## Arizona 8.1 294 80 31.0
## Arkansas 8.8 190 50 19.5
## California 9.0 276 91 40.6
## Colorado 7.9 204 78 38.7
Será que você pode garantir que os valores são de fato diferentes? (aplique um t.test
)
Solução
Dica: Empregue o rnorm()
para gerar as amostras e o t.test()
para obter os valores.
Solução
x = rnorm(25, mean = 100, sd = 10);
y = rnorm(25, mean = 101, sd = 10)
Elas têm médias iguais na maior ou na menor parte das vezes?
Dica Gere 100 experimentos (amostras diferentes de x e y) e verifique o p-value do t.test
e produza um gráfico ou algo semelhante para observar a proporção de valores dos p-values.
Solução
p = c(0)
for (i in 1:100){
x = rnorm(25, mean = 100, sd = 10); # x
y = rnorm(25, mean = 101, sd = 10); # y
result = t.test(x,y)
# names(result)
if (result$p.value < 0.05) print(result$p.value)
p[i] = result$p.value
}
## [1] 0.01817462
## [1] 0.03916039
## [1] 0.02039085
## [1] 0.03730067
## [1] 0.009329511
## [1] 0.02466009
plot(log(p),col='blue')
for (i in 1:100){
if (p[i] < 0.05) lines(i,log(p[i]),pch=15,type='b',col='red')
}
abline(h=log(0.05),col='red',lty=2)
text(50,log(0.07),'p-values acima de 0.05... Aceita Hipótese nula, médias iguais')
text(50,log(0.03),'p-values abaixo de 0.05... Aceita Hipótese alternativa, médias diferentes')
x = rnorm(25, mean = 100, sd = 2.5);
y = rnorm(25, mean = 101, sd = 2.5)
O fato de diminuírmos o desvio padrão aumenta a chance dos dados terem média significativamente iguais ou diferentes?
Solução
Você recebe 25 amostras de embalagens de frutas especificadas como embalagens de 100g. Seus pesos são:
set.seed(1234)
x = rnorm(25, mean = 100, sd = 12); x
## [1] 85.51521 103.32915 113.01329 71.85163 105.14950 106.07267 93.10312
## [8] 93.44042 93.22658 89.31955 94.27369 88.01936 90.68495 100.77351
## [15] 111.51393 98.67657 93.86789 89.06566 89.95394 128.99002 101.60906
## [22] 94.11177 94.71343 105.51507 91.67536
mean(x)
## [1] 97.09861
As amostras mostram um valor de média menor que 100g. O produto ainda assim está dentro da especificação (dentro de uma significância de 95%)?
Solução
Considere a base de remunareções (wage) abaixo.
data(CPS85 , package = "mosaicData")
head(CPS85)
## wage educ race sex hispanic south married exper union age sector
## 1 9.0 10 W M NH NS Married 27 Not 43 const
## 2 5.5 12 W M NH NS Married 20 Not 38 sales
## 3 3.8 12 W F NH NS Single 4 Not 22 sales
## 4 10.5 12 W F NH NS Married 29 Not 47 clerical
## 5 15.0 12 W M NH NS Married 40 Union 58 const
## 6 9.0 16 W F NH NS Married 27 Not 49 clerical
boxplot
da remuneração de homens e mulheres e observe as distribuições. Empregue o teste de hipóteses para responder se os ganhos (wage
) de homens e mulheres é significativamente diferente.Dica Empregue o t.test()
.
Solução
wage
) de casados é significativamente maior que dos solteiros.Dica Empregue o t.test()
. Note que aqui o teste é unilateral.
Solução
Considere a base de salários deste ano (abaixo). O Salário médio da empresa no ano passado foi de 96.000 (atributo income
). A empresa fez uma série de ações no campo da remuneração para reduzir custos este ano (base atual) e tornar-se mais competitiva. Essas ações tiveram um efeito significativo? Isto é, o salário é significativamente menor? (significância de 0.05)
data = read.csv('http://meusite.mackenzie.br/rogerio/TIC/Projects/glassdoordata.csv')
head(data)
## jobtitle gender age performance education department seniority
## 1 Graphic Designer Female 18 5 College Operations 2
## 2 Software Engineer Male 21 5 College Management 5
## 3 Warehouse Associate Female 19 4 PhD Administration 5
## 4 Software Engineer Male 20 5 Masters Sales 4
## 5 Graphic Designer Male 26 5 Masters Engineering 5
## 6 IT Female 20 5 PhD Operations 4
## income bonus
## 1 42363 9938
## 2 108476 11128
## 3 90208 9268
## 4 108080 10154
## 5 99464 9319
## 6 70890 10126
Solução
Method
) ‘PI’ (‘passed in’) - digamos, com o uso de um intermediador - não tem qualquer vantagem sobre o método ‘S’ (‘sold’) - digamos, venda direta - em termos de preço e que, portanto você estaria perdendo tempo e dinheiro buscando a venda por um intermediário (digamos, corretor). Você estaria correto? Avalie com um teste de hipótese de significância 0.05.Dica Antes de fazer o teste, pense se perder dinheiro é bilateral o unilateral.
houses = read.csv('https://meusite.mackenzie.br/rogerio/TIC/Melbourne_housing_FULL.csv')
head(houses)
## Suburb Address Rooms Type Price Method SellerG Date
## 1 Abbotsford 68 Studley St 2 h NA SS Jellis 3/09/2016
## 2 Abbotsford 85 Turner St 2 h 1480000 S Biggin 3/12/2016
## 3 Abbotsford 25 Bloomburg St 2 h 1035000 S Biggin 4/02/2016
## 4 Abbotsford 18/659 Victoria St 3 u NA VB Rounds 4/02/2016
## 5 Abbotsford 5 Charles St 3 h 1465000 SP Biggin 4/03/2017
## 6 Abbotsford 40 Federation La 3 h 850000 PI Biggin 4/03/2017
## Distance Postcode Bedroom2 Bathroom Car Landsize BuildingArea YearBuilt
## 1 2.5 3067 2 1 1 126 NA NA
## 2 2.5 3067 2 1 1 202 NA NA
## 3 2.5 3067 2 1 0 156 79 1900
## 4 2.5 3067 3 2 1 0 NA NA
## 5 2.5 3067 3 2 0 134 150 1900
## 6 2.5 3067 3 2 1 94 NA NA
## CouncilArea Lattitude Longtitude Regionname Propertycount
## 1 Yarra City Council -37.8014 144.9958 Northern Metropolitan 4019
## 2 Yarra City Council -37.7996 144.9984 Northern Metropolitan 4019
## 3 Yarra City Council -37.8079 144.9934 Northern Metropolitan 4019
## 4 Yarra City Council -37.8114 145.0116 Northern Metropolitan 4019
## 5 Yarra City Council -37.8093 144.9944 Northern Metropolitan 4019
## 6 Yarra City Council -37.7969 144.9969 Northern Metropolitan 4019
Solução
t.test()
apresenta uma forma de automaticamente separar dois (apenas dois!) conjuntos de valores em um dataframe empregando a fórmula:Atributo_test ~ Atributo_grupo
Procure no help do comando t.test
e aplique ao exercício anterior.