19Teste 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çãoVarTest:
- 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.
#Criando um qq-plot com o ggpubrggqqplot(base$altura)
#Teste de normalidadeshapiro.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 DescToolslibrary(DescTools)#Realizando o teste unilateral a direita para a variânciaVarTest(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 pesoggplot(data = base, aes(y = peso)) +geom_boxplot() +theme_minimal() +labs(y ="Peso (em Kg)")
#Verificando normalidade dos dadosggqqplot(base$peso)
#Testando normalidadeshapiro.test(base$peso)
Shapiro-Wilk normality test
data: base$peso
W = 0.97305, p-value = 0.7228
#Obtendo uma estimativa pontual e uma intervalarVarCI(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 bilateralVarTest(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:
Analisando o boxplot, percebemos um comportamento simétrico da variável, com valores oscilando entre 60 Kg e 82 Kg. A mediana dos valores é inferior a 70 Kg.
O QQ-plot, junto com a banda de confiança, indicam normalidade dos dados, pois o boxplot parece simétrico e os quantis amostrais não se distanciam muitos dos quantis de uma distribuição normal.
Com base em um nível de significância de 1%, não rejeitamos \(H_0\), indicando normalidade dos dados, conforme indicava o QQ-plot.
A estimativa pontual nos mostra que a variância do peso é de 23,58 \(Kg^2\) e a região de 14,38 \(Kg^2\) a 45,64 \(Kg^2\) possui alta probabilidade de conter o verdadeiro valor da variância do peso. A função utilizada VarCI pertence ao pacote DescTools, seus principais argumentos são o vetor da amostra (x), o método (use o classic), e o nível de confiança (conf.level). Comparem com a estimativa intervalar fornecida quando realizamos o teste de hipóteses.
Com base em um nível de significância de 1%, não rejeitamos \(H_0\), indicando que não possuímos evidências suficiente para acreditar que a variância da altura seja diferente de 20 \(Kg^2\).
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:
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:
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 normalpoder.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 poderreturn(poder)}#calculando a função poderpoder.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 pacotelibrary(ggplot2)library(tibble)#Plotando a função poder do testeggplot(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
Teste se a variância da idade é superior a 300 \(anos^2\). Use um nível de significância de 5%.
Teste se a variância do comprimento da cintura é inferior a 6 \(cm^2\). Use um nível de significância de 1%.
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.
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.
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.