require(matrixcalc)
require(Matrix)
require(ibd)
require(pracma)
require(matlib)
require(MASS)
require(tidyverse)
Sistemas lineares são comumente usados como modelos matemáticos em diversas áreas. No entanto, experimentos aleatórios ou erros de medição resultam em um sistema inconsistente, ou seja, sem soluções exatas. Nessas situações, o Método dos Mínimos Quadrados oferece uma solução aproximada.
A solução de mínimos quadrados é dada por: \[ \begin{array}{l} \hat{\boldsymbol{x}}=\boldsymbol{A}^+.\boldsymbol{b}, \mbox{ou equivalentemente },\\ \hat{\boldsymbol{x}}=(\boldsymbol{A}^t\boldsymbol{A})^{-1}\boldsymbol{A}^t \boldsymbol{b}\\ \Rightarrow \mbox{ as soluções são idênticas sempre que } (\boldsymbol{A}^t \boldsymbol{A})^{-1}\mbox{ existir}\\ \Rightarrow \mbox{ é a solução que minimiza a norma euclidiana}: ||\boldsymbol{A}\boldsymbol{x}-\boldsymbol{b}|| \\ \mbox{ significa que estamos minimizando os quadrados das distâncias (ou erros)}\\ \end{array} \]
Exemplo 1: (Reinprecht, 2022) Seja o sistema de equações abaixo (inconsistente): \[ \begin{array}{l} \left\{ \begin{array}{l} 2 x_1+3 x_2=1\\ 3x_1+5x_2=-2\\ -2x_1-4x_2=-1 \end{array} \right. \Rightarrow \underbrace{ \begin{pmatrix} 2 & 3\\ 3 & 5\\ -2 & -4 \end{pmatrix}}_{\boldsymbol{A}} \underbrace{ \begin{pmatrix} x_1\\ x_2 \end{pmatrix}}_{\boldsymbol{x}} \underbrace{ \begin{pmatrix} 1\\ -2\\ -1 \end{pmatrix}}_{\boldsymbol{b}}\\ \square \mbox{ Inversa generalizada: } \boldsymbol{A}^{+}=\begin{pmatrix} 13/9 & 5/9 & 16/9\\ -7/9 & -2/9 & -10/9 \end{pmatrix}\\ \square \mbox{ consistência (não há):} \boldsymbol{A}\boldsymbol{A}^{+}\boldsymbol{b}\ne \boldsymbol{b}\\ \square \mbox{ Solução aproximada: } \hat{\boldsymbol{x}}= \begin{pmatrix} -13/9\\ 7/9 \end{pmatrix} \end{array} \]
\[ \begin{array}{l} \square \mbox{ vetor de resíduos para esta solução:}\\ \boldsymbol{\hat{\epsilon}}=\boldsymbol{b}-\boldsymbol{A}.\hat{\boldsymbol{x}} = \begin{pmatrix} 1\\ -2\\ -1 \end{pmatrix}-\begin{pmatrix} 2 & 3\\ 3 & 5\\ -2 & -4 \end{pmatrix} \begin{pmatrix} -13/9 \\ 7/9 \end{pmatrix}\\ =\begin{pmatrix} 1-(-26/9+21/9)\\ -2-(-39/9+35/9)\\ -1-(26/9-28/9) \end{pmatrix}= \begin{pmatrix} 14/9\\ -14/9\\ -7/9 \end{pmatrix}\\ \square \mbox{ soma de quadrados dos resíduos correspondente}:\\ \Rightarrow \sum \limits_{i=1}^3 \hat{\epsilon_i}=(14/9)^2+(14/9)^2+(7/9)^2=\frac{441}{81}\approx 5.4444\\ \mbox{de forma que } ||\boldsymbol{b}-\boldsymbol{A}\boldsymbol{\hat{x}}||= \sqrt{\frac{441}{81}}\approx 2,33 \\ \mbox{ também denominado desvio padrão estimado (no contexto da estatística)} \end{array} \]
A=matrix(c(2,3,3,5,-2,-4),ncol=2,byrow=T)
b=matrix(c(1,-2,-1),ncol=1)
showEqn(A, b)
## 2*x1 + 3*x2 = 1
## 3*x1 + 5*x2 = -2
## -2*x1 - 4*x2 = -1
try(solve(A))
## Error in solve.default(A) : 'a' (3 x 2) deve ser quadrada
A_mais=fractions(ginv(A))
A_mais
## [,1] [,2] [,3]
## [1,] 13/9 5/9 16/9
## [2,] -7/9 -2/9 -10/9
fractions(solve(t(A)%*%A)%*%t(A))
## [,1] [,2] [,3]
## [1,] 13/9 5/9 16/9
## [2,] -7/9 -2/9 -10/9
all.equal(A%*%A_mais%*%b,b)
## [1] "Mean relative difference: 3.181818"
x_hat=fractions(A_mais%*%b)
x_hat
## [,1]
## [1,] -13/9
## [2,] 7/9
fractions(solve(qr(A, LAPACK=TRUE), b))
## [,1]
## [1,] -13/9
## [2,] 7/9
e_hat=b-A%*%x_hat
fractions(e_hat)
## [,1]
## [1,] 14/9
## [2,] -14/9
## [3,] -7/9
norm(b-A%*%x_hat,type="F")
## [1] 2.333333
m1=lm(b ~ 0 + A)
m1
##
## Call:
## lm(formula = b ~ 0 + A)
##
## Coefficients:
## A1 A2
## -1.4444 0.7778
fractions(residuals(m1)) #para visualizar o vetor de resíduos
## 1 2 3
## 14/9 -14/9 -7/9
anova(m1) #para visualizar a soma de quadrados dos resíduos
## Analysis of Variance Table
##
## Response: b
## Df Sum Sq Mean Sq F value Pr(>F)
## A 2 0.5556 0.2778 0.051 0.9526
## Residuals 1 5.4444 5.4444
summary(m1) #para visualizar o desvio padrão estimado
##
## Call:
## lm(formula = b ~ 0 + A)
##
## Residuals:
## 1 2 3
## 1.5556 -1.5556 -0.7778
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## A1 -1.4444 5.4997 -0.263 0.836
## A2 0.7778 3.2069 0.243 0.849
##
## Residual standard error: 2.333 on 1 degrees of freedom
## Multiple R-squared: 0.09259, Adjusted R-squared: -1.722
## F-statistic: 0.05102 on 2 and 1 DF, p-value: 0.9526
Exemplo 2: (Reinprecht, 2022) Aplicação com banco de dados: seja o banco de dados abaixo, ajuste uma reta de regressão de mínimos quadrados com intercepto do tipo: \(f(x)=\beta_1+\beta_2.x\). Vamos atentar para a mudança de nomenclatura na forma matricial do sistema!
dados=data.frame(X=c(1,2,3,4,5),
Y=c(3.8,7.3,10.2,12.7,15.5))
dados
## X Y
## 1 1 3.8
## 2 2 7.3
## 3 3 10.2
## 4 4 12.7
## 5 5 15.5
Resolucão gráfica:
modelo <- lm(Y ~ X, data = dados)
ggplot(dados, aes(x = X, y = Y)) +
geom_point(aes(color = "Pontos"), alpha = 0.6) + # Gráfico de dispersão
geom_smooth(method = "lm", se = FALSE, aes(color = "Reta Estimada")) + # Reta de regressão
theme(legend.title = element_blank()) + # Remove o título da legenda
geom_text(x = 1.5, y = 15, label = paste("f(x) = ", round(coef(modelo)[1], 2), " + ", round(coef(modelo)[2], 2), "x"), hjust = 0) # Adicionar a fórmula da reta
Resolução detalhada:
\[ \begin{array}{l} \square \mbox{ vetor de resíduos: } \boldsymbol{\hat{\epsilon}}= \begin{pmatrix} -17/50 \\ 7/25 \\ 3/10 \\-2/25 \\ -4/25 \end{pmatrix}\\ \square \mbox{ soma de quadrado de resíduos}: \sum \limits_{i=1}^5 \hat{\boldsymbol{\epsilon_i}}=0,316\\ \square \mbox{ desvio padrão estimado : }\hat{\sigma}=0,3246 \end{array} \]
X=cbind(rep(1,5),dados$X)
Y=matrix(dados$Y,ncol=1)
showEqn(X, Y,c("beta1","beta2"))
## 1*beta1 + 1*beta2 = 3.8
## 1*beta1 + 2*beta2 = 7.3
## 1*beta1 + 3*beta2 = 10.2
## 1*beta1 + 4*beta2 = 12.7
## 1*beta1 + 5*beta2 = 15.5
try(solve(X))
## Error in solve.default(X) : 'a' (5 x 2) deve ser quadrada
X_mais=fractions(ginv(X))
X_mais
## [,1] [,2] [,3] [,4] [,5]
## [1,] 4/5 1/2 1/5 -1/10 -2/5
## [2,] -1/5 -1/10 0 1/10 1/5
X_mais%*%Y
## [,1]
## [1,] 1.26
## [2,] 2.88
fractions(solve(qr(X, LAPACK=TRUE), Y))
## [,1]
## [1,] 63/50
## [2,] 72/25
m2=lm(Y ~ X,data=dados)
m2
##
## Call:
## lm(formula = Y ~ X, data = dados)
##
## Coefficients:
## (Intercept) X
## 1.26 2.88
fractions(residuals(m2)) #para visualizar o vetor de resíduos
## 1 2 3 4 5
## -17/50 7/25 3/10 -2/25 -4/25
anova(m2) #para visualizar a soma de quadrados dos resíduos
## Analysis of Variance Table
##
## Response: Y
## Df Sum Sq Mean Sq F value Pr(>F)
## X 1 82.944 82.944 787.44 9.935e-05 ***
## Residuals 3 0.316 0.105
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m2) #para visualizar o desvio padrão estimado
##
## Call:
## lm(formula = Y ~ X, data = dados)
##
## Residuals:
## 1 2 3 4 5
## -0.34 0.28 0.30 -0.08 -0.16
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.2600 0.3404 3.702 0.0342 *
## X 2.8800 0.1026 28.061 9.93e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3246 on 3 degrees of freedom
## Multiple R-squared: 0.9962, Adjusted R-squared: 0.9949
## F-statistic: 787.4 on 1 and 3 DF, p-value: 9.935e-05
[1] DE LUNA, J. G., & DE OLINDA, R. A. (2015). Introdução a Modelos Lineares. Livraria da Física, 1ª edição, 164 p.
[2] FIELLER, N. (2016). Basics of Matrix Algebra for Statistics with R. (Chapman & Hall/CRC The R Series), 1ª edição, 244 p..
[3] GRAYBILL, F.A. Introduction to matrices with applications. Belmont, Califórnia, Wadsworth Pub. Cia, 1969.
[4] RAO, C.Radhakrishna ; MITRA, Sujit Kumar. Generalized Inverse of Matrix and its Applicátion.. New York: Edição Eletrônica, Wiley & Sons Inc, 1971.
[5] REINPRECHT, J.. (2022). A inversa generalizada de uma matriz e aplicações. Dissertação de mestrado da Universidade Estadual Júlio de Mesquita Filho, Rio Claro, SP.