Modelos Lineares Generalizados

Anexo — Estrutura do Modelo Nulo e do Modelo Saturado

Autor

Prof. Dr. Dennison Carvalho - Baseado em Dobson & Barnett (2018)

Data de Publicação

20 de outubro de 2026


Sobre este anexo. Este material complementa a apostila dos Exemplos 5.6.3 e 6.7.1. Explica de forma didática o que são o modelo nulo e o modelo saturado, qual é a sua estrutura matricial, e como eles formam a hierarquia de referência usada nos testes de deviance.


1 Os Dados de Referência

Usamos os dados do Exemplo 5.6.3 (Tabela 5.1 do livro) ao longo de todo este anexo.

x <- c(-1, -1,  0,  0,  0,  0,  1,  1,  1)
y <- c( 2,  3,  6,  7,  8,  9, 10, 12, 15)
N <- length(y)   # 9 observacoes
**Dados do Exemplo 5.6.3** — 9 observacoes com preditor x e resposta y.
i x y
1 -1 2
2 -1 3
3 0 6
4 0 7
5 0 8
6 0 9
7 1 10
8 1 12
9 1 15

2 Modelo Nulo (M0)

2.1 Estrutura

O modelo nulo é o modelo mais simples possível: todos os \(Y_i\) têm a mesma média, independentemente de qualquer preditor.

\[E(Y_i) = \mu \quad \text{para todo } i = 1, \ldots, N\]

Não há variável explicativa — o único parâmetro é a média geral \(\mu\).

2.2 Matriz de Planejamento

A matriz \(\mathbf{X}\) do modelo nulo tem uma única coluna: o vetor de uns.

\[\mathbf{X}_{M_0} = \begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \end{bmatrix}, \qquad \boldsymbol{\beta} = [\,\mu\,]\]

X_nulo <- matrix(1, nrow = N, ncol = 1,
                 dimnames = list(paste0("obs", 1:N), "intercepto"))
print(X_nulo)
     intercepto
obs1          1
obs2          1
obs3          1
obs4          1
obs5          1
obs6          1
obs7          1
obs8          1
obs9          1

2.3 Estimativa e Valores Ajustados

O EMV de \(\mu\) é simplesmente a média amostral \(\hat\mu = \bar{y}\):

mod_nulo <- glm(y ~ 1,
                family = poisson(link = "identity"),
                start  = c(mean(y)))

mu_hat  <- coef(mod_nulo)         # mu_hat = y_bar
y_hat_0 <- fitted(mod_nulo)       # todos iguais a y_bar
**Modelo nulo M0** — valores ajustados (todos iguais a y_bar = 8) e residuos.
i x y y_hat (= y_bar) residuo
1 -1 2 8 -6
2 -1 3 8 -5
3 0 6 8 -2
4 0 7 8 -1
5 0 8 8 0
6 0 9 8 1
7 1 10 8 2
8 1 12 8 4
9 1 15 8 7
mu_hat = y_bar = 8.0000 | gl = N - 1 = 8 | D(M0) = 18.4206

Interpretacao: O modelo nulo diz “nao sei nada sobre os grupos — minha melhor estimativa para qualquer observacao e a media geral”. Os residuos sao grandes porque o modelo ignora completamente o preditor \(x\).


3 Modelo Completo (M1)

3.1 Estrutura

O modelo completo do Exemplo 5.6.3 e uma reta com dois parametros:

\[E(Y_i) = \beta_1 + \beta_2\, x_i\]

3.2 Matriz de Planejamento

X_completo <- cbind(intercepto = 1, x = x)
rownames(X_completo) <- paste0("obs", 1:N)
print(X_completo)
     intercepto  x
obs1          1 -1
obs2          1 -1
obs3          1  0
obs4          1  0
obs5          1  0
obs6          1  0
obs7          1  1
obs8          1  1
obs9          1  1

3.3 Estimativa e Valores Ajustados

mod_completo <- glm(y ~ x,
                    family = poisson(link = "identity"),
                    start  = c(7, 5))

