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