Você está na página 1de 28

SUMÁRIO

APLICAÇÕES DA ÁLGEBRA LINEAR À CIÊNCIA DE DADOS ................................................................. 5

ANÁLISE DE COMPONENTES PRINCIPAIS ....................................................................................... 5


Forma quadrática dada pela matriz de covariâncias ............................................................ 5
Matriz de covariâncias ............................................................................................................... 7
Análise de componentes principais ........................................................................................ 8
Variância explicada pelos autovetores ................................................................................... 9
Componentes principais no R ................................................................................................ 10
Scree plot.................................................................................................................................... 13
REGRESSÃO LINEAR E MÉTODO DOS MÍNIMOS QUADRADOS .................................................. 15
Regressão linear na forma matricial ..................................................................................... 17
Regressões lineares e projeções ortogonais........................................................................ 17
Regressões lineares no R ........................................................................................................ 20
Coeficiente de determinação ................................................................................................. 20

BIBLIOGRAFIA ...................................................................................................................................... 24

PROFESSOR-AUTOR ............................................................................................................................. 25
APLICAÇÕES DA ÁLGEBRA LINEAR À
CIÊNCIA DE DADOS

Iniciaremos o curso estudando a análise de componentes principais, fornecendo as definições


de média amostral, variância amostral e covariância amostral.
Veremos que a covariância amostral induz uma forma quadrática. Assim, podemos
pensar na análise de componentes principais como o estudo da forma quadrática induzida pela
matriz de covariâncias. Isto é, as componentes principais são obtidas por meio da otimização
desta forma quadrática.
Por fim, veremos como utilizar projeções ortogonais para realizar a regressão linear. Mais
precisamente, veremos como o estimador de mínimos quadrados é justamente a projeção ortogonal
sobre o espaço coluna da matriz de dados.

Análise de componentes principais


Forma quadrática dada pela matriz de covariâncias
Vamos considerar a matriz de covariâncias amostrais.
Suponha que temos um conjunto de dados 𝑥𝑥 = (𝑥𝑥1 , 𝑥𝑥2 , … , 𝑥𝑥𝑛𝑛 ). A média amostral de 𝑥𝑥 é
dada por

𝑛𝑛
1
𝑥𝑥 = � 𝑥𝑥𝑖𝑖 .
𝑛𝑛
𝑖𝑖=1
A variância amostral de 𝑥𝑥 é dada por

1
𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥) = 𝑛𝑛−1 ∑𝑛𝑛𝑖𝑖=1(𝑥𝑥𝑖𝑖 − 𝑥𝑥)2 .

Suponha que temos dois conjuntos de dados 𝑥𝑥 = (𝑥𝑥1 , 𝑥𝑥2 , … , 𝑥𝑥𝑛𝑛 ) e 𝑦𝑦 = (𝑦𝑦1 , 𝑦𝑦2 , … , 𝑦𝑦𝑛𝑛 ).
A covariância amostral entre 𝑥𝑥 e 𝑦𝑦 é dada por

𝑛𝑛
1
𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑦𝑦) = �(𝑥𝑥𝑖𝑖 − 𝑥𝑥)(𝑦𝑦𝑖𝑖 − 𝑦𝑦).
𝑛𝑛 − 1
𝑖𝑖=1

Valem as seguintes propriedades:


Dados α, β ∈ 𝑹𝑹, então

α𝑥𝑥 + β𝑦𝑦 = α𝑥𝑥 + β𝑦𝑦,


𝑐𝑐𝑐𝑐𝑐𝑐(α𝑥𝑥, β𝑦𝑦) = αβ𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑦𝑦),
𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥) = 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑥𝑥),

e, dado 𝑧𝑧 = (𝑧𝑧1 , 𝑧𝑧2 , … , 𝑧𝑧𝑛𝑛 ),

𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑦𝑦 + 𝑧𝑧) = 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑦𝑦) + 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑧𝑧).

Defina 𝑥𝑥� = 𝑥𝑥 − 𝑥𝑥 = (𝑥𝑥1 − 𝑥𝑥, … , 𝑥𝑥𝑛𝑛 − 𝑥𝑥) 𝑒𝑒 𝑦𝑦� = 𝑦𝑦 − 𝑦𝑦 = (𝑦𝑦1 − 𝑦𝑦, … , 𝑦𝑦𝑛𝑛 − 𝑦𝑦).

Observe que segue diretamente da definição que

𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑦𝑦) = 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥�, 𝑦𝑦�).

Em termos de 𝑥𝑥� e 𝑦𝑦�, temos

𝑛𝑛
1 𝑥𝑥� ⋅ 𝑦𝑦� 𝑥𝑥� ⊤ 𝑦𝑦�
𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥, 𝑦𝑦) = 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥�, 𝑦𝑦�) = � 𝑥𝑥�𝑖𝑖 𝑦𝑦�𝚤𝚤 = = .
𝑛𝑛 − 1 𝑛𝑛 − 1 𝑛𝑛 − 1
𝑖𝑖=1

6
Matriz de covariâncias
Sejam 𝑋𝑋1 = (𝑥𝑥11 , 𝑥𝑥21 , … , 𝑥𝑥𝑛𝑛1 ), … , 𝑋𝑋𝑘𝑘 = (𝑥𝑥1𝑘𝑘 , … , 𝑥𝑥𝑛𝑛𝑛𝑛 ) uma coleção de 𝑘𝑘 vetores de dados.
Considere a matriz 𝑋𝑋, de tamanho 𝑛𝑛 × 𝑘𝑘, contendo estes vetores como colunas:

A matriz de covariâncias de 𝑋𝑋 é a matriz 𝑘𝑘 × 𝑘𝑘 dada por

