//styles, look here: https://cdnjs.com/libraries/highlight.js/9.12.0

February 8, 2022

2113 palavras 10 mins

MQO, MQO, MQO

Atualização em junho/2022: Tinha um erro em um dos passos da última seção. Devidamente corrigido. Ele altera algumas conclusões, mas o espírito do post se mantém

Nós todos amamos Mínimos Quadrados Ordinários. Este post vai tratar exclusivamente de MQO, de umas cinco maneiras diferentes e uma delas é bem maluca.

No post inteiro, eu vou utilizar o modelo linear y=Xβ+uy = X\beta + u, onde uu é o erro aleatório, XX é o regressor e yy é o regressando. Às vezes XX vai ser um único regressando, às vezes XX vai ser uma matriz de variáveis. Eu terei nn observações e pp variáveis - então XX é a matriz n×pn \times p. Se você não quiser pensar em XTβX^T\beta como uma multiplicação de uma matriz e um vetor, você pode pensar como x1β1+xpβpx_1 \beta_1 + \ldots x_p \beta_p.

Do começo

No curso de econometria I da graduação, a gente aprende que o estimador de mínimos quadrados para o caso univariado é:

β^MQO=i=1n(yiyˉ)(xixˉ)i=1n(xixˉ)2 \hat{\beta}_{MQO} = \frac{\sum_{i=1}^n (y_i - \bar{y})(x_i - \bar{x})}{\sum_{i=1}^n (x_i - \bar{x})^2}

Estabelecendo xˉ\bar{x} como a média de xx e yˉ\bar{y} como a média de y

Álgebra linear I

A versão “de gente grande” do estimador de mínimos quadrados é:

β^MQO=(XTX)1XTy \hat{\beta}_{MQO} = (X^TX)^{-1}X^Ty

Onde XX é uma matriz n×pn \times p, e o superescrito TT significa que estamos tomando a transposta da matriz XX. Isso é exatamente a mesma coisa que a versão acima, mas como agora tem mais de uma variável nós usamos matrizes. XTXX^TX é só a variância de XX e XTyX^Ty a covariância entre XX e yy.

Para essa fórmula funcionar, XTXX^TX tem que ser inversível, e portanto tem que ter posto cheio. Nós usualmente pensamos isso como XX não pode ter duas variáveis que são funções afim uma da outra.

A origem

Existem várias maneiras de introduzir o estimador de mínimos quadrados. A primeira advém da condição de momentos E[uX]=0E[u|X] = 0, ou mais fraco, a covariância de XX e uu é zero.

Outra maneira é pensar no problema de minimização:

minβ1ni=1n(yiXiTβ)2 \min_{\beta} \frac{1}{n}\sum_{i=1}^n (y_i - X_i^T \beta)^2

Eu serei muito chique e vou usar a seguinte representação:

YXβ22=i=1n(yiXiTβ)2 \|Y - X\beta\|_2^2 = \sum_{i=1}^n (y_i - X_i^T\beta)^2

Não se desespere, é só uma representação. Eu poderia passar o resto do post escrevendo o somatório, mas isso é chatíssimo.

Ortogonalização

Ainda existe outra maneira de motivar mínimos quadrados: suponha que yy e xx são dois vetores no Rn\R^n e vamos usar <x,y>\left<x,y \right> como o produto interno (<x,y>=ixiyi\left<x,y\right> = \sum_i x_i y_i). Como nós podemos transformar yy de maneira que <ycx,x>=0\left<y - cx,x\right> = 0? Noutras palavras, nós queremos deixar os dois vetores ortogonais. Em R2\R^2, isso significa formar um ângulo reto. De volta as contas:

<ycx,x>=0i(yicxi)xi=iyixicixi2=0ixiyi=cixi2c=ixiyiixi2 \left< y - cx,x \right> = 0 \therefore \sum_i (y_i -cx_i)x_i = \sum_i y_i x_i - c \sum_i x_i^2 = 0 \therefore\\ \sum_i x_i y_i = c \sum_i x_i^2 \\ c = \frac{\sum_i x_i y_i}{\sum_i x_i^2}

Sob a hipótese de média zero para xx e yy, isso é exatamente a primeira expressão que escrevemos.

Ausência de viés

Com a hipótese de E[uX]=0E[u|X] = 0, o estimador de Mínimos Quadrados não tem viés. Isso é uma hipótese bem padrão e que todo mundo chama de exogenidade.

Analisando MQO de uma maneira pouco usual