b1    <- coef(mod_completo)[1]
b2    <- coef(mod_completo)[2]
y_hat_1 <- fitted(mod_completo)
**Modelo completo M1** — valores ajustados e residuos.
i x y y_hat residuo
1 -1 2 2.516 -0.516
2 -1 3 2.516 0.484
3 0 6 7.452 -1.452
4 0 7 7.452 -0.452
5 0 8 7.452 0.548
6 0 9 7.452 1.548
7 1 10 12.387 -2.387
8 1 12 12.387 -0.387
9 1 15 12.387 2.613
b1 = 7.45163, b2 = 4.93530 | gl = N - 2 = 7 | D(M1) = 1.8947

Observacao: M1 tem tres valores ajustados distintos — um por nivel de \(x\). Os residuos sao muito menores do que no modelo nulo.


4 Modelo Saturado (M_sat)

4.1 Estrutura

O modelo saturado tem um parametro distinto para cada observacao:

\[E(Y_i) = \mu_i \quad (i = 1, \ldots, N)\]

Nenhuma estrutura e imposta — cada \(\mu_i\) e estimado independentemente.

4.2 Matriz de Planejamento

A matriz \(\mathbf{X}\) do modelo saturado e a matriz identidade \(N \times N\):

\[\mathbf{X}_{M_{\text{sat}}} = \mathbf{I}_{9} = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix}, \qquad \boldsymbol{\beta} = \begin{bmatrix}\mu_1 \\ \mu_2 \\ \mu_3 \\ \mu_4 \\ \mu_5 \\ \mu_6 \\ \mu_7 \\ \mu_8 \\ \mu_9\end{bmatrix}\]

Cada linha seleciona exatamente um parametro — o correspondente a observacao \(i\).

X_sat <- diag(N)
rownames(X_sat) <- paste0("obs", 1:N)
colnames(X_sat) <- paste0("mu", 1:N)
print(X_sat)
     mu1 mu2 mu3 mu4 mu5 mu6 mu7 mu8 mu9
obs1   1   0   0   0   0   0   0   0   0
obs2   0   1   0   0   0   0   0   0   0
obs3   0   0   1   0   0   0   0   0   0
obs4   0   0   0   1   0   0   0   0   0
obs5   0   0   0   0   1   0   0   0   0
obs6   0   0   0   0   0   1   0   0   0
obs7   0   0   0   0   0   0   1   0   0
obs8   0   0   0   0   0   0   0   1   0
obs9   0   0   0   0   0   0   0   0   1

4.3 Estimativas e Valores Ajustados

Como cada \(\mu_i\) e estimado livremente, o EMV e simplesmente \(\hat\mu_i = y_i\):

obs_id  <- factor(seq_along(y))
mod_sat <- glm(y ~ obs_id,
               family = poisson(link = "identity"))

y_hat_sat <- fitted(mod_sat)
anova(mod_nulo,mod_completo, mod_sat, test = "Chisq")
Analysis of Deviance Table

Model 1: y ~ 1
Model 2: y ~ x
Model 3: y ~ obs_id
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1         8    18.4206                          
2         7     1.8947  1  16.5260 4.799e-05 ***
3         0     0.0000  7   1.8947    0.9654    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
**Modelo saturado M_sat** — valores ajustados identicos aos observados; residuos = 0.
i x y y_hat (= y) residuo
1 -1 2 2 0
2 -1 3 3 0
3 0 6 6 0
4 0 7 7 0
5 0 8 8 0
6 0 9 9 0
7 1 10 10 0
8 1 12 12 0
9 1 15 15 0
gl = N - N = 0 | D(M_sat) = 0.000000 (zero por construcao)

Por que a deviance e zero? A formula da deviance de Poisson e:

\[D = 2\sum_{i} \left[ y_i \log\frac{y_i}{\hat\mu_i} - (y_i - \hat\mu_i) \right]\]

Quando \(\hat\mu_i = y_i\), cada termo se torna \(y_i \log(1) - 0 = 0\). Logo \(D = 0\).


5 Comparacao dos Tres Modelos

5.1 Tabela Comparativa

