10  Método de Bonferroni e Método de Scheffé

Em muitos dos casos, estamos interessados em realizar diversos testes de hipótese separados, como:

\[ \begin{align} H_0 &: \beta_j = 0 , \quad \text{para j = 1,2,...,k} \\ &\text{ou} \\ H_0 &: \boldsymbol{a'_i\beta} = 0 , \quad \text{para i = 1,2,...} \end{align} \]

Quando testamos diversas hipóteses como as apresentadas anteriormente, temos dois diferentes níveis de significância (\(\alpha\)):

Quando realizamos um único teste de hipótese (como os apresentados nos capítulos anteriores), utilizamos um nível de significância geral \(\alpha_f\).

Contudo, ao realizar mais de um teste de hipótese para um mesmo caso, utilizamos um nível de significância por comparação \(\alpha_c\). Isso acarreta em um aumento do nível de significância geral (\(\alpha_f\)). Probabilisticamente, tem-se:

\[\alpha_f = 1 - (1 - \alpha_c)^k\]

em que \(k\) é o número de execuções do teste de hipótese ao nível \(\alpha_c\) de significância por teste realizado.

Com isso, fixando um nível de significância \(\alpha_c = 0,05\) para cada teste, conforme aumentarmos o número de testes, o nível de significância geral (\(\alpha_f\)) aumenta.

Nº testes 1 2 3 4 5 6 7 8 9 10
Alpha f 0.05 0.0975 0.1426 0.1855 0.2262 0.2649 0.3017 0.3366 0.3698 0.4013

Para isso, serão apresentados dois métodos de comparação que protegem a inflação do nível \(\alpha\)-global quando diversos testes são feitos: método de Bonferroni e método de Scheffé.

Como exemplo, novamente, utilizaremos os dados do Capítulo 6.

Obs y x1 x2
1 2 0 2
2 3 2 6
3 2 2 7
4 7 2 5
5 6 4 9
6 8 4 8
7 10 4 7
8 7 6 10
9 8 6 11
10 12 6 9
11 11 8 15
12 14 8 13
y <- c(2,3,2,7,6,8,10,7,8,12,11,14)

n <- length(y)

x0 <- rep(1, n)

x1 <- c(0,2,2,2,4,4,4,6,6,6,8,8)

x2 <- c(2,6,7,5,9,8,7,10,11,9,15,13)

X <- cbind(x0, x1, x2)
X
      x0 x1 x2
 [1,]  1  0  2
 [2,]  1  2  6
 [3,]  1  2  7
 [4,]  1  2  5
 [5,]  1  4  9
 [6,]  1  4  8
 [7,]  1  4  7
 [8,]  1  6 10
 [9,]  1  6 11
[10,]  1  6  9
[11,]  1  8 15
[12,]  1  8 13
k <- ncol(X) - 1

In <- diag(n)
Beta <- solve(t(X) %*% X) %*% t(X) %*% y
Beta
        [,1]
x0  5.375394
x1  3.011830
x2 -1.285489
a1 <- matrix(data = c(0, 1, 0), ncol = 1, byrow = TRUE)
a1
     [,1]
[1,]    0
[2,]    1
[3,]    0
Beta1 <- t(a1) %*% Beta
Beta1
        [,1]
[1,] 3.01183
a2 <- matrix(data = c(0,0,1), ncol = 1, byrow = TRUE)
a2
     [,1]
[1,]    0
[2,]    0
[3,]    1
Beta2 <- t(a2) %*% Beta
Beta2
          [,1]
[1,] -1.285489
SQRes <- t(y) %*% (In - X %*% solve(t(X) %*% X) %*% t(X)) %*% y
SQRes
         [,1]
[1,] 25.45899
gl_res <- n - k - 1
gl_res
[1] 9
QMRes <- SQRes / gl_res
QMRes     # QMRes = s²
         [,1]
[1,] 2.828777

Vamos assumir que os testes para \(H_0: \beta_j = 0\), para \(j = 1,2,\dots,k\), serão executados sem considerar se a hipótese global \(H_0: \boldsymbol{\beta_1 = 0}\) foi rejeitada.

Usamos a seguinte estatística:

\[ t_j = \frac{\hat{\beta}_j}{s\sqrt{g_{(j+1,j+1)}}} \]

s <- sqrt(QMRes)
s
         [,1]
[1,] 1.681897
g <- solve(t(X) %*% X)
g
           x0         x1          x2
x0  0.9747634  0.2429022 -0.22870662
x1  0.2429022  0.1620662 -0.11119874
x2 -0.2287066 -0.1111987  0.08359621
t1 <- Beta1 / (s %*% sqrt(t(a1) %*% g %*% a1))
t1
         [,1]
[1,] 4.448205
t2 <- Beta2 / (s %*% sqrt(t(a2) %*% g %*% a2))
t2
          [,1]
[1,] -2.643478
t_tab <- qt(0.975, n - k - 1)
t_tab
[1] 2.262157
p_valor_t1 <- 2 * (1 - pt(abs(t1), gl_res))
p_valor_t1
            [,1]
[1,] 0.001604352
p_valor_t2 <- 2 * (1 - pt(abs(t2), gl_res))
p_valor_t2
           [,1]
[1,] 0.02676076

Aqui, consideramos que foram realizados dois testes, com nível de significância de 5% para cada teste.

Teste t_calc t_tab p-valor (5%)
H0: Beta1 = 0 4.448205 2.262157 0.0016
H0: Beta2 = 0 -2.643478 2.262157 0.0268
p <- 1 - 0.05 / (2 * k)
p
[1] 0.9875
t_tab_Bon <- qt(p, n - k - 1)
t_tab_Bon
[1] 2.685011
t_tab_Scheffe <- sqrt((k + 1) %*% qf(0.95, k + 1, n - k - 1)) |> as.numeric()
t_tab_Scheffe
[1] 3.404063
Parâmetros t_calc t_tab t_Bonferroni t_Scheffé
Beta1 4.448205 2.262157 2.685011 3.404063
Beta2 -2.643478 2.262157 2.685011 3.404063

Nota-se que o valor do \(t\) calculado (t_calc) para o estimador de \(\beta_1\) é maior do que as estatísticas de \(t\) tabelado, de \(t\) de Bonferroni e de \(t\) de Scheffé, assim, rejeita-se a hipótese \(H_0: \beta_1 = 0\), com um nível de significância geral \(\alpha_f = 0, 05\).

Por outro lado, para o estimador de \(\beta_2\), obteve-se um valor absoluto de \(t\) maior que o \(t\) tabelado, porém inferior a do \(t\) de Bonferroni e do \(t\) de Scheffé. Assim, utilizando os dois métodos de nível de significância por comparação, não temos evidências para rejeitar a hipótese \(H_0: \beta_2 = 0\).

proc iml;
y = {2,3,2,7,6,8,10,7,8,12,11,14};
n = nrow(y);
x0 = j(n,1,1);
x1 = {0,2,2,2,4,4,4,6,6,6,8,8};
x2 = {2,6,7,5,9,8,7,10,11,9,15,13};
X = x0||x1||x2;
k = ncol(X)-1;
In = I(n);
Beta = inv(t(X)*X)*t(X)*y;
a0 = {1,0,0}; Beta0 = t(a0)*Beta; 
a1 = {0,1,0}; Beta1 = t(a1)*Beta;
a2 = {0,0,1}; Beta2 = t(a2)*Beta;
SQRes = t(y)*(In - X*inv(t(X)*X)*t(X))*y;
gl_res = n-k-1;
QMRes = SQRes/gl_res;
s = sqrt(QMRes);
G = inv(t(X)*X);
t1 = Beta1/(s*sqrt(t(a1)*G*a1));
t2 = Beta2/(s*sqrt(t(a2)*G*a2));
p_valor_t1 = 2*(1-cdf('t',abs(t1),gl_res));
p_valor_t2 = 2*(1-cdf('t',abs(t2),gl_res));
p = 1-0.05/(2*k);
t_tab = tinv(0.975,n-k-1);                      * calcula t-tabelado;
t_Bon = tinv(p,n-k-1);                          * calcula t-tabelado para Método de Bonferroni;
t_Scheffe = sqrt((k+1)*finv(0.95,k+1,n-k-1));   * calcula t-tabelado para Método de Scheffé;
print 'Exemplo 8.5.2' ,, 'Testes de hipótese H0: Bi = 0 vs Ha: Bi dif 0',,
      'H01: B1 = 0  ' 't_cal1 =' t1[format=8.4] '     p-valor = ' p_valor_t1[format=10.4],,
      'H02: B2 = 0  ' 't_cal2 =' t2[format=8.4] '     p-valor = ' p_valor_t2[format=10.4],,,,
      '----------------------------------------------',
      'alfa = 5% => t(0,025; 9 g.l.) ='  t_tab[format=12.4],
      '----------------------------------------------',,,
      'Método de Bonferroni', 't(0,0125; 9 g.l.) =' t_Bon[format=12.4],,,,
      'Método de Scheffé   ', 't-Scheffé         =' t_Scheffe[format=12.4];
quit;