Simulação Computacional

## Tamanho amostral 
n <- 1e4

## Taxas da distribuicao exponencial
alpha1 <- 0.6 ; alpha2 <- 0.9 ; alpha3 <- 0.3

## geracao dos dados

# funcao que gera os dados
gera_dados <- function(n,alpha){ rexp(n, rate = alpha)}

# matriz de dados
dados_3exps <- sapply(c(alpha1,alpha2,alpha3), gera_dados, n=n)
colnames(dados_3exps)<-c("X1","X2","X3")

# Apresentacao das 10 primeiras linhas da matriz de dados
head(dados_3exps,n=10)
##              X1        X2        X3
##  [1,] 0.7387802 0.3343738 0.5968327
##  [2,] 4.0415652 3.0309941 2.4543769
##  [3,] 2.1813058 0.3303662 1.1727456
##  [4,] 0.5829832 0.1561572 3.4607639
##  [5,] 0.2043783 0.7859837 0.2954856
##  [6,] 1.2430904 0.4239606 1.8186981
##  [7,] 1.8433675 0.7355806 8.1449143
##  [8,] 1.4234440 0.7981386 4.1474538
##  [9,] 0.3039701 2.6903130 0.9676613
## [10,] 1.1357341 2.1592879 0.2341068
# Minimo entre X1, X2, X3 (Y=min(X1,X2,X3)) 
Y <- apply(dados_3exps, 1, min)

# Amostras de X1, X2 e X3.
X1 <- dados_3exps[,1]
X2 <- dados_3exps[,2]
X3 <- dados_3exps[,3]

Item (b) Estimação (Probabilidades Simulada x Teórica)

# probabilidade simulada (estimada)
prob.sim <- mean(X1==Y)

# probabilidade teórica (real) 
prob.teo<- alpha1/(alpha1+alpha2+alpha3)

setNames(c(prob.sim,prob.teo),c("probabilidade simulada", "probabilidade teórica"))
## probabilidade simulada  probabilidade teórica 
##              0.3239000              0.3333333

Item (c) Dois parâmetros iguais => Distribuição Uniforme U(0,1)

# Dois parametros iguais

alpha1 <- 0.2
alpha2 <- alpha1

dados_2exps <- sapply(c(alpha1,alpha2), gera_dados, n=n)
colnames(dados_2exps)<-c("X1","X2")

# Apresentação das 10 primeiras linhas da matriz de dados
head(dados_2exps,n=10)
##               X1         X2
##  [1,]  1.9549874  1.1658617
##  [2,]  7.9813082  3.0580794
##  [3,]  1.8130006  2.5736940
##  [4,] 10.6908120 11.3339163
##  [5,]  2.0006133  1.7975220
##  [6,] 30.9756469  7.4372592
##  [7,]  0.7484104  4.4672506
##  [8,]  2.6457970 10.8216176
##  [9,]  1.0723112  1.4479447
## [10,]  2.3630893  0.7615465

Teste de Kolmogorov-Smirnov

Realizamos o teste de aderência de Kolmogorov-Smirnov para verificar se a distribuição é uniforme em (0,1).

# Teste K-S (Kolmogorov-Smirnov) para distribuição uniforme
X1 <- dados_2exps[,1]
X2 <- dados_2exps[,2]

W <- X1/(X1+X2)

# Comparação das Funções de distribuição empírica e teorica
  # Empírica: construída a partir dos dados amostrais ( ecdf(W) ).
  # Teorica:  fd da uniforme U(0,1) ( Fn(x) )

ks.test(W,"punif",min(W),max(W))
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  W
## D = 0.014366, p-value = 0.03224
## alternative hypothesis: two-sided

Conclusão do Teste: Ao nível de significância \(\alpha =0.05\) (ou \(\alpha=0.01\)), não há evidências suficientes para reijeitar a hipótese nula de que a distribuição é U(0,1), pois o p-valor do teste é maior que o nível de significância.

plot(ecdf(W),pch=5, cex=3, lwd = 2)
curve(punif(x,min(W),max(W)),add=TRUE,col="red")
legend(x = "topleft", box.col = "brown", 
       bg ="grey", box.lwd = 2 , title="Distribuicoes",  
       legend=c("Empirica", "Teorica"),  
       fill = c("black","red"))