Inferência Estatística - Origem distribuição F (Snedecor)

## Objetivos específicos
## a) Amostrar repetidamente pares de amostras (tamanhos definidos pelo usuário)
##    de uma população normal qualquer: Y ~ N(Mu, Sigma);
## b) Estimar a variância a partir de cada amostra e calcular a razão entre as
##    duas estimativas;
## c) Plotar o histograma dos valores, que deve ser semelhante a função F
##    (para os tamanhos de amostras defindos pelo usuário) se o número de
##    repetições do processo for suficiente para se aproximar do limite;
## d) Sobrepor ao histograma a função densidade de probabilidade específica.
##===============================================================================

##-- Ini opções -----------------------------------------------------------------
## Tamanho das amostras
nN <-  4  # Tamanho da amostra (n) do Numerador (N)
nD <- 21  # Tamanho da amostra (n) do Denominador (D)

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

## Normal padrão
# Mu    <- 0
# Sigma <- 1

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

## Erro adotado na inferência
erro <- .05
#-- Fim opções ------------------------------------------------------------------

## Simulação
## Estimativas da variância do numerador
s2N <- apply(matrix(rnorm(n*nN,
                          Mu,
                          Sigma),
                    ncol=nN),
             1,
             var)

## Estimativas da variância do denominador
s2D <- apply(matrix(rnorm(n*nD,
                          Mu,
                          Sigma),
                    ncol=nD),
             1,
             var)

## Observando a distribuição da razão das estimativas da variância: observacional
require(fdth)

plot(fdt(s2N/s2D,
         start=0,
         end=10,
         h=.05),
     ty='d',
     xlim=c(0, 10),
     ylim=c(0, 1.2))

## Sobrepondo a curva de densidade de probabilidades: teórica
curve(df(x,
         nN-1,
         nD-1),
      col='darkblue',
      add=TRUE,
      lwd=3)

# Em poucas palavras:
# A distribuição F (Snedecor) descreve como se distribui a razão
# entre duas estimativas da variâcia 
# de uma distribuição normal ~N(mu, sigma) qualquer.

quantil <- qf(erro,
              nN -1,
              nD -1,
              lower=FALSE)

# Linha decisão
segments(x0=quantil,
         y0=0,
         x1=quantil,
         y1=1,
         col='red',
         lty=3)

# Texto das hipóteses
text(x=c(quantil - 1,
         quantil + 1),
     y=.8,
     labels=c('RAH0',
              'RRH0'),
     col=c('darkgreen',
           'red'))

# Texto do erro
text(x=quantil + 1,
     y=.3,
     labels=paste('Erro = ',
                  100*erro,
                  '%',
                  sep=''),
     col='red')

# Valor do erro
text(x=quantil,
     y=1.05,
     label=round(quantil,
                 2))