Importar Funciones
source("Script.R")
Datos
# Datos de ejemplo
set.seed(123)
n <- 100
X1 <- rnorm(n, mean = 5, sd = 2)
X2 <- rnorm(n, mean = 10, sd = 3)
X3 <- rnorm(n, mean = 15, sd = 4)
Y <- 3 + 1.5 * X1 - 2 * X2 + 0.5 * X3 + rnorm(n, mean = 0, sd = 1)
Implementacion Manual
Metodo con Matrices
# Creamos la matriz X y el vector Y
X <- cbind(X1, X2, X3)
Y <- as.matrix(Y)
# Calculamos los coeficientes
coeficientes <- calcular_coeficientes_matrices(X, Y)
print(coeficientes)
## [,1]
## 3.1804411
## X1 1.4722747
## X2 -1.9845939
## X3 0.4856533
Metodo Con ecuaciones Normales
# Llamar a la función para calcular los coeficientes (Ecuaciones Normales)
coeficientes <- regresion_multiple(X1, X2, X3, Y)
# Mostrar los coeficientes calculados
print(coeficientes)
## [1] 5.4356043 1.4979130 -2.0110363 0.3479373
Implementacion De R
# Ajustar el modelo de regresión lineal múltiple
modelo <- lm(Y ~ X1 + X2 + X3)
# Ver los resultados del modelo
summary(modelo)
##
## Call:
## lm(formula = Y ~ X1 + X2 + X3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.49138 -0.65392 0.05664 0.67033 2.53210
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.18044 0.67235 4.73 7.7e-06 ***
## X1 1.47227 0.05844 25.19 < 2e-16 ***
## X2 -1.98459 0.03649 -54.39 < 2e-16 ***
## X3 0.48565 0.02806 17.31 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.052 on 96 degrees of freedom
## Multiple R-squared: 0.9759, Adjusted R-squared: 0.9751
## F-statistic: 1295 on 3 and 96 DF, p-value: < 2.2e-16
Descriptivo
# Crear un data frame con las variables independientes (X1, X2, X3) y dependiente (Y)
data <- data.frame(Y, X1, X2, X3)
# Graficar X1 vs Y
plot(data$X1, data$Y, main="X1 vs Y", xlab="X1", ylab="Y", col="blue", pch=20)

# Graficar X2 vs Y
plot(data$X2, data$Y, main="X2 vs Y", xlab="X2", ylab="Y", col="red", pch=20)

# Graficar X3 vs Y
plot(data$X3, data$Y, main="X3 vs Y", xlab="X3", ylab="Y", col="green", pch=20)

# Obtener los valores ajustados (predicciones)
predicciones <- predict(modelo)
# Graficar los valores observados vs los valores ajustados
plot(data$Y, predicciones, main="Valores Observados vs Ajustados", xlab="Valores Observados", ylab="Valores Ajustados", col="purple", pch=20)
abline(0, 1, col="red", lwd=2) # Línea diagonal que indica ajuste perfecto

# Calcular los residuos
residuos <- data$Y - predicciones
# Graficar los residuos
plot(predicciones, residuos, main="Residuos vs Valores Ajustados", xlab="Valores Ajustados", ylab="Residuos", col="orange", pch=20)
abline(h=0, col="black", lwd=2) # Línea horizontal en 0