�1 = 𝑋𝑋1 − 𝑋𝑋1 = �𝑋𝑋11 − 𝑋𝑋1 , … , 𝑋𝑋𝑛𝑛1 − 𝑋𝑋1 �, …, 𝑋𝑋


Considere os vetores centralizados: 𝑋𝑋 �𝑘𝑘 =
𝑋𝑋𝑘𝑘 − 𝑋𝑋𝑘𝑘 = �𝑋𝑋1𝑘𝑘 − 𝑋𝑋𝑘𝑘 , … , 𝑋𝑋𝑛𝑛𝑛𝑛 − 𝑋𝑋𝑘𝑘 �.

�1 , … , 𝑋𝑋
Em termos de 𝑋𝑋 �𝑘𝑘 , a matriz de covariâncias amostrais pode ser escrita como:

Escreva, agora,

Note que

7
A matriz de covariâncias induz à seguinte forma quadrática em 𝑹𝑹𝑘𝑘 :

1 �⊤ 𝑋𝑋�𝑢𝑢.
𝑞𝑞(𝑢𝑢) = 𝑢𝑢⊤ 𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋)𝑢𝑢 = 𝑢𝑢⊤ 𝑋𝑋
𝑛𝑛 − 1

Note que 𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋) é não negativa definida. De fato, para todo 𝑢𝑢 ∈ 𝑹𝑹𝑘𝑘 ,

1 1 ⊤ |𝑋𝑋�𝑢𝑢|2
𝑞𝑞(𝑢𝑢) = 𝑢𝑢⊤ 𝑋𝑋� ⊤ 𝑋𝑋�𝑢𝑢 = �𝑋𝑋�𝑢𝑢� �𝑋𝑋�𝑢𝑢� = ≥ 0.
𝑛𝑛 − 1 𝑛𝑛 − 1 𝑛𝑛 − 1

Na realidade, temos uma representação melhor para a forma quadrática 𝑞𝑞. Seja 𝑢𝑢 =
(𝑢𝑢1 , … , 𝑢𝑢𝑘𝑘 ), é possível mostrar que

|𝑋𝑋�𝑢𝑢|2
𝑞𝑞(𝑢𝑢) = = 𝑣𝑣𝑣𝑣𝑣𝑣(𝑢𝑢1 𝑥𝑥1 + ⋯ + 𝑢𝑢𝑘𝑘 𝑥𝑥𝑘𝑘 ).
𝑛𝑛 − 1

Dessa forma, a forma quadrática 𝑞𝑞(𝑢𝑢) induzida pela matriz de covariâncias fornece a
variância amostral da combinação linear dos vetores coluna 𝑋𝑋1 , … , 𝑋𝑋𝑘𝑘 pelos coeficientes dados pelas
coordenadas de 𝑢𝑢.
Diante disso, as duas perguntas naturais são:
1. Qual é a direção que fornece a maior variância possível?
2. É possível extrair um subconjunto “pequeno” de combinações lineares dos vetores coluna
de 𝑋𝑋 que “expliquem” a maior parte da variância?

Já sabemos a resposta para a primeira pergunta. A direção de maior variância amostral é dada
𝑋𝑋� ⊤ 𝑋𝑋�
pela direção do autovetor de 𝑛𝑛−1
associada ao maior autovalor.
Além disso, sabemos que ao “excluirmos” essa direção, a próxima direção de maior variância
será a do autovetor associado ao segundo maior autovalor, e assim sucessivamente.

Análise de componentes principais


As componentes principais de uma matriz formada por vetores colunas de dados 𝑋𝑋 =
[𝑋𝑋1 ; 𝑋𝑋2 ; ⋯ ; 𝑋𝑋𝑘𝑘 ] são as combinações lineares desses vetores colunas em que os coeficientes das
𝑋𝑋� ⊤ 𝑋𝑋�
combinações são dados pelos autovetores (ortogonais e normalizados) de 𝑛𝑛−1 .
Assim a primeira componente principal de 𝑋𝑋 é a combinação linear 𝑢𝑢1 𝑥𝑥�1 + ⋯ 𝑢𝑢𝑘𝑘 𝑥𝑥�𝑘𝑘 , com
2
|𝑢𝑢| = 1, tal que a variância 𝑣𝑣𝑣𝑣𝑣𝑣(𝑢𝑢1 𝑥𝑥1 + ⋯ + 𝑢𝑢𝑘𝑘 𝑥𝑥𝑘𝑘 ) = 𝑣𝑣𝑣𝑣𝑣𝑣(𝑢𝑢1 𝑥𝑥�1 + ⋯ 𝑢𝑢𝑘𝑘 𝑥𝑥�𝑘𝑘 ) é a maior possível,
e assim sucessivamente.

8
Sejam 𝑣𝑣1 , … , 𝑣𝑣𝑘𝑘 os autovetores associados aos autovalores λ1 ≥ ⋯ ≥ λ𝑘𝑘 ≥ 0. Então

𝑞𝑞(𝑣𝑣𝑖𝑖 ) = λ𝑖𝑖 = 𝑣𝑣𝑣𝑣𝑣𝑣�𝑣𝑣1𝑖𝑖 𝑋𝑋�1 + ⋯ 𝑣𝑣𝑘𝑘𝑘𝑘 𝑋𝑋�𝑘𝑘 �.

Note, agora, que a “variância total” dos dados em 𝑋𝑋 é:

𝑣𝑣𝑣𝑣𝑣𝑣(𝑋𝑋1 ) + 𝑣𝑣𝑣𝑣𝑣𝑣(𝑋𝑋2 ) + ⋯ + 𝑣𝑣𝑣𝑣𝑣𝑣(𝑋𝑋𝑘𝑘 ) = 𝑡𝑡𝑡𝑡�𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋)�.

Seja, agora, 𝑉𝑉 a matriz cujas colunas são dadas pelos autovetores, associados de forma
𝑋𝑋� ⊤ 𝑋𝑋�
ordenada aos autovalores, de 𝑛𝑛−1
. Seja Λ a matriz diagonal cujas entradas são os seus autovalores
ordenados, λ1 ≥ ⋯ ≥ λ𝑘𝑘 . Desse modo, a diagonalização de 𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋) é dada por

Λ = 𝑉𝑉 −1 𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋)𝑉𝑉.

Logo temos pela propriedade fundamental do traço que (fazendo 𝐴𝐴 = 𝑉𝑉 −1 𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋) e 𝐵𝐵 = 𝑉𝑉):

𝑡𝑡𝑡𝑡(Λ) = 𝑡𝑡𝑡𝑡(𝑉𝑉 −1 𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋)𝑉𝑉) = 𝑡𝑡𝑡𝑡�𝑉𝑉𝑉𝑉 −1 𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋)� = 𝑡𝑡𝑡𝑡�𝐶𝐶𝐶𝐶𝐶𝐶(𝑋𝑋)�.

Portanto segue que

λ1 + ⋯ + λ𝑘𝑘
= 𝑣𝑣𝑣𝑣𝑣𝑣(𝑋𝑋1 ) + ⋯ + 𝑣𝑣𝑣𝑣𝑣𝑣(𝑋𝑋𝑘𝑘 ).

Variância explicada pelos autovetores


Dessa forma, a variância da combinação induzida pelo autovetor associada ao maior autovalor
representa

λ1
× 100%
𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥1 ) + ⋯ + 𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥𝑘𝑘 )

da variância total.
Se considerarmos as 𝑝𝑝 primeiras componentes principais, elas explicarão

λ1 + ⋯ + λ𝑝𝑝
× 100%
𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥1 ) + ⋯ + 𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥𝑘𝑘 )

da variância total.

9
Por fim, note que, se considerarmos todas as componentes principais, a variância explicada será

λ1 + ⋯ + λ𝑘𝑘
× 100% = 100%
𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥1 ) + ⋯ + 𝑣𝑣𝑣𝑣𝑣𝑣(𝑥𝑥𝑘𝑘 )

da variância total.

Componentes principais no R
Vamos começar exemplificando com duas variáveis. Observe que, com duas variáveis, é
possível ter ideia das direções das componentes principais sem efetivamente calculá-las.

# Vamos gerar u e v seguindo normais independentes


u = rnorm(200, mean=10, sd=5) # Média 10 e desvio padrão 5
v = rnorm(200, mean=4, sd=2) # Média 4 e desvio padrão 2
# Defina agora x e y em termos de u e v
x = u + v
y = u - v
X = cbind(x,y)
library(ggplot2)
Xdf = data.frame(x = x, y = y)
ggplot(Xdf) + aes(x=x, y=y) + geom_point()

Figura 1 – Análise de componentes principais

É possível notar que a direção de maior variância aparentemente é aquela paralela ao vetor (1,1).

10
Primeiramente, vamos obter as componentes principais por meio da obtenção dos
autovetores. Depois, vamos obtê-las utilizando uma função específica do R.

n = 200 # 200 observações


col_medias <- matrix(rep(colMeans(X), each = n), nrow=n)
X_til <- X - col_medias

Também podemos realizar essa operação com a função scale:

X_til_2 <- scale(X, scale=FALSE)


sum( (X_til_2-X_til)^2)

Defina a matriz S:

S <- (t(X_til) %*% X_til)/(n-1)

Note que 𝑆𝑆 é a matriz de covariância amostral. Podemos verificar utilizando a função cov do R:

sum((cov(X)-S)^2)

Observe que o resultado, caso seja diferente de zero, será negligível, já que ocorrerá por conta
de aproximações numéricas.
Na Figura 1, acima, temos uma ideia clara sobre quais são as componentes principais. A
primeira componente provavelmente é paralela ao vetor (1,1), e a segunda componente é a
ortogonal a esta, isto é, a componente paralela ao vetor (−1,1).
Calculando os autovalores e os autovetores para a obtenção das componentes principais:

ev_S <- eigen(S, symmetric=TRUE)


comp_1 <- ev_S$vectors[,1]
comp_2 <- ev_S$vectors[,2]
As direções:
# Primeira componente principal
comp_1
# Segunda componente principal
comp_2
# Percentual da variância explicada pela primeira componente
ev_S$values[1]/sum(diag(S)) * 100
Xdftil <- data.frame(x=X_til[,1], y = X_til[,2])
ggplot(Xdftil) + aes(x=x, y=y) + geom_point()

11
Vemos então que as componentes são, de fato, as que a inspeção visual indicou. Vejamos, na
Figura 2, a seguir, os dados centralizados juntamente com as componentes principais. A
primeira componente aparece na cor azul; e a segunda, na cor vermelha.

ggplot(Xdftil) + aes(x=x, y=y) + geom_point() +


geom_abline(intercept = 0, slope = comp_1[2]/comp_1[1], col = 'blue') +
geom_abline(intercept = 0, slope = comp_2[2]/comp_2[1], col = 'red')

Figura 2 – Dados centralizados juntamente com as componentes principais

Uma prática bastante comum e, muitas vezes, importante é a de normalizar os dados. Ou


