19  Teste de hipóteses para a variância de uma população normal

Vamos discutir o problema de se testar uma afirmação sobre a variância de uma população normal.

Suponha que desejamos testar se a variância da altura é superior a 0,01 \(m^2\). Como verificar essa afirmação?

Nas aulas passadas, discutimos as regras de decisões que nos permitem checar afirmações sobre os parâmetros, conhecidas como testes de hipóteses.

No problema levantado queremos testar as seguintes hipóteses

\(H_0\): a variância da altura é igual a 0,01 \(m^2\) (\(\sigma^2\) = 0,01),

\(H_1\): a variância da altura é superior a 0,01 \(m^2\) (\(\sigma^2\)> 0,01).

Para executarmos o teste acima, usaremos a função VarTest do pacote DescTools.

A seguir, vamos apresentar os principais argumentos da função VarTest:

  - x - o vetor com a amostra;

  - sigma.squared - o valor do parâmetro que definem as hipóteses (default = 1);

  - alternative - argumento que define se o teste é bilateral ou unilateral a esquerda e a direita (default = bilateral - two.sided).

Note que o teste que estamos usando, assume que a variância é o parâmetro de uma variável aleatória com distribuição normal. Neste caso, devemos verificar se a variável altura possui distribuição normal.

Atividade 1: Importem o arquivo Medidas.rds e armazenem em um objeto chamado base.

#Visualizando o objeto
base
# A tibble: 25 × 4
   altura  peso cintura idade
    <dbl> <dbl>   <dbl> <int>
 1   1.79    71    80.6    47
 2   1.61    71    81.7    47
 3   1.62    72    80.7    48
 4   1.63    72    83.4    33
 5   1.75    66    75.7    64
 6   1.57    65    77.8    69
 7   1.8     74    80.6    36
 8   1.72    76    81.1    73
 9   1.72    61    79.0    72
10   1.7     61    77.8    66
# ℹ 15 more rows
#Carregando pacote
library(ggpubr)
Loading required package: ggplot2
#Criando um qq-plot com o ggpubr
ggqqplot(base$altura)

#Teste de normalidade
shapiro.test(x = base$altura)

    Shapiro-Wilk normality test

data:  base$altura
W = 0.97916, p-value = 0.868

Para verificar, inicialmente plotamos um qq-plot, com sua banda de confiança, e o mesmo parece indicar que a suposição de normalidade da variável altura é razoável. Para confirmar esta hipótese, realizamos o teste de Shapiro-Wilk e com base em um nível de significância (\(\alpha\)) de 5%, como o p-valor = 0,868 é maior do que \(\alpha\), não rejeitamos \(H_0\), ou seja, não existe evidências para desconfiarmos que a amostra não seja proveniente de uma distribuição normal.

Deste modo, podemos realizar o testar sobre a variância.

#Carregando o pacote DescTools
library(DescTools)

#Realizando o teste unilateral a direita para a variância
VarTest(x = base$altura, 
        alternative = "greater",
        sigma.squared = 0.01)

    One Sample Chi-Square test on variance

data:  base$altura
X-squared = 34.746, df = 24, p-value = 0.07225
alternative hypothesis: true variance is greater than 0.01
95 percent confidence interval:
 0.009541775         Inf
sample estimates:
variance of x 
   0.01447767 

A saída do teste contém várias informações: o valor da estatística do teste \(X^2\)-squared, o número de graus de liberdade da estatística de teste (df) e o p-valor associado as hipóteses especificadas. Ele deixa explícito qual a hipótese alternativa “true variance is greater than 0.01” que significa “a verdadeira variância da altura é maior que 0.01”. Fornece também um intervalo de confiança unilateral (que não traz muita informação nesse momento, a menos que estivéssemos realizando um teste de hipóteses bilateral, pois seria o IC para o parâmetro) e o valor de uma estimativa pontual.

Note que, mesmo com uma estimativa pontual superior a 0,01 (aproximadamente 0,015), com base em um nível de significância de 5%, não rejeitamos \(H_0\), ou seja, não encontramos evidências para acreditar que a variância da altura seja superior a 0,01 \(m^2\).

E se o nível de confiança fosse de 10%, qual seria a sua conclusão? Em que implica o aumento do nível de significância? Suponha que um pesquisador esteja interessado em investigar se a variância do peso é diferente a 20 \(Kg^2\). Realize a análise mais completa possível para investigar essa afirmação.

#Avaliando o comportamento dos valores da variável peso
ggplot(data = base, aes(y = peso)) +
  geom_boxplot() +
  theme_minimal() +
  labs(y = "Peso (em Kg)")

#Verificando normalidade dos dados
ggqqplot(base$peso)

#Testando normalidade
shapiro.test(base$peso)

    Shapiro-Wilk normality test

data:  base$peso
W = 0.97305, p-value = 0.7228
#Obtendo uma estimativa pontual e uma intervalar
VarCI(x = base$peso,
      method = "classic",
      conf.level = 0.95)
     var   lwr.ci   upr.ci 
23.58333 14.37859 45.64093 
#Realizando o teste de variância bilateral
VarTest(base$peso, 
        alternative = "two.sided",
        sigma.squared = 20)

    One Sample Chi-Square test on variance

