Inferência Estatística - Distribuição F (Snedecor) - decisão

## Objetivos específicos
# a) Gerar uma população normal;
## b) Amostrar repetidamente pares de amostras de tamanhos informados 
##  da  população
## c) Estimar a variância a partir de cada amostra e calcular a razão 
##  entre as  duas de cada par armazenando estes valores em um vetor.
## d) Usar este vetor para decidir, sob a distribuição F, se as 
## razões anteriormente obtidas podem ser consideradas, ou não, como 
## provenientes de uma mesma população, adotando um erro tipo I 
## máximo para a inferência.
##    Em outras palavras, o objetivo maior é ilustrar a flutuação 
## normal do processo de amostragem e os possíveis erros de decisão 
## na inferência influenciados por esta flutuação.
##===============================================================================

##-- Ini opções -----------------------------------------------------------------
## Tamanho das amostras
n1 <-  5   # Tamanho da amostra (n1)
n2 <- 50   # Tamanho da amostra (n2)

## Características da população
Mu    <- 10
Sigma <-  2

## Número de pares de amostras
n <- 1e4   # Usar 1e2, 1e3, ..., 1e5

erro <- 5  # Define erro tipo I máximo a ser usado na inferência
           # (informado em %)
##-- Fim opções -----------------------------------------------------------------

## Simulação
## Estimativas da variância a partir do tamanho n1
s2.n1 <- apply(matrix(rnorm(n * n1,
                            Mu,
                            Sigma),
                      ncol=n1),
               1,
               var)

## Estimativas da variância a partir do tamanho n2
s2.n2 <- apply(matrix(rnorm(n * n2,
                            Mu,
                            Sigma),
                      ncol=n2),
               1,
               var)

Fcal <- s2.n1 / s2.n2  # Valores da razão entre duas estimativas da variância
                       # de uma população normal observados

## Valor Ftab recebe valor limite da calda superior da distribuição Fi
## adotando erro tipo I máximo especificado = erro
Ftab <- qf(erro / 100,
           n1-1,
           n2-1,
           lower.tail=FALSE)


## Inferência
dec <- Fcal < Ftab  # Decisão: As amostras podem ser consideradas como
                    # provenientes de uma mesma população?

dec.cer <- length(dec[dec == TRUE])
dec.err <- n - dec.cer

# Plotar gráfico dos resultados observados
plot(Fcal, 
     ylab='Valores  F calculados',
     xlab='Número de pares de amostras',
     font=2, 
     font.lab=2,
     cex=0.5,
     col='dark orange',
     ylim=c(0, 10))

tab.inf <- parse(text=paste(paste('F[',
                                  erro,
                                  '~"%"]',sep=''), 
                            '(',
                            n1 - 1,
                            ', ',
                            n2 - 1,
                            ')==',
                            round(Ftab,
                                  2),
                            sep=''))  

abline(h=Ftab)

text(n/2,
     Ftab,
     tab.inf,
     font=4,
     col='dark blue')

text(n/2,
     Ftab/2,
     paste('RAHo -> Decisões Corretas (%)',
           100 * (dec.cer/n),
           sep=' = '),
     font=4,
     col='dark green')

text(n/2,
     Ftab + (max(Fcal) - Ftab)/2,
     paste('RRHo -> Decisões Equivocadas (%)',
           100 * (dec.err/n),
           sep=' = '),
     font=4,
     col='red')