seja, além de centralizá-los, também os dividir pelo desvio padrão. Isso é particularmente útil
quando as variáveis estão em escalas muito diferentes.
Vemos abaixo como realizar a normalização dos dados por meio da função scale e, em
seguida, calcular as componentes por meio da obtenção dos autovetores.

X_til_scale <- scale(X)


S_sc <- t(X_til_scale)%*%X_til_scale
ev_S_sc <- eigen(S_sc, symmetric=TRUE)
ev_S_sc$values[1]/sum(diag(S_sc))
ev_S_sc$vectors

12
Podemos obter as componentes principais diretamente no R, sem a necessidade do cálculo
explícito dos autovetores, utilizando a função prcomp:

pr_X <- prcomp(X)


# As componentes são dadas pelo elemento "rotation":
pr_X$rotation
print("Compare com as componentes que obtivemos:")
data.frame(PC1 = comp_1, PC2 = comp_2, row.names=c("x","y"))
#Note que elas coincidem a menos de múltiplos (ou seja, a direção é a
mesma)

Scree plot
O scree plot é o plot da variância explicada por cada componente utilizada. A seguir, na
Figura 3, vemos o scree plot do conjunto de dados que consideramos acima.

library(dplyr)
# Vetor de variâncias explicadas:
var_expl <- ev_S$values/sum(diag(S))
var_expl_df <- data.frame(Comp_Princ = c(1,2), var_expl = var_expl)
var_expl_df %>% ggplot(aes(x=Comp_Princ,y=var_expl))+
geom_point() + geom_line() + scale_x_continuous(breaks=c(1,2))+
labs(title="Scree plot")

Figura 3 – Scree plot do conjunto de dados

Exemplo com dados reais: vamos, agora, considerar outro conjunto de dados mtcars disponível
no pacote datasets do R:
<https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topics/mtcars>.

13
A seguir, vemos as seis primeiras observações desse conjunto de dados:

library(datasets)
data("mtcars", package="datasets")
head(mtcars)

A data.frame: 6 × 11

mpg cyl disp hp drat wt qsec vs am gear carb

<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>

Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4

Mazda RX4
21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Wag

Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1

Hornet 4
21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Drive

Hornet
18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Sportabout

Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

Vamos remover as variáveis categóricas “vs”, que indica se os cilindros são em V ou em linha;
e “am”, que indica se o câmbio é automático ou manual.

mt_novo <- subset(mtcars, select=-c(vs,am))

Vamos, agora, centrar e padronizar, deixando cada coluna com variância amostral 1, para
nenhuma variável dominar apenas por ter escala maior:

mt_ct_sd <- scale(mt_novo)

14
Na sequência, vamos obter as componentes principais e as variâncias explicadas pelas
componentes:

Smt <- t(mt_ct_sd) %*% mt_ct_sd / (nrow(mt_ct_sd)-1)


sum( (cov(mt_ct_sd) - Smt)^2 )
ev_Smt <- eigen(Smt, symmetric = TRUE)
ev_Smt$vectors[,1]
ev_Smt$vectors
prcomp(mt_ct_sd)$rotation
#Variâncias explicadas:
var_expl <- ev_Smt$values/sum(diag(Smt))
var_expl
ev_Smt$values
cumsum(var_expl)

Vemos, então, que com quatro componentes principais conseguimos “explicar”


aproximadamente 95% da variância amostral do conjunto de dados.

Regressão linear e método dos mínimos quadrados


O nosso objetivo, agora, é aplicar a teoria que vimos, principalmente com relação às projeções
ortogonais, ao estudo da regressão linear.
Suponha que temos um vetor numérico 𝑦𝑦 = (𝑦𝑦1 , … , 𝑦𝑦𝑛𝑛 ) contendo variáveis de interesse.
Suponha ainda que se acredita que exista uma relação entre a variável 𝑦𝑦 e as variáveis 𝑋𝑋1 , … , 𝑋𝑋𝑘𝑘 ,
que são dadas por vetores numéricos 𝑋𝑋1 = (𝑥𝑥11 , … , 𝑥𝑥𝑛𝑛1 ), … , 𝑋𝑋𝑘𝑘 = (𝑥𝑥1𝑘𝑘 , … , 𝑥𝑥𝑛𝑛𝑛𝑛 ).
Além disso, suponha que se sabe que a relação entre 𝑦𝑦 e as variáveis 𝑋𝑋1 , … , 𝑋𝑋𝑘𝑘 não é
exatamente linear. Dessa forma, defina a matriz 𝑋𝑋 de tamanho 𝑛𝑛 × 𝑘𝑘 cujas colunas são dadas por
𝑋𝑋1 , … , 𝑋𝑋𝑘𝑘 . Como a relação entre 𝑋𝑋 e 𝑦𝑦 não é exatamente linear, não é possível resolver o sistema

𝑦𝑦 = 𝑋𝑋β,

em que β ∈ 𝑹𝑹𝑘𝑘 , mas podemos tentar encontrar β ∈ 𝑹𝑹𝑘𝑘 de tal forma que

𝑦𝑦 ≈ 𝑋𝑋𝛽𝛽.

15
Considere, então, o objetivo de aproximar 𝑦𝑦 por combinações lineares das variáveis
𝑋𝑋1 , … , 𝑋𝑋𝑘𝑘 , isto é, queremos encontrar coeficientes 𝛽𝛽̂1 , … , 𝛽𝛽̂𝑘𝑘 tais que

𝑦𝑦𝑖𝑖 = 𝛽𝛽̂1 𝑥𝑥𝑖𝑖1 + ⋯ + 𝛽𝛽̂𝑘𝑘 𝑥𝑥1𝑘𝑘 + ε𝑖𝑖

