UNIVERSIDADE FEDERAL DE MINAS GERAIS

Centro de Desenvolvimento e Planejamento Regional (CEDEPLAR)

O Teorema de Fisher

Setembro de 2026

Professor: Dr. Ramon Gregório Silva

Timóteo - MG
Setembro de 2026


1 Fundamentos da Álgebra Linear Aplicada: O Teorema de Fisher e a Matriz Aniquiladora

1.1 1. O Teorema de Fisher (Pressuposto Inicial da Estatística)

Historicamente na inferência e na econometria, o Teorema de Fisher (frequentemente associado às bases da decomposição de formas quadráticas e projeções ortogonais de Ronald Fisher) estabelece os alicerces matemáticos para a separação entre a parte sistemática e a parte estocástica de um modelo.Em termos de modelagem linear, o teorema dita que qualquer vetor de observações pode ser decomposto de maneira ortogonal em subespaços independentes. No contexto de predição, se definirmos a variável observada como \(y\) e o valor esperado estimado pelo modelo como \(XB\), o erro (ou resíduo) da previsão é isolado de forma que o componente explicável por \(X\) seja completamente projetado e separado do termo de erro puro.

1.2 2. Derivação do Estimador de Mínimos Quadrados (MQO)

Dado o modelo linear onde a variável observada \(y\) é explicada por \(XB\), o vetor de erros \(e\) é definido como:

\[e = y - XB\] Para encontrar os coeficientes \(B\) que minimizam a soma dos quadrados dos erros (variância mínima), construímos a função de perda \(S\):\[S = e'e = (y - XB)'(y - XB)\] Expandindo o produto matricial: \[S = y'y - y'XB - B'X'y + B'X'XB\] Como \(y'XB\) é um escalar, ele é igual à sua transposta \(B'X'y\). Logo, a expressão simplificada é: \[S = y'y - 2B'X'y + B'X'XB\] Minimização em relação a \(B\)Derivando a função \(S\) em relação ao vetor de coeficientes \(B\) e igualando o resultado a zero: \[\frac{\partial S}{\partial B} = -2X'y + 2X'XB = 0\] Isolando o termo com \(B\): \[2X'XB = 2X'y \implies X'XB = X'y\] Multiplicando ambos os lados à esquerda pela inversa de \(X'X\), obtemos o estimador de Mínimos Quadrados Ordinários: \[B = (X'X)^{-1}X'y\] ## 3. A Construção da Matriz Aniquiladora (\(M\)) Substituindo o estimador \(B\) de volta na equação do erro \(e\): \[e = y - X \left( (X'X)^{-1}X'y \right)\] Colocando o vetor \(y\) em evidência à direita: \[e = \left[ I - X(X'X)^{-1}X' \right] y\] Definimos a parte entre colchetes como a Matriz Aniquiladora (\(M\)): \[M = I - X(X'X)^{-1}X'\] Dessa forma, o vetor de resíduos pode ser escrito compactamente como: \[e = My\] ## 4. Propriedades, Aniquilação e OrtogonalidadeA matriz \(M\) possui propriedades fundamentais na álgebra linear estatística: * Simetria: \(M' = M\) * Idempotência: \(MM = M\)

