Modelo de Regressão Linear Múltipla

Nesta aula computacional, analisaremos um conjunto de dados proveniente de um modelo de regressão linear múltipla.

Modelo

Considere o modelo de regressão linear múltipla: \[Y_i = \beta_0 + \beta_1 X_i + \ldots + \beta_p X_p + e_i, \quad e_i \stackrel{iid}{\sim} N(0,\sigma^2), \quad i=1,\ldots,n.\]

1ª tarefa - Simulando conjunto de dados

Simule um conjunto de dados do modelo de regressão linear múltipla considerando n=1000 (tamanho amostral), \(\beta_0=10\), \(\beta_1=2\), \(\beta_2=-1,5\), \(\beta_3=3\), \(\beta_4=-1\), \(\sigma^2=9\) e que \(x_{1i} \stackrel{iid}{\sim} N(0,1)\), \(x_{2i} \stackrel{iid}{\sim} Unif(-\sqrt{3}, \sqrt{3})\), \(x_{3i} \stackrel{iid}{\sim} t_5\) e , \(x_{4i} \stackrel{iid}{\sim} Exp(1)\).

# Configurações iniciais
set.seed(123)  # Definindo uma semente para reprodutibilidade
n = 1000  # Número de observações

# Simulando as covariáveis
x1 = rnorm(n, mean = 0, sd = 1)  # Covariável 1
x2 = runif(n, -sqrt(3), sqrt(3))   # Covariável 2
x3 = rt(n, df = 5)   # Covariável 3
x4 = rexp(n, rate = 1)     # Covariável 4

# Definindo os coeficientes reais
beta_0 = 10    # Intercepto
beta_1 = 2     # Coeficiente para x1
beta_2 = -1.5  # Coeficiente para x2
beta_3 = 3     # Coeficiente para x3
beta_4 = -1   # Coeficiente para x4

# Gerando a variável resposta com erro aleatório
e = rnorm(n, mean = 0, sd = 3)  # Erro aleatório
y = beta_0 + beta_1 * x1 + beta_2 * x2 + beta_3 * x3 + beta_4 * x4 + e

2ª tarefa - Como você pode fazer a mesma simulação usando matrizes?

x       = cbind(1, x1, x2, x3, x4)
beta    = c(beta_0, beta_1, beta_2, beta_3, beta_4)
y_vetor = x %*% beta + e

plot(y, y_vetor)

summary(y-y_vetor)
##        V1   
##  Min.   :0  
##  1st Qu.:0  
##  Median :0  
##  Mean   :0  
##  3rd Qu.:0  
##  Max.   :0

3ª tarefa - Analisando o conjunto de dados

  1. Calcule a matriz de correlação para a variável resposta e as covariáveis.

  2. Faça os histogramas da variável resposta e das covariáveis.

  3. Faça o gráfico de dispersão de cada covariável e a variável resposta.

# Criando um data frame com os dados simulados
#dados = data.frame(y, x1, x2, x3, x4)
dados = data.frame(y, x1=x[,2], x2=x[,3], x3=x[,4], x4=x[,5])

# Visualizando as primeiras linhas do conjunto de dados
head(dados)
##           y          x1          x2         x3         x4
## 1  8.307964 -0.56047565 -1.17892391 -1.0297552 0.19551182
## 2 12.503024 -0.23017749 -1.23143321  0.4604943 0.08666284
## 3 18.296666  1.55870831 -1.21527477  2.1057294 0.23242192
## 4 13.463330  0.07050839  0.05000174 -0.7179787 0.37956713
## 5 13.349495  0.12928774 -0.02484694  1.1045953 0.58398306
## 6  9.520310  1.71506499  0.40302317 -0.3629178 1.03774514
# Análise descritiva dos dados
# Estatísticas resumo
summary(dados)
##        y                 x1                 x2                  x3          
##  Min.   :-13.930   Min.   :-2.80978   Min.   :-1.719871   Min.   :-5.46841  
##  1st Qu.:  5.473   1st Qu.:-0.62832   1st Qu.:-0.923009   1st Qu.:-0.75649  
##  Median :  8.967   Median : 0.00921   Median :-0.012254   Median :-0.03072  
##  Mean   :  8.939   Mean   : 0.01613   Mean   :-0.004837   Mean   :-0.03636  
##  3rd Qu.: 12.587   3rd Qu.: 0.66460   3rd Qu.: 0.851617   3rd Qu.: 0.67912  
##  Max.   : 27.497   Max.   : 3.24104   Max.   : 1.730842   Max.   : 5.17527  
##        x4          
##  Min.   :0.000811  
##  1st Qu.:0.268520  
##  Median :0.713420  
##  Mean   :0.978924  
##  3rd Qu.:1.376242  
##  Max.   :6.472264
# Correlação entre as variáveis
round(cor(dados),3)
##         y     x1     x2     x3     x4
## y   1.000  0.412 -0.210  0.675 -0.151
## x1  0.412  1.000  0.024  0.040 -0.002
## x2 -0.210  0.024  1.000  0.051 -0.073
## x3  0.675  0.040  0.051  1.000 -0.022
## x4 -0.151 -0.002 -0.073 -0.022  1.000
# Visualização gráfica
# Histograma para cada variável
par(mfrow = c(2, 3))  # Organizando o layout de gráficos
hist(dados$y, main = "Histograma de Y", xlab = "y", col = "skyblue", border = "white", freq=F, ylab="densidade", bty="n")
hist(dados$x1, main = "Histograma de X1", xlab = "x1", col = "skyblue", border = "white", freq=F, ylab="densidade", bty="n")
hist(dados$x2, main = "Histograma de X2", xlab = "x2", col = "skyblue", border = "white", freq=F, ylab="densidade", bty="n")
hist(dados$x3, main = "Histograma de X3", xlab = "x3", col = "skyblue", border = "white", freq=F, ylab="densidade", bty="n")
hist(dados$x4, main = "Histograma de X4", xlab = "x4", col = "skyblue", border = "white", freq=F, ylab="densidade", bty="n")
hist(e, main = "Histograma dos erros", xlab = "e", col = "skyblue", border = "white", freq=F, ylab="densidade", bty="n")

# Gráficos de dispersão para relação entre y e cada covariável
par(mfrow = c(2, 2))  # Ajustando layout para scatter plots
plot(dados$x1, dados$y, main = "y vs x1", xlab = "x1", ylab = "y", col = "blue", pch = 19, bty="n")
plot(dados$x2, dados$y, main = "y vs x2", xlab = "x2", ylab = "y", col = "blue", pch = 19, bty="n")
plot(dados$x3, dados$y, main = "y vs x3", xlab = "x3", ylab = "y", col = "blue", pch = 19, bty="n")
plot(dados$x4, dados$y, main = "y vs x4", xlab = "x4", ylab = "y", col = "blue", pch = 19, bty="n")