e que “erro” ε = (ε1 , … , ε𝑛𝑛 ) seja o “menor” possível.


Obs.: podemos ter várias definições de “menor”.
Utilizaremos a que diz que o erro é o “menor” possível, se a soma dos seus quadrados, isto é, se
sua norma euclidiana é a menor possível. Dessa forma, procuramos o vetor β� = �𝛽𝛽̂1 , … , 𝛽𝛽̂𝑘𝑘 � tal que

𝑛𝑛

|ε|2 = � ε2𝑖𝑖
𝑖𝑖=1

é o menor possível.
Existem outros estimadores. Por exemplo, na presença de outliers – isto é, uma observação
discrepante que normalmente ocorre por algum erro de medição, digitação, etc., ou por ser efeito
de algum evento de probabilidade muito baixa – utilizam-se estimadores que minimizam o valor
absoluto dos erros:

𝑛𝑛

|ε|1 = �|ε𝑖𝑖 |.
𝑖𝑖=1

O motivo é que para um valor discrepante de algum erro ε𝑖𝑖 , o quadrado amplifica muito esse
erro, ao passo que o módulo não amplifica.
O modelo para o qual queremos encontrar o vetor β� tal que

𝑦𝑦𝑖𝑖 = 𝛽𝛽̂1 𝑥𝑥𝑖𝑖1 + ⋯ + 𝛽𝛽̂1 𝑥𝑥1𝑘𝑘 + ε𝑖𝑖

e de tal forma que os “erros” são os “menores”, sob algum critério bem definido, é chamado
de regressão linear. Quando escolhemos o vetor β� tal que |ε|2 é o menor possível, dizemos que
realizamos a estimação por mínimos quadrados.
Obs.: é comum considerar o vetor 𝑋𝑋1 como o vetor contendo apenas o número 1, isto é,

𝑋𝑋1 = (1,1, … ,1).

Nesse caso, 𝑋𝑋1 é chamado de intercepto e representa o cenário base quando todas as
variáveis são nulas.
Obs.: comumente, dizemos que 𝑦𝑦 é a variável resposta (ou variável dependente) e que 𝑋𝑋 são
as covariáveis ou variáveis independentes.

16
Regressão linear na forma matricial
Observe que podemos escrever a equação da regressão na forma matricial:

𝑦𝑦 = 𝑋𝑋β + ε.

Desse modo, queremos minimizar a norma euclidiana dos erros:

|ε|2 = |𝑦𝑦 − 𝑋𝑋β|2 .

Observe atentamente que queremos minimizar |𝑦𝑦 − 𝑋𝑋β|2. Isto é, queremos encontrar o vetor
β� ∈ 𝑹𝑹𝑘𝑘 tal que

β� = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝛽𝛽∈𝑹𝑹𝑘𝑘  |𝑦𝑦 − 𝑋𝑋β|2 .

Relembre que o produto 𝑋𝑋β é a combinação linear dos vetores coluna de 𝑋𝑋. Relembre, ainda,
que o conjunto das combinações lineares dos vetores coluna de 𝑋𝑋 é o espaço coluna de 𝑋𝑋, 𝐶𝐶(𝑋𝑋).
Então podemos reescrever a equação anterior como

β� = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑦𝑦�∈𝐶𝐶(𝑋𝑋); 𝑦𝑦�=𝑋𝑋β  |𝑦𝑦 − 𝑦𝑦�|2.

Obs.: note que sabemos, pois vimos no nosso estudo sobre projeções ortogonais, que o
elemento do subespaço vetorial que minimiza a distância euclidiana é a projeção ortogonal sobre
este subespaço.
Dessa forma, a combinação linear que minimiza a soma dos quadrados dos erros é a projeção
da variável dependente sobre o espaço coluna das variáveis independentes.
Ou seja, podemos pensar em 𝑋𝑋 como a informação disponível e 𝑦𝑦 a variável que queremos
estimar. Daí a pergunta: qual é o melhor estimador para 𝑦𝑦 com a informação disponível?
Se o objetivo for minimizar a norma euclidiana, o melhor estimador é a projeção ortogonal
sobre o espaço gerado pela informação disponível.

Regressões lineares e projeções ortogonais


Observe, então, que queremos encontrar o elemento de 𝐶𝐶(𝑋𝑋) que minimiza a distância ao
vetor 𝑦𝑦. Dessa forma, queremos a projeção de 𝑦𝑦 sobre o espaço coluna 𝐶𝐶(𝑋𝑋).

17
Portanto queremos encontrar uma matriz de projeção que projeta ortogonalmente sobre o
espaço coluna 𝐶𝐶(𝑋𝑋). Com base no nosso estudo sobre projeções ortogonais, queremos, então,
encontrar uma matriz 𝑃𝑃𝑋𝑋 que seja idempotente, isto é, 𝑃𝑃𝑋𝑋2 = 𝑃𝑃𝑋𝑋 , simétrica, ou seja, 𝑃𝑃𝑋𝑋⊤ = 𝑃𝑃𝑋𝑋 e que
o espaço coluna de 𝑃𝑃𝑋𝑋 coincida com o espaço coluna de 𝑋𝑋.
Como o espaço coluna de 𝑃𝑃𝑋𝑋 deve coincidir com o espaço coluna de 𝑋𝑋, devemos ter, em
particular, que 𝐶𝐶(𝑃𝑃𝑋𝑋 ) ⊂ 𝐶𝐶(𝑋𝑋). Logo, ao aplicarmos 𝑃𝑃𝑋𝑋 a um vetor 𝑣𝑣, o vetor 𝑃𝑃𝑋𝑋 𝑣𝑣 deve ser
escrito como combinação linear dos vetores coluna de 𝑋𝑋. Portanto, para cada 𝑣𝑣 ∈ 𝑹𝑹𝑘𝑘 , deve
existir 𝑤𝑤 ∈ 𝑹𝑹𝑘𝑘 tal que