Eu vou analisar MQO de uma maneira que ninguém discute em curso de econometria nenhum, mas vai ser divertido e eu vou indicar a utilidade no fim do post. Pra isso, eu vou ter que construir uns blocos essenciais:

Os blocos

  1. O primeiro bloco é só uma definição de norma euclidiana:

X22=XTX=ixi2 \|X\|_2^2 = X^TX = \sum_i x_i^2

Nós vamos usar o formato de multiplicação de matriz (XTXX^TX) para facilitar as contas.

  1. Nós vamos usar o seguinte resultado: se uma matriz é de posto cheio, então nenhum autovalor é zero

  2. Seja λmin\lambda_{\min} o menor autovalor da matriz XTXn\frac{X^TX}{n}. Então:

λmin1nXv22v22 \lambda_{\min} \leq \frac{\frac{1}{n}\|Xv\|_2^2}{\|v\|_2^2}

Para qualquer vv. Este resultado já apareceu em um post sobre componentes principais

  1. Nós vamos trabalhar com normas Seja xRnx \in \mathbb{R}^n, então a norma pp é representada por xp\|x\|_ p e xp=(ixip)1/p\|x\|_p = \left(\sum_i |x_i|^p \right)^{1/p}. Veja que nós podemos pensar a norma do vetor xx como a distância entre o vetor xx e a origem. A norma euclidiana é o caso p=2p=2.

Em particular, nós definimos a “norma sup” como o máximo do módulo do vetor e representamos por x\|x\|_{\infty}:

X=maxi=1,,nxi \|X\|_{\infty} = \max_{i=1,\ldots,n} |x_i|

  1. Nós vamos usar a desigualdade de Hölder, que diz que se p,qp,q são tais que 1p+1q=1\frac{1}{p} + \frac{1}{q} = 1, então:

<x,y>xpyq |\left<x,y\right>| \leq \|x\|_p \|y\|_q Lembre que <x,y>\left<x,y \right> representa o produto interno. A Desigualdade de Hölder vale para p=1p = 1 e q=q = \infty:

<x,y>x1y | \left<x,y\right>| \leq \|x\|_1 \|y\|_{\infty}

Um caso particular de Hölder é a Desigualdade de Cauchy Schwartz:

<x,y>x2y2 | \left<x,y \right>| \leq \|x\|_2 \|y\|_2

Uma aplicação que vai ser útil de Cauchy Schwartz é a seguinte desigualdade de normas x1nx2\|x\|_1 \leq \sqrt{n} \|x\|_2. Veja que x1=ixi\|x\|_1 = \sum_i |x_i|. Nós podemos representar o módulo como a multiplicação de xix_i pela função sinal de xix_i:

