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.
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.\]
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
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
Calcule a matriz de correlação para a variável resposta e as covariáveis.
Faça os histogramas da variável resposta e das covariáveis.
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")