# Instalar los paquetes necesarios (solo la primera vez)
# install.packages("readxl")
# install.packages("plotly")
# install.packages("dplyr")
library(readxl)
library(plotly)
## Warning: package 'plotly' was built under R version 4.4.3
## Cargando paquete requerido: ggplot2
##
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
getwd()
## [1] "C:/Users/uac_facsoc/Desktop"
# Especifica la ruta a tu archivo de Excel, en mi caso:
ruta_excel <- "C:/Users/uac_facsoc/Desktop/Gráfico_R_MCO.xlsx"
# Carga la hoja de datos. Asegúrate de que los nombres de las columnas
# sean claros (por ejemplo: 'Y', 'X1', 'X2').
datos_regresion <- read_excel(ruta_excel, sheet = 1)
# Mostrar las primeras filas para verificar la carga
head(datos_regresion)
## # A tibble: 6 × 5
## Año n Y X1 X2
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1971 1 40 6 4
## 2 1972 2 44 10 4
## 3 1973 3 46 12 5
## 4 1974 4 48 14 7
## 5 1975 5 52 16 9
## 6 1976 6 58 18 12
# Define tu modelo: Y en función de X1 y X2
modelo_rlm <- lm(Y ~ X1 + X2, data = datos_regresion)
# Ver el resumen del modelo (opcional, pero útil)
summary(modelo_rlm)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = datos_regresion)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.8199 -0.7304 0.1302 0.9173 1.8108
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 31.9807 1.6318 19.598 2.25e-07 ***
## X1 0.6501 0.2502 2.599 0.03550 *
## X2 1.1099 0.2674 4.150 0.00429 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.397 on 7 degrees of freedom
## Multiple R-squared: 0.9916, Adjusted R-squared: 0.9892
## F-statistic: 414.8 on 2 and 7 DF, p-value: 5.356e-08
# 1. Crear una malla de valores para X1 y X2
range_X1 <- seq(min(datos_regresion$X1), max(datos_regresion$X1), length.out = 30)
range_X2 <- seq(min(datos_regresion$X2), max(datos_regresion$X2), length.out = 30)
grid_data <- expand.grid(X1 = range_X1, X2 = range_X2)
# 2. Predecir Y en cada punto de la malla usando el modelo ajustado
grid_data$Y_pred <- predict(modelo_rlm, newdata = grid_data)
# 3. Convertir las predicciones a una matriz para plot_ly
Z_predicha <- matrix(grid_data$Y_pred,
nrow = length(range_X1),
ncol = length(range_X2),
byrow = FALSE)
# 1. Trazar la Superficie (Plano de Regresión)
fig <- plot_ly(
x = range_X1,
y = range_X2,
z = Z_predicha,
type = "surface",
opacity = 0.7,
name = "Plano de Regresión",
showscale = FALSE # Ocultar la barra de color de la superficie
)
# 2. Añadir los Puntos de Dispersión (Datos Reales)
fig <- fig %>% add_markers(
data = datos_regresion,
x = ~X1,
y = ~X2,
z = ~Y,
marker = list(
size = 4,
color = 'green',
line = list(color = 'black', width = 0.5)
),
name = "Datos Reales",
inherit = FALSE # Indispensable
)
# 3. Personalizar Ejes y Título
fig <- fig %>% layout(
title = "Regresión Lineal Múltiple: Plano Ajustado vs. Datos Reales",
scene = list(
xaxis = list(title = "Predictor X1"),
yaxis = list(title = "Predictor X2"),
zaxis = list(title = "Respuesta Y")
)
)
fig # Mostrar el gráfico interactivo