Questão 01:

Teste se a distribuição para as notas de um mergulhador:

notas=c(5.3,7.6,8.9,9,9.1,9.3,9.6,9.9)
notas
## [1] 5.3 7.6 8.9 9.0 9.1 9.3 9.6 9.9

segue a seguinte distribuição: \[ F(x)=0~se~x<0 \\ F(x)=\frac{x^2}{100}I(0 \le x \le 10) \\ F(x)=1~se~x>10 \\ \]

Calculando a estatística D manualmente

notas=c(5.3,7.6,8.9,9,9.1,9.3,9.6,9.9)
# F dist. empírica
f_obs=rep(1/8,8)

# F acumulada empírica
F_obs=sapply(1:8,function(i){return(sum(f_obs[1:i]))}) 

cbind(notas,f_obs,F_obs)
##      notas f_obs F_obs
## [1,]   5.3 0.125 0.125
## [2,]   7.6 0.125 0.250
## [3,]   8.9 0.125 0.375
## [4,]   9.0 0.125 0.500
## [5,]   9.1 0.125 0.625
## [6,]   9.3 0.125 0.750
## [7,]   9.6 0.125 0.875
## [8,]   9.9 0.125 1.000
# F acumulada esperada
F_exp=notas^2/100
F_exp
## [1] 0.2809 0.5776 0.7921 0.8100 0.8281 0.8649 0.9216 0.9801
plot(notas, F_obs, type="b", col="red", ylim=c(0,1), ylab="Dist. Acum.", xlab="Notas")
par(new=T)
plot(notas, F_exp, type="b", pch=20,col="blue", ylim=c(0,1),xaxt="n",yaxt="n", ylab="", xlab="")
legend("topleft",legend=c("Observada", "Esperada"),pch=c(1,20),col=c("red", "blue"), lty=1, inset=0.1)
Distribuições esperada e observadas para as notas dos saltos

Distribuições esperada e observadas para as notas dos saltos

D_1=unlist(sapply(1:8,function(i){return(try(abs(F_exp[i]-F_obs[i]),silent=T))}))
D_2=unlist(sapply(1:8,function(i){return(try(abs(F_exp[i]-F_obs[i-1]),silent=T))}))
D=max(D_1,D_2)
D
## [1] 0.5421

O valor tabelado para \(n=8\) e \(95\%\) é \(0.454\). Portanto rejeitamos \(H_0:\) Os dados provém de \(F_x\)

Questão 02:

O nível de emissões de oxido nítrico no ano passado por automóveis seguiu uma distrib. normal com média \(5.6\) e d.p. \(1.2\).
12 veículos foram amostrados neste ano para avaliar se a distribuição permanece a mesma. Baseado nos dados abaixo, qual a sua conclusão?

NO=c(4.8,6.2,6.0,5.9,6.6,5.5,5.8,5.9,6.3,6.6,6.2,5)

Calculando a estatística D manualmente

zi=(NO-mean(NO))/sd(NO)
zi=zi[order(zi)]

f_obs=rep(1/length(zi),length(zi))
F_obs=sapply(1:length(zi),function(i){return(sum(f_obs[1:i]))}) 

F_exp=pnorm(zi)

plot(zi,F_obs, type="b", col="red", ylim=c(0,1), ylab="Dist. Acum.", xlab="NO padronizado")
par(new="T")
plot(zi,F_exp, type="b", col="blue", pch=20, ylim=c(0,1),xaxt="n",yaxt="n", ylab="", xlab="")
legend("topleft",legend=c("Observada", "Esperada"),pch=c(1,20),col=c("red", "blue"), lty=1, inset=0.1)

É possível também utilizar o pacote nortest

library(nortest)
lillie.test(NO)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  NO
## D = 0.17984, p-value = 0.3508

Neste caso, podemos também utilizar o teste de Kolmogorov-Smirnov. Note a importância de se especificar os parâmetros, caso contrário o R testará com os parâmetros default da distribuição:

ks.test(NO,"pnorm",mean=5.6,sd=1.2)
## Warning in ks.test(NO, "pnorm", mean = 5.6, sd = 1.2): ties should not be
## present for the Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  NO
## D = 0.31618, p-value = 0.1814
## alternative hypothesis: two-sided

