#Ana Contreras y Monserrat Abdala
# Instalar el paquete 'readr' si no está instalado
if (!requireNamespace("readr", quietly = TRUE)) {
install.packages("readr")
}
# Cargar el paquete 'readr'
library(readr)
# URL del conjunto de datos
url_dataset <- "https://raw.githubusercontent.com/selva86/datasets/master/Advertising.csv"
# Importar el conjunto de datos desde internet
data <- read_csv(url_dataset)
## New names:
## Rows: 200 Columns: 5
## ── Column specification
## ──────────────────────────────────────────────────────── Delimiter: "," dbl
## (5): ...1, TV, radio, newspaper, sales
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this message.
## • `` -> `...1`
# Ver las primeras filas del conjunto de datos
View(data)
# 1. COMPROBAR LOS SUPUESTOS DE NORMALIDAD Y HOMOGENEIDAD DE VARIANZA E INTERPRETAR.
# Comprobar normalidad de las variables
shapiro.test(data$TV)
##
## Shapiro-Wilk normality test
##
## data: data$TV
## W = 0.94951, p-value = 1.693e-06
shapiro.test(data$radio)
##
## Shapiro-Wilk normality test
##
## data: data$radio
## W = 0.94401, p-value = 5.198e-07
shapiro.test(data$newspaper)
##
## Shapiro-Wilk normality test
##
## data: data$newspaper
## W = 0.9364, p-value = 1.127e-07
# Comprobar homogeneidad de varianza del modelo
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
model <- lm(sales ~ TV + radio + newspaper, data = data)
bptest(model, ~ .^2,data=data)
##
## studentized Breusch-Pagan test
##
## data: model
## BP = 98.119, df = 15, p-value = 2.961e-14
# Realizar análisis de regresión lineal múltiple
summary(model)
##
## Call:
## lm(formula = sales ~ TV + radio + newspaper, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.8277 -0.8908 0.2418 1.1893 2.8292
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.938889 0.311908 9.422 <2e-16 ***
## TV 0.045765 0.001395 32.809 <2e-16 ***
## radio 0.188530 0.008611 21.893 <2e-16 ***
## newspaper -0.001037 0.005871 -0.177 0.86
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.686 on 196 degrees of freedom
## Multiple R-squared: 0.8972, Adjusted R-squared: 0.8956
## F-statistic: 570.3 on 3 and 196 DF, p-value: < 2.2e-16
### INTERPRETACION: Primero, se realiza una prueba de normalidad de las variables predictoras "TV", "radio" y "newspaper" utilizando la prueba de Shapiro. Luego, se comprueba la homogeneidad de varianza del modelo utilizando la prueba de Breusch-Pagan. Finalmente, se realiza el análisis de regresión lineal múltiple utilizando el modelo ajustado y se muestra un resumen de los resultados. Este proceso ayuda a asegurar que los supuestos del modelo se cumplan y que los resultados sean confiables.
# 2. APLIQUE UN MÉTODO PARAMÉTRICO O UNO NO PARAMÉTRICO SEGÚN CORRESPONDA. SI ELIGEN PARAMÉTRICO ENTONCES DEBEN TRABAJAR CON REGRESIÓN LINEAL SIMPLE O MÚLTIPLE E INTERPRETAR R^2.
model <- lm(sales ~ TV + radio + newspaper, data=data)
summary(model)
##
## Call:
## lm(formula = sales ~ TV + radio + newspaper, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.8277 -0.8908 0.2418 1.1893 2.8292
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.938889 0.311908 9.422 <2e-16 ***
## TV 0.045765 0.001395 32.809 <2e-16 ***
## radio 0.188530 0.008611 21.893 <2e-16 ***
## newspaper -0.001037 0.005871 -0.177 0.86
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.686 on 196 degrees of freedom
## Multiple R-squared: 0.8972, Adjusted R-squared: 0.8956
## F-statistic: 570.3 on 3 and 196 DF, p-value: < 2.2e-16
library(ggplot2)
ggplot(data, aes(x=TV, y=sales)) +
geom_point() +
geom_smooth(method="lm", se=FALSE, color="red") +
labs(title="Regression Plot", x="TV", y="Sales")
## `geom_smooth()` using formula = 'y ~ x'
### INTERPRETACION : El modelo de regresión lineal múltiple del "Advertising dataset" tiene un valor de R-cuadrado (R²) de 0,897, lo que significa que puede explicar el 89,7% de la variabilidad en las ventas. Esto indica que el modelo ajustado es muy bueno y que las tres variables predictoras, "TV", "Radio" y "Newspaper", tienen una relación fuerte y significativa con las ventas.
# 3. CREAR UN DATAFRAME DE DOS COLUMNAS. "Nombre_variable" Y "Tipo_variable".EN LAS FILAS SE DEBEN INCLUIR LAS OBSERVACIONES CORRESPONDIENTES DE LA VARIABLE Y SU TIPO.
# crear un vector de nombres de variables
nombre_variable <- names(data)
# crear un vector de tipos de variables
tipo_variable <- sapply(data,
function(x) {
if (is.factor(x)) {
if (is.ordered(x)) {
return("categórica ordinal")
} else {
return("categórica nominal")
}
} else if (is.numeric(x)) {
if (all(x == as.integer(x))) {
return("numérica discreta")
} else {
return("numérica continua")
}
}
})
# combinar los dos vectores en un dataframe
df <- data.frame(Nombre_variable = nombre_variable, Tipo_variable = tipo_variable)
# imprimir el dataframe
print(df)
## Nombre_variable Tipo_variable
## ...1 ...1 numérica discreta
## TV TV numérica continua
## radio radio numérica continua
## newspaper newspaper numérica continua
## sales sales numérica continua
# 4. APLICAR UN ANALISIS DE CORRELACION O ASOCIACIÓN, SEGUN CORRESPONDA.
# calcular la matriz de correlación de Pearson
correlation_matrix <- cor(data, method = "pearson")
# imprimir la matriz de correlación
print(correlation_matrix)
## ...1 TV radio newspaper sales
## ...1 1.00000000 0.01771469 -0.11068044 -0.15494414 -0.05161625
## TV 0.01771469 1.00000000 0.05480866 0.05664787 0.78222442
## radio -0.11068044 0.05480866 1.00000000 0.35410375 0.57622257
## newspaper -0.15494414 0.05664787 0.35410375 1.00000000 0.22829903
## sales -0.05161625 0.78222442 0.57622257 0.22829903 1.00000000
#5. GRAFIQUEN LAS ASOCIACIONES O CORRELACI9ONES QUE ENCONTRARON E INTERPRETEN.
# instalar y cargar el paquete corrplot (si aún no está instalado)
library(corrplot)
## corrplot 0.92 loaded
library(ggcorrplot)
# crear un gráfico de la matriz de correlación
ggcorrplot(correlation_matrix, type = "lower", colors = c("#6D9EC1", "white", "#E46726"))
### INTERPRETACION: La gráfica de correlación muestra la correlación entre dos variables, con los colores y tamaños de los puntos indicando la fuerza de la correlación. Para el conjunto de datos "Publicidad", la gráfica revela una fuerte correlación positiva entre las ventas y el gasto publicitario en televisión y radio, y una correlación débil entre ventas y publicidad en periódicos. Además, existe una correlación positiva moderada entre la publicidad en televisión y radio. El gráfico ayuda a identificar patrones de correlación en el conjunto de datos, lo que sugiere que la publicidad en televisión y radio tiene un mayor impacto en las ventas que la publicidad en los periódicos. Además, sugiere que las empresas que invierten más en publicidad televisiva también tienden a invertir más en publicidad radiofónica.