sinal(xi)={1 se xi01 se xi<0 sinal(x_i) = \begin{cases} 1 \text{ se } x_i \geq 0\\ -1 \text{ se } x_i < 0 \end{cases}

Se xix_i é positivo, então sinal(xi)xi=1xi=xisinal(x_i)x_i = 1x_i = x_i e se xix_i é negativo, sinal(xi)xi=xisinal(x_i)x_i = -x_i. Logo:

x1=<sinal(x),x>sinal(x)2x2 \|x\|_1 = \left<sinal(x),x\right> \leq \|sinal(x)\|_2 \|x\|_2 Onde sinal(x)sinal(x) é só um vetor (sinal(x1),,sinal(xn))(sinal(x_1),\ldots,sinal(x_n)). Agora use a definição de .2\|.\|_2:

sinal(x)2=(i=1n(sinal(xi))2)1/2 \|sinal(x)\|_2 = \left(\sum_{i=1}^n (sinal(x_i))^2\right)^{1/2}

Como o sinal é sempre 1 ou -1, então o quadrado é sempre 1 e nós temos:

sinal(x)2=(i=1n(sinal(xi))2)1/2=(i=1n1)1/2=(n)1/2 \|sinal(x)\|_2 = \left(\sum_{i=1}^n (sinal(x_i))^2\right)^{1/2} = \left(\sum_{i=1}^n 1\right)^{1/2} = (n)^{1/2}

Obtendo exatamente o que queríamos!

  1. Este post aqui

A análise

Sejam yy e XX os dados. Eu vou supor que os dados não são aleatórios e que o ruído uu é subgaussiano com parâmetro σ\sigma. Daqui por diante, nós representamos o estimador de Mínimos Quadrados por β^\hat{\beta}. Como o estimador de mínimos quadrados resolve um problema de minimização de i(yiXβ)2\sum_i (y_i - X\beta)^2 (que eu volto a lembrar, nós representamos como YXβ22\|Y - X\beta\|_2^2), então para qualquer outro vetor β\beta:

1nYXβ^221nYXβ22 \frac{1}{n}\|Y - X\hat{\beta}\|_2^2 \leq \frac{1}{n}\|Y - X\beta\|_2^2

Como isso é verdade para qualquer outro vetor β\beta, isso também é verdade para o vetor β0\beta_0, de parâmetros verdadeiros:

1nYXβ^221nYXβ022 \frac{1}{n}\|Y - X\hat{\beta}\|_2^2 \leq \frac{1}{n}\|Y - X\beta_0\|_2^2

Mudança boba de notação, lembre que .22\|.\|_2^2 é só uma soma de quadrados:

YXβ^n22YXβ0n22 \left\|\frac{Y - X\hat{\beta}}{\sqrt{n}}\right\|_2^2 \leq \left\|\frac{Y - X\beta_0}{\sqrt{n}}\right\|_2^2

Nós sabemos que Y=Xβ0+uY = X\beta_0 + u. Vamos substituir isso no resultado acima:

1nXβ0+uXβ^221nXβ0+uXβ0221nX(β0β^)+u221nu22 \frac{1}{n}\|X\beta_0 + u - X\hat{\beta}\|_2^2 \leq \frac{1}{n}\|X\beta_0 + u X\beta_0\|_2^2 \therefore \frac{1}{n}\|X(\beta_0 - \hat{\beta}) + u \|_2^2 \leq \frac{1}{n}\|u\|_2^2

Hora de usar o ponto 1 da listinha acima no termo X(β0β^)+u22\|X(\beta_0 - \hat{\beta}) + u\|_2^2:

X(β0β^)+u22=(X(β0β^)+u)T(X(β0β^)+u)=((β0β^)TXT+uT)(X(β0β^)+u)=(β0β^)TXTX(β0β^)+(β0β^)TXTu+uTX(β0β^)+uTu==X(β0β^)22+2uTX(β0β^)+u22 \|X(\beta_0 - \hat{\beta}) + u\|_2^2 = (X(\beta_0 - \hat{\beta}) + u)^T(X(\beta_0 - \hat{\beta}) + u) = \\ ((\beta_0 - \hat{\beta})^TX^T + u^T)(X(\beta_0 - \hat{\beta}) + u) = (\beta_0 - \hat{\beta})^T X^T X(\beta_0 - \hat{\beta}) + (\beta_0 - \hat{\beta})^T X^T u + u^TX(\beta_0 - \hat{\beta}) + u^Tu = \\ = \|X(\beta_0 - \hat{\beta})\|_2^2 + 2u^TX(\beta_0 - \hat{\beta}) + \|u\|_2^2

Acredite em mim que uTX(β0β^)=(β0β^)TXTuu^TX(\beta_0 - \hat{\beta}) = (\beta_0 - \hat{\beta})^TX^T u. Então nós temos:

1nX(β0β^)22+2nuTX(β0β^)+1nu221nu22 \frac{1}{n}\|X(\beta_0 - \hat{\beta})\|_2^2 + \frac{2}{\sqrt{n}}u^TX(\beta_0 - \hat{\beta}) + \frac{1}{n}\|u\|_2^2 \leq \frac{1}{n}\|u\|_2^2

Nós podemos cancelar u22\|u\|_2^2 dos dois lados e obter:

1nX(β0β^)22+2nuTX(β0β^)01nX(β^β0)222nuTX(β^β0)(1) \frac{1}{n}\|X(\beta_0 - \hat{\beta})\|_2^2 + \frac{2}{\sqrt{n}}u^T X(\beta_0 - \hat{\beta}) \leq 0 \therefore \\ \frac{1}{n}\|X(\hat{\beta} - \beta_0)\|_2^2 \leq \frac{2}{\sqrt{n}}u^T X(\hat{\beta} - \beta_0) \tag{1}

Agora, uTX(β^β0)u^TX(\hat{\beta} - \beta_0) é um escalar e nós podemos ver isso como o produto interno de uu e X(β^β0)X(\hat{\beta} - \beta_0). Nós podemos usar Hölder:

1n<uTX,(β^β0)>1n<uTX,(β^β0)>1nuTXβ^β01 \frac{1}{\sqrt{n}}\left<u^TX,(\hat{\beta} - \beta_0)\right> \leq \frac{1}{\sqrt{n}}|\left<u^TX,(\hat{\beta} - \beta_0)\right>| \leq \frac{1}{\sqrt{n}}\|u^TX\|_{\infty} \|\hat{\beta} - \beta_0\|_1

Vamos sair pela tangente aqui para tratar de uTX\|u^TX\|_{\infty}. Veja que isso é a norma de uma variável aleatória (já que uu é aleatório). Mas pelo ponto seis da listinha acima, e faça XiX_i representar a iésima coluna de XX:

P(maxi=1,,puTxin>t)pexp(t22σ2/n) P\left(\max_{i=1,\ldots,p} \frac{|u^Tx_i|}{\sqrt{n}} > t\right) \leq p\exp \left(-\frac{t^2}{2\sigma^2/n}\right)

Eu assumi que a variância da coluna é 1 (ou seja, nós normalizamos a coluna, como a maioria dos pacotes de machine learning faz). Para t=σ2(log(p)+δ)nt = \sigma\sqrt{\frac{2(\log(p) + \delta)}{n}}, nós temos:

P(maxi=1,,puTxin>t)pexp(2σ2/n(log(p)+δ)2σ2/n)=pexp(log(p)δ)=exp(δ) P\left(\max_{i=1,\ldots,p} \frac{|u^Tx_i|}{\sqrt{n}} > t\right) \leq p\exp \left(-\frac{2\sigma^2/n(\log(p) + \delta)}{2\sigma^2/n}\right) = p\exp \left(-\log(p) - \delta\right) = \exp(-\delta)

Com alta probabilidade, σ2(log(p)+δ)n\sigma\sqrt{\frac{2(\log(p) + \delta)}{n}} é maior que o máximo. Vamos substituir esse valor na nossa cota:

<uTX,(β^β0)><uTX,(β^β0)>uTXβ^β01<uTX,(β^β0)>σ2(log(p)+δ)nβ^β01 \left<u^TX,(\hat{\beta} - \beta_0)\right> \leq |\left<u^TX,(\hat{\beta} - \beta_0)\right>| \leq \|u^TX\|_{\infty} \|\hat{\beta} - \beta_0\|_1 \\ \left<u^TX,(\hat{\beta} - \beta_0)\right> \leq \sigma\sqrt{\frac{2(\log(p) + \delta)}{n}}\|\hat{\beta} - \beta_0\|_1

Lembra que eu argumentei que x1nx2\|x\|_1 \leq \sqrt{n}\|x\|_2 (isso foi o ponto 5)? Vamos usar isso agora com β^β01\|\hat{\beta} - \beta_0\|_1:

<uTX,(β^β0)>σ2(log(p)+δ)nβ^β01σ2(log(p)+δ)npβ^β02 \left<u^TX,(\hat{\beta} - \beta_0)\right> \leq \sigma\sqrt{\frac{2(\log(p) + \delta)}{n}}\|\hat{\beta} - \beta_0\|_1 \leq \sigma\sqrt{\frac{2(\log(p) + \delta)}{n}}\sqrt{p}\|\hat{\beta} - \beta_0\|_2

Vamos jogar isso de volta na equação 1:

1nX(β^β0)222pnσ2(log(p)+δ)β^β02 \frac{1}{n} \|X(\hat{\beta} - \beta_0)\|_2^2 \leq 2\sqrt{\frac{p}{n}} \sigma\sqrt{2(\log(p) + \delta)}\|\hat{\beta} - \beta_0\|_2

Multiplique e divida o lado direito por β^β02\|\hat{\beta} - \beta_0\|_2:

1nX(β^β0)222pnσ2(log(p)+δ)β^β022β^β02 \frac{1}{n} \|X(\hat{\beta} - \beta_0)\|_2^2 \leq 2\sqrt{\frac{p}{n}} \sigma\sqrt{2(\log(p) + \delta)}\frac{\|\hat{\beta} - \beta_0\|_2^2}{\|\hat{\beta} - \beta_0\|_2}

Reorganizando:

1nX(β^β0)22β^β0222pnσ2(log(p)+δ)1β^β02 \frac{1}{n} \frac{\|X(\hat{\beta} - \beta_0)\|_2^2}{\|\hat{\beta} - \beta_0\|_2^2} \leq 2\sqrt{\frac{p}{n}} \sigma\sqrt{2(\log(p) + \delta)}\frac{1}{\|\hat{\beta} - \beta_0\|_2}

Uma boa hora para usar o nosso resultado 3, sobre o autovalor da matriz:

λmin1nX(β^β0)22β^β0222pnσ2(log(p)+δ)1β^β02 \lambda_{\min} \leq \frac{1}{n} \frac{\|X(\hat{\beta} - \beta_0)\|_2^2}{\|\hat{\beta} - \beta_0\|_2^2} \leq 2\sqrt{\frac{p}{n}}\sigma\sqrt{2(\log(p) + \delta)}\frac{1}{\|\hat{\beta} - \beta_0\|_2}

Reorganizando a expressão acima:

β^β022σλminpn2(log(p)+δ) \|\hat{\beta} - \beta_0\|_2 \leq \frac{2\sigma}{\lambda_{\min}}\sqrt{\frac{p}{n}}\sqrt{2(\log(p) + \delta)}

Isso é bem legal, porque nos diz várias coisas:

  1. Conforme nn cresce, a diferença entre a estimativa de MQO e o vetor verdadeiro cai para zero. Isso é consistência.
  2. Quanto mais variáveis nós temos, pior a nossa vida em termos de consistência. Mas veja que o termo em cima piora com a raiz quadrada de log de p. Isso é extremamente benevolente, como o gráfico abaixo mostra:
library(ggplot2)
library(latex2exp)

p <- 1:100
y <- sqrt(log(p))

df <- data.frame(p = p,y = y)

ggplot(df,aes(p,y)) + geom_line() + theme_light() + labs(x = "p", y = TeX("$\\sqrt{\\log(p)}$"))
R
R

Veja que a nossa demonstração não permite p>np > n porque isso implicaria em um (menor) autovalor zero, o que faria a cota ser infinito.

Corrigido o erro, fica claro que se p/np/n for constante, a cota piora com o aumento da dimensão.

  1. Sobre o autovalor: veja que se XX for uma matriz de variáveis descorrelacionadas, então o menor autovalor de XTXX^TX é a menor variância das variáveis do lado direito da equação. Já pro caso de variáveis correlacionadas a coisa complica, mas considere três variáveis com a matriz de variância covariância S1 que eu vou contruir abaixo:
library(Matrix)

S1 <- rbind(c(1,0.6,0.4),c(0.6,1,0.5),c(0,0,1))
S1 <- forceSymmetric(S1)

print(S1)
R
R
## 3 x 3 Matrix of class "dsyMatrix"
##      [,1] [,2] [,3]
## [1,]  1.0  0.6  0.4
## [2,]  0.6  1.0  0.5
## [3,]  0.4  0.5  1.0

A maior correlação é entre as variáveis 1 e 2, e é de 0.60.6 (veja que como as variâncias são todas 1, covariância = correlação)

eigen(S1)
R
R
## eigen() decomposition
## $values
## [1] 2.0044575 0.6130916 0.3824508
## 
## $vectors
##            [,1]       [,2]       [,3]
## [1,] -0.5799029 -0.5590696  0.5925823
## [2,] -0.6133243 -0.1791721 -0.7692403
## [3,] -0.5362331  0.8095298  0.2389886

O menor autovalor é 0.30.3. Agora eu vou mudar a covariância entre as variáveis 1 e 3 para 0.9:

library(Matrix)

S2 <- rbind(c(1,0.6,0.9),c(0.6,1,0.5),c(0,0,1))
S2 <- forceSymmetric(S2)
eigen(S2)
R
R
## eigen() decomposition
## $values
## [1] 2.34916546 0.55954209 0.09129245
## 
## $vectors
##            [,1]       [,2]       [,3]
## [1,] -0.6233809  0.2585010  0.7379523
## [2,] -0.5000153 -0.8573728 -0.1220516
## [3,] -0.6011497  0.4450721 -0.6637242

O pior autovalor agora é 0.090.09. Isso parece sugerir que os nossos vetores vão ser mais viesados se as variáveis forem mais correlacionados - a multicolinearidade que aprendemos em econometria I.

Pra que todo esse trabalho?

Talvez esse post soe meio gratuito. Eu peguei um estimador com solução fechada e precisei introduzir uma enorme quantidade de novos elementos matemáticos e desigualdades. O que eu ganhei com isso?

  1. Veja que, apesar de eu ter assumido que XX é constante, eu na verdade posso fazer todas as contas com XX aleatório e sem a hipótese de ortogonalidade entre XX e uu. Eu tive que braçalmente cotar a covariância entre XX e uu.
  2. Mais importante: eu posso repetir todas essas contas para métodos regularizados. Isso adiciona algumas hipóteses extras, mas as contas seguem literalmente as mesmas etapas, com a complicação adicional que precisa aparecer a regularização. Noutras palavras, eu posso obter cotas não assintóticas para a estimação do LASSO ou adaLASSO, por exemplo.

PS.: Eu me dei conta que eu não consigo separar o que eu pensei sozinho e o quanto essas notas de aula me influenciaram.