**Comparacao dos tres modelos** para os dados do Exemplo 5.6.3.
Modelo Formula Param. gl Deviance y_hat (obs 1-2) y_hat (obs 3-6)
M0 (nulo) E(Yi) = mu 1 8 18.4206 8.00 8.00
M1 (completo) E(Yi) = b1 + b2*x 2 7 1.8947 2.52 7.45
M_sat (saturado) E(Yi) = mu_i 9 0 0.0000 2 / 3 6/7/8/9

5.2 A Hierarquia de Aninhamento

Os tres modelos formam uma hierarquia estrita:

\[\underbrace{M_0}_{\substack{1 \text{ par.} \\ \text{gl} = 8}} \;\subset\; \underbrace{M_1}_{\substack{2 \text{ par.} \\ \text{gl} = 7}} \;\subset\; \underbrace{M_{\text{sat}}}_{\substack{9 \text{ par.} \\ \text{gl} = 0}}\]

Cada modelo e um caso especial do seguinte. Por isso a deviance so pode diminuir ao longo da hierarquia:

\[D(M_0) = 18{,}42 \;\geq\; D(M_1) = 1{,}89 \;\geq\; D(M_{\text{sat}}) = 0\]

Hierarquia dos tres modelos: a deviance decresce monotonicamente ao longo de M0 -> M1 -> M_sat. A diferenca deltaD = D(M0) - D(M1) mede a contribuicao do preditor x; D(M1) mede o residuo do modelo completo em relacao ao saturado.

6 A Deviance Como Medida de Distancia

6.1 Por que comparar sempre com o saturado?

A deviance mede a distancia em log-verossimilhança entre o modelo em questao e o melhor ajuste possivel (o saturado):

\[D(M) = 2\,[\,\ell(M_{\text{sat}}) - \ell(M)\,] \geq 0\]

Esta e a mesma logica de uma corrida de atletismo:

**Analogia** entre deviance e distancia em uma corrida.
Conceito estatistico Analogia
Modelo saturado M_sat Linha de chegada (referencia perfeita)
Modelo completo M1 Corredor bem treinado (quase na linha)
Modelo nulo M0 Corredor despreparado (longe da linha)
D(M1) = 1.89 Distancia de M1 ate a chegada (pequena = bom)
D(M0) = 18.42 Distancia de M0 ate a chegada (grande = ruim)
deltaD = 16.53 Distancia entre M0 e M1 (ganho ao acrescentar x)

6.2 Decomposicao da Deviance

As tres deviances se relacionam por:

\[\underbrace{D(M_0)}_{18{,}42} = \underbrace{D(M_0) - D(M_1)}_{\Delta D = 16{,}53} + \underbrace{D(M_1)}_{1{,}89}\]

  • \(\Delta D = 16{,}53\): parte da deviance explicada pelo preditor \(x\)
  • \(D(M_1) = 1{,}89\): parte residual nao explicada (ruido)
**Decomposicao da deviance** de M0 em efeito de x e residuo.
Componente Deviance gl % de D(M0) Pergunta
Efeito de x: D(M0) - D(M1) 16.5260 1 89.7% B — x e necessario?
Residuo de M1: D(M1) 1.8947 7 10.3% A — M1 ajusta bem?
Total: D(M0) 18.4206 8 100.0% —

O preditor \(x\) explica 89.7% da deviance total do modelo nulo. Apenas 10.3% permanece como residuo nao explicado — confirmando que \(x\) e altamente informativo e que o modelo linear e adequado.


7 Resumo

**Resumo** da estrutura e papel de cada modelo.
Modelo Ideia central Matriz X Papel Deviance
M0 — nulo Nenhum preditor. Media constante para todos. Coluna de uns (N x 1) Referencia inferior (sem informacao alguma) D(M0) grande
M1 — completo Um ou mais preditores. Estrutura imposta aos dados. Colunas de uns e preditores (N x p) Modelo de interesse D(M1) moderada
M_sat — saturado Um parametro por observacao. Sem estrutura alguma. Matriz identidade (N x N) Referencia superior (ajuste perfeito) D(M_sat) = 0

7.1 Referencias

Dobson, A. J. & Barnett, A. G. (2018). An Introduction to Generalized Linear Models (4ª ed.). CRC Press / Chapman & Hall.