Provas de Aniquilação (\(MX = 0\)) e AplicaçõesAniquilação de \(X\) (\(MX = 0\)): Multiplicando a matriz \(M\) pela matriz de variáveis explicativas \(X\): \[MX = \left[ I - X(X'X)^{-1}X' \right] X\] Distribuindo o \(X\): \[MX = X - X(X'X)^{-1}(X'X)\]Como \((X'X)^{-1}(X'X) = I\):\[ MX = X - X = 0\]Isso demonstra que \(M\) “aniquila” o efeito das variáveis explicativas contidas em \(X\).Relações com o modelo estimado:Aplicando a matriz \(M\) sobre o termo estrutural do modelo: \[M(y - XB) = My - MXB\] Como demonstramos que \(MX = 0\), o termo se reduz a: \[My - 0 = My = e\] Expandindo a substituição completa de \(B\): \[M \left( y - X(X'X)^{-1}X'y \right) = M(I - X(X'X)^{-1}X')y=M'My = My = e\] Aplicando a propriedade idempotente (\(M \cdot M = M\)): \[M(My) = M^2y = My = e\] O que nos permite escrever a relação de forma consistente com a simetria e idempotência: \[e = My = M'My\] ### Interpretação Geométrica

Como \(MX = 0\), temos que o produto interno entre as colunas da matriz \(X\) e o vetor de resíduos \(e\) é igual a zero (\(X'e = 0\)).Isso prova que o vetor de resíduos \(e\) é estritamente ortogonal ao espaço gerado pelas colunas de \(X\), formando um ângulo de \(90^\circ\) entre si. Em termos práticos, todo o componente sistemático explicável por \(X\) foi projetado e removido de \(y\), restando em \(e\) apenas a pura inovação ou erro aleatório que não depende mais de \(X\).

2 Exemplo prático

No código acima, os coeficientes \(\hat{\beta}\) foram estimados utilizando a solução matricial analítica de Mínimos Quadrados Ordinários (MQO) para minimizar a soma dos erros quadráticos do modelo. Inicialmente, o script estrutura a variável dependente como o vetor \(y\) (logaritmo do salário) e as variáveis explicativas como a matriz \(X\) (contendo uma coluna de ums para o intercepto, anos de estudo e experiência). Em seguida, o programa calcula o produto da transposta de \(X\) por \(X\) (\(X'X\)), obtém sua matriz inversa por meio da função solve(), e multiplica esse inverso pelo produto da transposta de \(X\) por \(y\) (\(X'y\)), aplicando diretamente a fórmula \(\hat{\beta} = (X'X)^{-1}X'y\) para encontrar o vetor de parâmetros ótimos.

library(wooldridge)
library(dplyr)
## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union
# 1. Carregar os dados 'wage1' do pacote Wooldridge
dados <- wage1

# Selecionar as variáveis: wage (salário), educ (anos de estudo), exper (experiência)
# Vamos pegar as primeiras 526 observações completas
y_vec <- dados$lwage
educ_vec <- dados$educ
exper_vec <- dados$exper

n <- length(y_vec)

# 2. Construção do vetor y e da matriz X (com intercepto, educ e exper)
y <- matrix(y_vec, ncol = 1)
X <- cbind(Intercepto = rep(1, n), Educ = educ_vec, Exper = exper_vec)

# 3. Estimação Matricial dos Coeficientes (Beta_hat)
# Formula: beta_hat = (X'X)^(-1) * X'y
XtX <- t(X) %*% X
XtX_inv <- solve(XtX)
Xty <- t(X) %*% y

beta_hat <- XtX_inv %*% Xty
print("--- Vetor de Coeficientes Estimados (Beta_hat) ---")
## [1] "--- Vetor de Coeficientes Estimados (Beta_hat) ---"
print(beta_hat)
##                  [,1]
## Intercepto 0.21685438
## Educ       0.09793557
## Exper      0.01034695

Este trecho final do código executa a etapa prática de toda a teoria da álgebra linear que desenvolvemos, construindo primeiro a matriz identidade e em seguida a Matriz Aniquiladora (\(M\)). Ao multiplicar essa matriz pelo vetor de observações \(y\), o script obtém instantaneamente o vetor de resíduos (\(e = My\)), culminando na criação de um gráfico que plota cada erro individual e os conecta por linhas ao longo das observações, tendo como referência uma linha horizontal centrada no zero.

Para os pesquisadores, essa formulação matricial representa um avanço conceitual e computacional fundamental, pois permite isolar perfeitamente o sinal do ruído. Ao aplicar a matriz \(M\) sobre os dados observados, elimina-se cirurgicamente todo o componente sistemático explicado pelas variáveis de \(X\), revelando a pura aleatoriedade ou inovação do modelo de forma limpa e direta.

Além da elegância visual, dispor do vetor de erros calculado por matrizes facilita enormemente o diagnóstico estatístico e as demonstrações teóricas. A partir desse resultado, os pesquisadores conseguem inspecionar graficamente a presença de problemas cruciais como heteroscedasticidade, autocorrelação ou valores discrepantes (outliers), além de utilizarem as propriedades simétricas e idempotentes da matriz para simplificar deduções de variância e testes de hipóteses avançados.

# 4. Construção da Matriz Aniquiladora (M)
# Formula: M = I - X * (X'X)^(-1) * X'
I_n <- diag(n)
M <- I_n - X %*% XtX_inv %*% t(X)

# 5. Encontrar o vetor de erros multiplicando M por y (e = My)
e <- M %*% y

# 6. Plotar o erro da previsão
plot(e, type = "b", col = "blue", pch = 20, 
     main = "(Erro) e = My ", 
     xlab = "Observações", ylab = "Erro da Previsão")

# Adiciona uma linha horizontal pontilhada em zero para referência
abline(h = 0, col = "red", lty = 2)

O gráfico apresentado ilustra o vetor de resíduos (\(e = My\)) obtido através da aplicação da Matriz Aniquiladora ao longo das observações do modelo. Conforme previsto pela teoria da regressão linear, os pontos distribuem-se de forma simétrica em torno da linha vermelha horizontal tracejada fixada no zero, o que evidencia que a média dos erros da previsão é nula devido à presença do termo constante (intercepto) na matriz \(X\).

Em termos de comportamento visual e dispersão, a maioria dos resíduos concentra-se numa faixa estável entre \(-1.0\) e \(1.0\). No entanto, o gráfico permite identificar claramente a presença de alguns valores atípicos (outliers), com destaque para um desvio negativo acentuado próximo da vigésima observação, que atinge um valor inferior a \(-2.0\), além de pontuais picos positivos que se aproximam de \(1.5\).

Esta análise visual cumpre uma função de diagnóstico indispensável para a investigação estatística. Ao constatar que os erros comportam-ae de maneira relativamente aleatória ao longo da amostra, o investigador ganha indícios visuais importantes para validar a adequação do modelo, verificar a estabilidade da variância e assegurar que o componente sistemático foi devidamente removido pela projecção ortogonal.

Em suma, a trajetória que vai desde a formulação analítica do Teorema de Fisher e a derivação matricial da Matriz Aniquiladora até a sua implementação computacional demonstra como a Álgebra Linear sustenta a base lógica da estatística moderna. No passado, dispor desse arcabouço matricial era uma ferramenta estratégica formidável para facilitar a pesquisa, permitindo que os investigadores manipulassem e adaptassem modelos complexos com rapidez antes do advento dos pacotes estatísticos automatizados. Embora os softwares atuais façam todo o trabalho pesado, compreender a mecânica por trás de matrizes idempotentes, projeções ortogonais e do isolamento do erro capacita o pesquisador a transitar com total autonomia entre a teoria pura e a prática econométrica, garantindo rigor e flexibilidade na análise de dados.

3 X Ortogonal com erro M:

\[MX = \left[ I - X(X'X)^{-1}X' \right] X\] \[MX = X - X = 0\]

# 6. Multiplicar a matriz aniquiladora por X (MX)
# Deve resultar em uma matriz de zeros (ortogonalidade perfeita)
MX <- M %*% X

max_abs <- max(abs(MX))
cat("Maior valor absoluto em MX:", max_abs, "\n")
## Maior valor absoluto em MX: 1.893e-13
# 2. Testar se todos os elementos são virtualmente iguais a zero (ex: tolerância de 1e-10)
sao_todos_zero <- all(abs(MX) < 1e-10)
cat("A matriz MX é inteiramente composta por zeros? ", sao_todos_zero, "\n")
## A matriz MX é inteiramente composta por zeros?  TRUE
# 3. Contar quantos elementos de MX são diferentes de zero considerando a tolerância
elementos_nao_nulos <- sum(abs(MX) >= 1e-10)
cat("Quantidade de elementos diferentes de zero:", elementos_nao_nulos, "\n")
## Quantidade de elementos diferentes de zero: 0

4 Representação gráfica

Sob uma ótica de álgebra linear, o vetor de resíduos do MQO (\(e = My\)) é obtido por meio da matriz aniquiladora \(M\), cuja propriedade fundamental garante que o erro seja estritamente ortogonal — formando um ângulo exato de \(90^\circ\) — ao subespaço vetorial gerado pelas colunas da matriz de variáveis explicativas \(X\), satisfazendo a condição algébrica \(X'e = 0\). No gráfico tridimensional, como o plano de projeção representa o espaço abrigado pelos regressores na base horizontal está na parte azul e esperado nos pontos y(observado), a linha vermelha que conecta o valor estimado ao observado ergue-se de forma perfeitamente vertical, sem qualquer inclinação lateral ou componente projetada sobre as variáveis explicativas. Essa disposição geométrica traduz visualmente o fato de que o resíduo é inteiramente descorrelacionado das variáveis do modelo, isolando estritamente no eixo vertical a desviação salarial pura que não pôde ser explicada pelo plano de regressão.

dados <- wage1

# Selecionar as variáveis: wage (salário), educ (anos de estudo), exper (experiência)
# Vamos pegar as primeiras 526 observações completas
y_vec <- dados$lwage
educ_vec <- dados$educ
exper_vec <- dados$exper

n <- length(y_vec)

# 2. Construção do vetor y e da matriz X (com intercepto, educ e exper)
y <- matrix(y_vec, ncol = 1)
X <- cbind(Intercepto = rep(1, n), Educ = educ_vec, Exper = exper_vec)

# 3. Estimação Matricial dos Coeficientes (Beta_hat)
# Formula: beta_hat = (X'X)^(-1) * X'y
XtX <- t(X) %*% X
XtX_inv <- solve(XtX)
Xty <- t(X) %*% y

beta_hat <- XtX_inv %*% Xty

# Aqui construimos M

# colocando XtX_inv %*% Xty no erro 
I_n <- diag(n)
M <- I_n-X %*% XtX_inv %*% t(X)

5 Verificando My = M’My

\[e = My = M'My\] A igualdade visual e numérica entre os gráficos de \(My\) e \(M'My\) decorre diretamente de duas propriedades fundamentais da matriz aniquiladora: ela é simétrica (\(M = M'\)) e idempotente (\(MM = M\)). Quando realizamos a operação \(M'My\), as propriedades fazem com que a expressão se reduza a \(MMy = My = e\), o que significa que aplicar projeções ortogonais sucessivas sobre o espaço nulo não altera um vetor que já se encontra perfeitamente ortogonalizado em relação aos regressores, garantindo a estabilidade absoluta do vetor de resíduos.

# 4. Construção da Matriz Aniquiladora (M)
# Formula: M = I - X * (X'X)^(-1) * X'
I_n <- diag(n)
M <- I_n - X %*% XtX_inv %*% t(X)

# 5. Encontrar o vetor de erros multiplicando M por y (e = My)

Me <- t(M) %*% M %*% y
df_me <- data.frame(
  Observacao = 1:nrow(Me),
  Erro = as.numeric(Me[, 1])
)

# 3. Plotagem limpa com ggplot2
ggplot(df_me, aes(x = Observacao, y = Erro)) +
  geom_hline(yintercept = 0, color = "darkred", linetype = "dashed") +
  geom_line(color = "blue", linewidth = 0.8) +
  geom_point(color = "blue", size = 2) +
  labs(
    title = "(Erro) M(Y-XB) = My",
    x = "Observações",
    y = "Erro da Previsão"
  ) +
  theme_minimal()