𝑃𝑃𝑋𝑋 𝑣𝑣 = 𝑋𝑋𝑋𝑋.

Portanto 𝑃𝑃𝑋𝑋 deve ser da forma


𝑃𝑃𝑋𝑋 = 𝑋𝑋𝑋𝑋,

para alguma matriz 𝐵𝐵.


Observe, agora, que 𝑃𝑃𝑋𝑋 deve ser simétrica, ou seja, 𝑃𝑃𝑋𝑋⊤ = 𝑃𝑃𝑋𝑋 . Daí,

𝑋𝑋𝑋𝑋 = 𝑃𝑃𝑋𝑋 = 𝑃𝑃𝑋𝑋⊤ = (𝑋𝑋𝑋𝑋)⊤ = 𝐵𝐵 ⊤ 𝑋𝑋 ⊤ .

Portanto deve existir alguma matriz 𝐶𝐶 tal que 𝐵𝐵 = 𝐶𝐶𝑋𝑋 ⊤ . Com isso, temos

𝑃𝑃𝑋𝑋 = 𝑋𝑋𝑋𝑋𝑋𝑋 ⊤ .

Queremos, agora, que 𝑃𝑃𝑋𝑋2 = 𝑃𝑃𝑋𝑋 , ou seja,

𝑋𝑋𝑋𝑋𝑋𝑋 ⊤ = 𝑃𝑃𝑋𝑋 = 𝑃𝑃𝑋𝑋2 = 𝑋𝑋𝑋𝑋𝑋𝑋 ⊤ 𝑋𝑋𝑋𝑋𝑋𝑋 ⊤ .

Ou seja, queremos que

𝑋𝑋𝑋𝑋𝑋𝑋 ⊤ = 𝑋𝑋𝑋𝑋𝑋𝑋 ⊤ 𝑋𝑋𝑋𝑋𝑋𝑋 ⊤ .

Observe que, se 𝐶𝐶𝑋𝑋 ⊤ 𝑋𝑋 = 𝐼𝐼, então vale a igualdade anterior. Como 𝑋𝑋 é uma matriz de
tamanho 𝑛𝑛 × 𝑘𝑘, então 𝑋𝑋 ⊤ 𝑋𝑋 é uma matriz de tamanho 𝑘𝑘 × 𝑘𝑘.
Dessa forma, se 𝑋𝑋 ⊤ 𝑋𝑋 for inversível, podemos tomar 𝐶𝐶 = (𝑋𝑋 ⊤ 𝑋𝑋)−1 .
Para que 𝑋𝑋 ⊤ 𝑋𝑋 seja inversível, pelo que já vimos, o seu núcleo deverá ser trivial.
Pelo teorema do núcleo e imagem, isso significa que 𝐶𝐶(𝑋𝑋 ⊤ 𝑋𝑋) = 𝑅𝑅 𝑘𝑘 , isto é, a dimensão do
espaço coluna de 𝑋𝑋 ⊤ 𝑋𝑋 deve ser 𝑅𝑅 𝑘𝑘 , ou equivalentemente, o posto de 𝑋𝑋 ⊤ 𝑋𝑋 deve ser 𝑘𝑘.
Agora, note que 𝐶𝐶(𝑋𝑋 ⊤ 𝑋𝑋) ⊂ 𝐶𝐶(𝑋𝑋 ⊤ ), pois dado 𝑣𝑣 ∈ 𝑅𝑅 𝑘𝑘 , faça 𝑤𝑤 = 𝑋𝑋𝑋𝑋 para ver que
(𝑋𝑋 ⊤ 𝑋𝑋)𝑣𝑣 = 𝑋𝑋 ⊤ 𝑤𝑤.

18
Isso nos diz que 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋 ⊤ ) ≥ 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋 ⊤ 𝑋𝑋). Além disso, para que 𝑋𝑋 ⊤ 𝑋𝑋 seja inversível,
devemos ter 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋 ⊤ 𝑋𝑋) = 𝑘𝑘, portanto 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋 ⊤ ) ≥ 𝑘𝑘. Relembre que o posto linha coincide
com o posto coluna, logo 𝑝𝑝𝑝𝑝𝑝𝑝𝑡𝑡𝑡𝑡(𝑋𝑋) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋 ⊤ ) ≥ 𝑘𝑘.
Por fim, como 𝑋𝑋 possui 𝑘𝑘 colunas, devemos ter 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋) ≤ 𝑘𝑘. Portanto, para que 𝑋𝑋 ⊤ 𝑋𝑋 seja
inversível, devemos ter 𝑘𝑘 ≤ 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋) ≤ 𝑘𝑘, ou seja, 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑋𝑋) = 𝑘𝑘.
Em resumo, se 𝑋𝑋 é uma matriz de posto 𝑘𝑘, quer dizer, de posto completo, pois 𝑋𝑋 possui 𝑘𝑘
colunas, então podemos tomar

𝐶𝐶 = (𝑋𝑋 ⊤ 𝑋𝑋)−1

para concluirmos que

𝑃𝑃𝑋𝑋 = 𝑋𝑋(𝑋𝑋 ⊤ 𝑋𝑋)−1 𝑋𝑋 ⊤ .

Com isso, segue que