Questão 03:

Acredita-se que o tempo entre ligações DDI em uma Cia segue uma distrib. exponencial. As primeiras 10 ligações em um dia foram:
1:06 1:08 1:16 1:22 1:23 1:34 1:44 1:47 1:51 1:57.
É valido assumir que, de fato, os dados seguem uma distrb. Exponencial?

ligacoes=c(2,8,6,1,11,10,3,4,6)
tx=1/mean(ligacoes)
zi=ligacoes/mean(ligacoes)
zi=zi[order(zi)]
f_obs=rep(1/length(zi),length(zi))
F_obs=sapply(1:length(zi),function(i){return(sum(f_obs[1:i]))}) 
F_exp=pexp(zi,rate=tx)

plot(zi,F_obs, type="b", col="red", ylim=c(0,1), ylab="Dist. Acum.", xlab="Tempo entre ligações")
par(new="T")
plot(zi,F_exp, type="b", col="blue", ylim=c(0,1), pch=20,xaxt="n",yaxt="n", ylab="", xlab="")

D_1=unlist(sapply(1:length(zi),function(i){return(try(abs(F_exp[i]-F_obs[i]),silent=T))}))
D_2=unlist(sapply(1:length(zi),function(i){return(try(abs(F_exp[i]-F_obs[i-1]),silent=T))}))
D=max(D_1,D_2)
cat("D:",D)
## D: 0.7099501
cat("max(D_1):",max(D_1))
## max(D_1): 0.7099501

Como o valor crítico tabelado para este teste a \(95\%\) de confiança é \(0.3404\) então rejeitamos a hipótese de que os dados tenham sido originados por uma distribuição Exponencial.

Questão 04:

Os ROIs de 12 meses para 20 ativos foram:

roi=c(9.1, 5.0, 7.3, 7.4, 5.5, 
      8.6, 7.0, 4.3, 4.7, 8.0,
      4.0, 8.5, 6.4, 6.1, 5.8,
      9.5, 5.2, 6.7, 8.3, 9.2)

Teste a normalidade dos ROIs utilizando os testes de Lilliefors e Shapiro-Wilk.

qqnorm(roi, pch=20, col="blue")
qqline(roi, lty=2)

lillie.test(roi)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  roi
## D = 0.10314, p-value = 0.8347
shapiro.test(roi)
## 
##  Shapiro-Wilk normality test
## 
## data:  roi
## W = 0.95547, p-value = 0.4578

portanto, em ambos os testes, aceitamos a hipótese de normalidade dos dados.

QUESTÃO 05 - Teste de Lilliefors

Verifique se os dados abaixo:

x=c(1.0, 2.3, 4.2, 7.1, 10.4)

provém de uma distribuição Normal ou Exponencial.

Distribuição Normal:

Como não possuímos a distribuição Normal totalmente especificada, não é possível realizar o teste de Kolmogorov-Smirnov.
Vamos neste caso utilizar o teste de Lilliefors:

f_obs=rep(1/5,times=5)
F_obs=sapply(1:length(f_obs),function(i){return(sum(f_obs[1:i]))}) 
F_norm=pnorm(x,mean=mean(x),sd = sd(x))
# Grafico das distribuicoes:
plot(c(0,x),c(0,F_obs),type="S",ylim=c(0,1),col="red",lwd=3,ylab="FDA")
par(new=T)
plot(c(0,x),c(0,F_norm),type="S",ylim=c(0,1),col="blue",lwd=3,ylab="")
title("Distribuição empírica e Observada\n Dist Normal")
legend("bottomright",inset=0.1,legend=c("F Esperada normal","F Observada"),
       col=c("blue","red"),lty=1,lwd=3,pch=NA)

# Distância maxima entre a dist. esperada sob Ho e a dist. observada
D_1=unlist(sapply(1:5,function(i){return(try(abs(F_norm[i]-F_obs[i]),silent=T))}))
D_2=unlist(sapply(1:5,function(i){return(try(abs(F_norm[i]-F_obs[i-1]),silent=T))}))
D=max(D_1,D_2)
# Da tabela A15 de Conover, temos:
D_norm.05=0.344
if(D > D_norm.05) print("Rejeito Ho") else print("NAO rejeito Ho")
## [1] "NAO rejeito Ho"
No caso normal, podemos ir direto na função do pacote nortest:
library(nortest)
lillie.test(x)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  x
## D = 0.18356, p-value = 0.8379