data:  base$peso
X-squared = 28.3, df = 24, p-value = 0.3869
alternative hypothesis: true variance is not equal to 20
95 percent confidence interval:
 14.37859 45.64093
sample estimates:
variance of x 
     23.58333 

Comentários de cada passo da análise:

19.1 Função poder

A função poder do teste é sempre um objeto de interesse quando estamos analisando um teste de hipóteses. Como visto em aulas anteriores, ela é obtida da seguinte forma:

\[\begin{eqnarray} \pi(\sigma^2) & = & P(\mbox{Rejeitar } H_0| \sigma^2)\\ \end{eqnarray}\]

Vamos voltar ao teste sobre a variância da altura:

\(H_0\): \(\sigma^2\) = 0,01

\(H_1\): \(\sigma^2\) > 0,01

Seguindo Dixon e Massey (1983). Seja \(\alpha\) e \(\beta\) o nível de significância e a probabilidade do Erro Tipo II, respectivamente. Seja \(\chi^2_{n-1,1-\alpha}\) e \(\chi^2_{n-1,\beta}\) os quantis \(1-\alpha\) e \(\beta\) de uma distribuição \(\chi^2\) com \(n-1\) graus de liberdade. Os valores críticos de aceitação/rejeição da hipótese nula é dado por:

\[ \frac{\chi^2_{n-1,1-\alpha}}{n-1}\sigma^2_0=\frac{\chi^2_{n-1,\beta}}{n-1}\sigma^2_a. \]

O poder do teste \(\pi = 1 - \beta\) para um teste unilateral à direita é dado por

\[\begin{eqnarray} \pi & = & 1 - \chi^2_{n-1}\left(\frac{\sigma^2_0}{\sigma^2_a} \chi^2_{n-1,1-\alpha}\right)\\ \end{eqnarray}\]

em que \(\chi^2_{n-1}(\cdot)\) é o valor da função de distribuição acumulada de uma distribuição \(\chi^2\) com \(n-1\) graus de liberdade.

Com base nas equações desenvolvidas acima, podemos criar uma rotina computacional (uma função) que receberá como argumentos: tamanho da amostra, nível de significância, valor da variância a ser testado \(\sigma^2_0\) e \(\sigma^2_a\) - o valor da média na qual será calculado o valor do poder do teste.

#Função que calcula o poder para um teste unilateral a direita para a variância de uma população normal
poder.varunid = function(sigma2_0,sigma2_a,n,alfa){
  qui_cal = qchisq(p = alfa,
                   df = n-1,
                   lower.tail = FALSE)
  
  #Calculando o poder
  poder = pchisq(q = (sigma2_0/sigma2_a)*qui_cal,
                 df = n-1,
                 lower.tail = FALSE)
  
  #retornando o poder
  return(poder)
}

#calculando a função poder
poder.varunid(sigma2_0 = 0.01,
              sigma2_a = 0.03,
              n = 25,
              alfa = 0.01)
[1] 0.9389264

\(\pi(\sigma^2 = 0,03) = 0,938964\), isto é, a probabilidade de afirmarmos que a variância da altura é superior a 0,01 \(m^2\), quando na verdade ela é 0,02 \(m^2\) é 93,89%.

#Ativando pacote
library(ggplot2)
library(tibble)

#Plotando a função poder do teste
ggplot(data = tibble(val = c(0.00001,0.04)), 
       mapping = aes(x = val)) +
  stat_function(fun = poder.varunid,
                args = list(n = 25,
                            alfa = 0.01,
                            sigma2_0 = 0.01)) +
  xlab(expression(sigma^2)) +
  ylab(expression(pi(sigma^2))) +
  theme_minimal()

O poder do teste \(\pi = 1 - \beta\) para um teste unilateral à esquerda é dado por

\[\begin{eqnarray} \pi & = & \chi^2_{n-1}\left(\frac{\sigma^2_0}{\sigma^2_a} \chi^2_{n-1,\alpha}\right)\\ \end{eqnarray}\]

O poder do teste \(\pi = 1 - \beta\) para um teste bilateral é dado por

\[\begin{eqnarray} \pi & = & 1 - \chi^2_{n-1}\left(\frac{\sigma^2_0}{\sigma^2_a} \chi^2_{n-1,1-\alpha/2}\right) + \chi^2_{n-1}\left(\frac{\sigma^2_0}{\sigma^2_a} \chi^2_{n-1,\alpha/2}\right)\\ \end{eqnarray}\]

19.2 Desafio

  1. Teste se a variância da idade é superior a 300 \(anos^2\). Use um nível de significância de 5%.

  2. Teste se a variância do comprimento da cintura é inferior a 6 \(cm^2\). Use um nível de significância de 1%.

  3. Crie uma função que calcula o poder para um teste unilateral a esquerda para a variância de uma população normal. Utilize \(n = 30\), \(\alpha = 0,05\), \(\sigma^2 = 95\) e \(\sigma^2_0 = 100\). Interprete o resultado obtido.

  4. Plote a função criado no item anterior para valores de \(90 \leq \sigma^2 \leq 110\). Para os demais valores necessários, utilizem os mesmos fornecidos na questão.

  5. Crie uma função que calcula o erro tipo II para um teste bilateral para a variância de uma população normal. Utilizem \(n = 30\), \(\alpha = 0,05\) e \(\sigma^2_0 = 100\). Plote a função.