|𝑦𝑦 − 𝑋𝑋(𝑋𝑋 ⊤ 𝑋𝑋)−1 𝑋𝑋 ⊤ 𝑦𝑦|2 = min |𝑦𝑦 − 𝑦𝑦�|2 .


𝑦𝑦�∈𝐶𝐶(𝑋𝑋)

Podemos concluir, então, que

𝑦𝑦� = 𝑋𝑋(𝑋𝑋 ⊤ 𝑋𝑋)−1 𝑋𝑋 ⊤ 𝑦𝑦

e que

β� = (𝑋𝑋 ⊤ 𝑋𝑋)−1 𝑋𝑋 ⊤ 𝑦𝑦.

Relembre, agora, que quando realizamos a projeção sobre um espaço 𝑊𝑊, na realidade estamos
realizando duas projeções: uma sobre 𝑊𝑊 e outra sobre 𝑊𝑊 ⊥ . Dessa forma, quando escrevemos

𝑦𝑦 = 𝑦𝑦� + (𝑦𝑦 − 𝑦𝑦�),

𝑦𝑦� é a projeção de 𝑦𝑦 sobre o espaço coluna de 𝑋𝑋, 𝐶𝐶(𝑋𝑋); e 𝑦𝑦 − 𝑦𝑦� é a projeção de 𝑦𝑦 sobre o
complemento ortogonal do espaço coluna de 𝑋𝑋, 𝐶𝐶(𝑋𝑋)⊥.
Dito isso, o “erro” da regressão

𝑒𝑒 = 𝑦𝑦 − 𝑦𝑦�

é a projeção de 𝑦𝑦 sobre 𝐶𝐶(𝑋𝑋)⊥ . Portanto, se 𝑦𝑦 for ortogonal à informação 𝑋𝑋, então o


“erro” será total.

19
Regressões lineares no R
Para realizar regressões lineares no R, podemos utilizar a função lm.
A melhor forma de entrar com os argumentos da função lm é por meio da sintaxe de fórmula:
“𝑦𝑦 ∼ 𝑥𝑥1 + 𝑥𝑥2 + ⋯ + 𝑥𝑥𝑘𝑘 ”, em que 𝑦𝑦 é o vetor com a variável dependente, e 𝑥𝑥1 , … , 𝑥𝑥𝑘𝑘 são vetores
com as variáveis independentes.
Obs.: por padrão, a sintaxe de fórmula inclui o intercepto. Para excluir o intercepto, deve-se
incluir o “+0” ou “−1” do lado direito da fórmula.

# Exemplo:
x1 <- rnorm(30) + 2
x2 <- rexp(30)
y <- x1 + x2 + rnorm(30)
lm(y ~ x1 + x2)
aj <- lm(y ~ x1 + x2 - 1)
aj
# Sem intercepto:
lm(y ~ x1 + x2 + 0)
# ou
lm(y ~ x1 + x2 - 1)

Para obter um resumo com dados estatísticos relevantes, utiliza-se o método summary no
modelo ajustado:

ajuste <- lm(y ~ x1+x2-1)


summary(ajuste)
# Vamos calcular as estimativas
X = cbind(x1,x2) # x1 e x2 como vetores coluna
beta <- solve(t(X)%*%X, t(X)%*%y)
as.vector(beta)
ajuste$coefficients

Coeficiente de determinação
Relembre que, ao realizarmos a projeção de 𝑦𝑦 sobre o espaço coluna de 𝑋𝑋, 𝐶𝐶(𝑋𝑋), também
realizamos uma projeção sobre o espaço 𝐶𝐶(𝑋𝑋)⊥:

𝑦𝑦 = 𝑦𝑦� + (𝑦𝑦 − 𝑦𝑦�),

em que 𝑦𝑦� ∈ 𝐶𝐶(𝑋𝑋) e 𝑦𝑦 − 𝑦𝑦� ∈ 𝐶𝐶(𝑋𝑋)⊥.


Para o cálculo do coeficiente de determinação, precisamos supor que o vetor (1,1, … ,1)
pertence ao espaço coluna de 𝑋𝑋, isto é, que o vetor (1,1, … ,1) é combinação linear dos vetores
coluna de 𝑋𝑋.

20
Obs.: isso não quer dizer que o modelo tem de conter o intercepto, mas, sim, que o intercepto
pode ser obtido como combinação linear das demais variáveis.
Defina o resíduo
𝑒𝑒 = ε� = 𝑦𝑦 − 𝑦𝑦�.

Desse modo, como 𝑦𝑦 − 𝑦𝑦� ∈ 𝐶𝐶(𝑋𝑋)⊥ , então 𝑒𝑒 ∈ 𝐶𝐶(𝑋𝑋)⊥.


Afirmação: se (1,1, … ,1) ∈ 𝐶𝐶(𝑋𝑋), isto é, se o vetor composto de “uns” pertence ao espaço
coluna de 𝑋𝑋, então
𝑛𝑛
1
𝑒𝑒 = � 𝑒𝑒𝑖𝑖 = 0.
𝑛𝑛
𝑖𝑖=1

De fato, 𝟏𝟏 = (1,1, … ,1) ∈ 𝐶𝐶(𝑋𝑋) e 𝑒𝑒 ∈ 𝐶𝐶(𝑋𝑋)⊥. Logo, como 1 e e são ortogonais, 𝟏𝟏 ⋅ 𝑒𝑒 = 0.


Portanto
𝑛𝑛

0 = 𝟏𝟏 ⋅ 𝑒𝑒 = 𝟏𝟏⊤ 𝑒𝑒 = � 𝑒𝑒𝑖𝑖 .
𝑖𝑖=1