Distribuição Exponencial:

Vamos novamente utilizar o teste de Lilliefors para a distribuição Exponencial:

z=x/mean(x)
F_exp=pexp(x,rate=1/mean(x))

# F dist. empirica
count_obs=c(1,1,1,1,1)
f_obs=count_obs/5

# F acumulada empirica
F_obs=sapply(1:5,function(i){return(sum(f_obs[1:i]))}) 

# Grafico das distribuicoes:
plot(c(0,x),c(0,F_obs),type="S",ylim=c(0,1),col="red",lwd=3,ylab="FDA")
par(new=T)
plot(c(0,x),c(0,F_exp),type="S",ylim=c(0,1),col="blue",lwd=3,ylab="")
title("Distribuição empírica e Observada\n Dist Exponencial")
legend("bottomright",inset=0.1,legend=c("F Esperada Exponencial","F Observada"),
       col=c("blue","red"),lty=1,lwd=3,pch=NA)

Calculando a estatística, temos que:

# Distância maxima entre a dist. esperada sob Ho e a dist. observada
D_1=unlist(sapply(1:5,function(i){return(try(abs(F_exp[i]-F_obs[i]),silent=T))}))
D_2=unlist(sapply(1:5,function(i){return(try(abs(F_exp[i]-F_obs[i-1]),silent=T))}))
D=max(D_1,D_2)
# Da tabela A15 de Conover, temos:
D_exp.05=.1884

if(D > D_exp.05) print("Rejeito Ho") else print("NAO rejeito Ho")
## [1] "NAO rejeito Ho"

Questão 06 - Kolmogorov-Smirnov, Lilliefors, Shapiro-Wilk E Anderson-Darlin

18 estudantes obtiveram os seguintes escores em um teste de QI:

qi=c(114, 81, 87, 114, 113, 87, 111, 89, 93, 108, 99, 93, 100, 95,93, 95, 106, 108)

Teste a hipótese de normalidade para os seguintes casos:

  1. Média 100 e variância 100.

  2. Média e variância desconhecidas.

ks.test(qi, pnorm,100,10)
## Warning in ks.test(qi, pnorm, 100, 10): ties should not be present for the
## Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  qi
## D = 0.19146, p-value = 0.5243
## alternative hypothesis: two-sided
shapiro.test(qi)
## 
##  Shapiro-Wilk normality test
## 
## data:  qi
## W = 0.93285, p-value = 0.2179
lillie.test(qi)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  qi
## D = 0.15704, p-value = 0.2838
ad.test(qi)
## 
##  Anderson-Darling normality test
## 
## data:  qi
## A = 0.45983, p-value = 0.2308

Exemplo da aula - slides 12 e 13

Calculando a estatística D manualmente

# F dist. empírica
count_obs=c(15,25,10,5,4,1)
f_obs=count_obs/60

# F acumulada empírica
F_obs=sapply(1:6,function(i){return(sum(f_obs[1:i]))}) 

x=0:5
# F dist. teórica Poisson
f_exp=dpois(x,1.2)

# F acumulada poisson
F_exp=ppois(x,1.2)

Gráfico das distribuições

plot(0:6,c(0,F_obs),type="S",ylim=c(0.2,1),col="red",lwd=3,ylab="FDA")
par(new=T)
plot(0:6,c(0,F_exp),type="S",ylim=c(0.2,1),col="blue",lwd=3,ylab="")
title("Distribuição empírica e Observada")
legend("bottomright",inset=0.1,legend=c("F Esperada","F Observada"),
       col=c("blue","red"),lty=1,lwd=3,pch=NA)

# Máximo entre D+ e D-
D_1=unlist(sapply(1:6,function(i){return(try(abs(F_exp[i]-F_obs[i]),silent=T))}))
D_2=unlist(sapply(1:6,function(i){return(try(abs(F_exp[i]-F_obs[i-1]),silent=T))}))
D=max(D_1,D_2)
cat("D: ",D)
## D:  0.4126273

Como D é maior do que o valor tabelado, \(0.1756\), rejeitamos \(H_0\).

ATENÇÃO: Como NÃO utilizar a função ks.test diretamente:

ks.test(f_obs,"ppois",1.2)
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  f_obs
## D = 0.69881, p-value = 0.001863
## alternative hypothesis: two-sided

Como utilizar a função ks.test corretamente a partir de uma tabela de frequências:

x=c(rep(0,f_obs[1]),rep(1,f_obs[2]),rep(2,f_obs[3]),
    rep(3,f_obs[4]),rep(4,f_obs[5]),rep(5,f_obs[6]))
x=unlist(sapply(0:5,function(i){return(rep(i,count_obs[i+1]))}))
ks.test(x,"ppois",lambda=1.2)
## Warning in ks.test(x, "ppois", lambda = 1.2): ties should not be present for the
## Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  x
## D = 0.41263, p-value = 2.678e-09
## alternative hypothesis: two-sided

Exemplo da aula (feito no SAS): Slide 29

# Dados de fechamento diários do Ibovespa(disponível no site e no g.drive) #
# série de preços
ibov=read.table("../Exemplos_Codigos/ibovespa_ytd.csv", h=T,sep=",")
#série de retornos:
r_ibov=diff(log(ibov$Fechamento))

Gráficos do Ibovespa:

par(mfrow=c(2,2))
plot.ts(ibov$Fechamento, main="série de preços")
plot.ts(r_ibov, main="Série de retornos")
hist(r_ibov, breaks=10,col="orange", main="Histograma")
qqnorm(r_ibov, col="blue", pch=20);qqline(r_ibov, lty=2)

# Dados de concentração de ozônio na atmosfera - Pinheiros, SP
cetesb.o3=c(15,23,27,19,21,16,12,13,17,26,37,57,81,99,106,75,70,71,
            56,31,31,23,6,1,2,1,0,0,0,0,0,1,11,28,54,86,122,142,144,
            140,89,50,46,22,1,1,0,0,0,0,4,21,49,88,104,102,101,103,
            102,95,38,15,1,0,0,0,1,10,47,78,95,102,97,106,109,102,
            95,81,39,14,2,1,1,26,34,27,50,69,58,18,1,6,11,33,73,61,
            65,57,56,28,26)

m = matrix(c(1,1,2,3),ncol=2,byrow=T)
layout(mat = m,heights = c(.4,.6))
plot.ts(cetesb.o3)
hist(cetesb.o3,col="orange")
qqnorm(cetesb.o3, col="blue", pch=20);qqline(cetesb.o3, lty=2)

Teste de Lilliefors para os dados de retornos do Ibovespa e concentração de Ozônio

library(nortest)
# Exemplo com Ibovespa e Ozonio #
lillie.test(r_ibov)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  r_ibov
## D = 0.16646, p-value = 1.852e-13
lillie.test(cetesb.o3)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  cetesb.o3
## D = 0.15189, p-value = 5.224e-06

Teste de Anderson-Darling para dados de retornos do Ibovespa e concentração de Ozônio

library(nortest)
# Exemplo com Ibovespa e Ozonio #
ad.test(r_ibov)
## 
##  Anderson-Darling normality test
## 
## data:  r_ibov
## A = 7.7011, p-value < 2.2e-16
ad.test(cetesb.o3)
## 
##  Anderson-Darling normality test
## 
## data:  cetesb.o3
## A = 3.7109, p-value = 2.534e-09

Teste de Shapiro-Wilk para dados de retornos do Ibovespa e concentração de Ozônio

library(nortest)
shapiro.test(cetesb.o3)
## 
##  Shapiro-Wilk normality test
## 
## data:  cetesb.o3
## W = 0.889, p-value = 3.997e-07
shapiro.test(r_ibov)
## 
##  Shapiro-Wilk normality test
## 
## data:  r_ibov
## W = 0.8299, p-value = 2.41e-13

Em todos os casos, rejeitamos \(H_0\), ou seja, não aceitamos a hipótese de normalidade dos dados, nem dos retornos do Ibovespa, nem da concentração de Ozônio.