Logo 𝑒𝑒 = 0. Isso conclui a afirmação.


Além disso, note que, como (1,1, … ,1) ∈ 𝐶𝐶(𝑋𝑋), então (𝑦𝑦, 𝑦𝑦, … , 𝑦𝑦) = 𝑦𝑦𝟏𝟏 ∈ 𝐶𝐶(𝑋𝑋) e 𝐻𝐻𝐻𝐻 =
𝑦𝑦� ∈ 𝐶𝐶(𝑋𝑋). Portanto
𝑦𝑦� − 𝑦𝑦𝟏𝟏 ∈ 𝐶𝐶(𝑋𝑋).

Logo segue que

𝑒𝑒 ⋅ (𝑦𝑦� − 𝑦𝑦𝟏𝟏) = 0.
Agora, escreva

𝑦𝑦 = 𝑦𝑦� + 𝑒𝑒.

Subtraindo 𝑦𝑦, temos

𝑦𝑦 − 𝑦𝑦𝟏𝟏 = 𝑦𝑦� − 𝑦𝑦𝟏𝟏 + 𝑒𝑒.

Logo, como 𝑒𝑒 ⋅ (𝑦𝑦� − 𝑦𝑦𝟏𝟏) = 0, segue que

21
Dessa forma, chamamos:
 soma de quadrados totais, 𝑆𝑆𝑆𝑆𝑆𝑆 = |𝑦𝑦 − 𝑦𝑦𝟏𝟏|2 = ∑𝑛𝑛 2
𝑖𝑖=1(𝑦𝑦𝑖𝑖 − 𝑦𝑦) ;
 soma de quadrados da regressão, 𝑆𝑆𝑆𝑆𝑆𝑆 = |𝑦𝑦 � − 𝑦𝑦𝟏𝟏|2 = ∑𝑛𝑛𝑖𝑖=1(𝑦𝑦�𝑖𝑖 − 𝑦𝑦)2 , e
 soma de quadrados dos resíduos, 𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆 = |𝑒𝑒|2 = ∑𝑛𝑛 2 𝑛𝑛
�𝑖𝑖 )2 .
𝑖𝑖=1 𝑒𝑒𝑖𝑖 = ∑𝑖𝑖=1(𝑦𝑦𝑖𝑖 − 𝑦𝑦

Dessa forma, a identidade

|𝑦𝑦 − 𝑦𝑦|2 = |𝑦𝑦� − 𝑦𝑦𝟏𝟏|2 + |𝑒𝑒|2

significa que

𝑆𝑆𝑆𝑆𝑆𝑆 = 𝑆𝑆𝑆𝑆𝑆𝑆 + 𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆.

Ou seja,

𝑆𝑆𝑆𝑆𝑆𝑆 𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆
+ = 1.
𝑆𝑆𝑆𝑆𝑆𝑆 𝑆𝑆𝑆𝑆𝑆𝑆

Definimos então o coeficiente de determinação como:

𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆
𝑅𝑅 2 = 1 − .
𝑆𝑆𝑆𝑆𝑆𝑆

Intuitivamente, o 𝑅𝑅 2 indica o quanto da variação de 𝑦𝑦 foi “explicado” pela regressão.


Obs.: cuidado com o 𝑅𝑅 2 . Podemos ter 𝑅𝑅 2 muito alto mesmo com um ajuste “ruim”.
Ou seja, explicar a variação não significa necessariamente um bom ajuste.
Para ilustrar, considere o exemplo abaixo, em que consideramos a curva dada pela função de
densidade de probabilidade de uma distribuição exponencial, que é determinística e não linear.

# Considere o exemplo
x_r <- c(0:100)/40
y_r <- pexp(x_r)
ajuste <- lm(y_r ~ x_r)
summary(ajuste)

O 𝑅𝑅 2 obtido foi de 91%.

plot(x_r,y_r)
abline(ajuste$coefficients)

22
Na Figura 4, a seguir, vemos o gráfico dos dados e da reta de regressão. O ajuste foi “bom”,
porém qualquer previsão para valores de 𝑥𝑥𝑟𝑟 maiores do que 2.5 será muito pobre. Mais
precisamente, quanto maior o valor de 𝑥𝑥𝑟𝑟 maior será o erro de previsão.

Figura 4 – Regressão linear com os dados obtidos a partir da função de densidade de


probabilidade de uma distribuição exponencial

23
BIBLIOGRAFIA
ANSCOMBE, F. J. Graphs in statistical analysis. The American Statistician, v. 27, n. 1, p. 17-21,
1973. DOI: 10.1080/00031305.1973.10478966.

R CORE TEAM. R: a language and environment for statistical computing. Viena, Áustria: R
Foundation for Statistical Computing, 2021. Disponível em: <http://www.R-project.org>.

STRANG, G. Linear algebra and learning from data. [S. l.]: Wellesley-Cambridge Press, 2019.
Disponível em: <https://math.mit.edu/~gs/learningfromdata>.

24
PROFESSOR-AUTOR
Alexandre de Bustamante Simas possui graduação em Estatística pela
Universidade Federal de Pernambuco (UFPE), doutorado em Matemática
pelo Instituto de Matemática Pura e Aplicada (Impa), tendo feito
doutorado sanduíche no Courant Institute of Mathematical Sciences na
New York University. Desde 2013, é bolsista de produtividade em pesquisa
do Conselho Nacional de Desenvolvimento Científico e Tecnológico
(CNPq). É professor associado – atualmente, em licença sem remuneração
– do Departamento de Matemática da Universidade Federal da Paraíba
(UFPB) e atualmente se encontra como research scientist na Kaust University.

25

Você também pode gostar