Estimación de los coeficientes de regresión
datos <- read.csv("ventas.csv")
head(datos)
## TV Radio Social_media Influencer Sales
## 1 16 6.566231 2.907983 Mega 54.73276
## 2 13 9.237765 2.409567 Mega 46.67790
## 3 41 15.886446 2.913410 Mega 150.17783
## 4 83 30.020028 6.922304 Mega 298.24634
## 5 15 8.437408 1.405998 Micro 56.59418
## 6 29 9.614382 1.027163 Mega 105.88915
La data contiene datos sobre las ventas de una compañía y los montos asignados a publicidad en distintos medios (TV, radio y redes sociales).
Primero analizaremos mediante una regresión lineal simple si existe alguna relación entre:
Variable independiente X: TV - Presupuesto designado a promoción en Tv(millones de dólares)
Variable dependiente Y: Sales - Ventas de la empresa(millones de dólares)
X<-datos$TV
Y<-datos$Sales
data<-data.frame(X,Y)
Empleando la función lm() se genera un modelo de regresión lineal por mínimos cuadrados en el que la variable respuesta es Sales (Y) y el predictor TV (X)
modelo <- lm(Y ~ X, data=data)
modelo$coefficients
## (Intercept) X
## -0.1263254 3.5614111
De donde: bo = -0.13 y b1 = 3.56
Con estos datos, podemos decir que la ecuación de regresión estimada es:
y = -0.13 + 3.56x
Sales = -0.13 + 3.56TV
El b1 = 3.56 significa que si el presupuesto destinado a TV se incremente en 1%, entonces en promedio las ventas de la empresa aumenta en 3.56 millones de dólares.
El b0 = -0.13 no tiene un significado real, y representa solo un intercepto de la ecuación de regresión, Si la variable TV es igual cero, las ventas de la empresa es de b0, lo cual no tiene sentido.
Sin embargo, contamos con más datos que pueden servir para explicar o determinar mejor si la relación que existe entre las variables de interes es significativa o no. Por ello, podemos utilizar las siguientes variables:
Sales = β0 + β1TV + β2Radio + β3Social_media + u
regresion <- lm(Sales ~ TV+Radio+Social_media,
data=datos)
summary(regresion)
##
## Call:
## lm(formula = Sales ~ TV + Radio + Social_media, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.6158 -2.0002 -0.0075 2.0199 11.2581
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.133963 0.102820 -1.303 0.193
## TV 3.562570 0.003389 1051.118 <0.0000000000000002 ***
## Radio -0.003970 0.009781 -0.406 0.685
## Social_media 0.004964 0.024884 0.199 0.842
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.95 on 4542 degrees of freedom
## (26 observations deleted due to missingness)
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 1.505e+06 on 3 and 4542 DF, p-value: < 0.00000000000000022
Antes de interpretar los resultados, es necesario verificar los supuestos del modelo
ajuste<- datos %>%
add_residuals(regresion)
par(mfrow=c(2,2))
plot(regresion)
En la parte superior izquierda: Muestra la gráfica de residuales contra la variable estimada yˆ. Los residuales están dispersos alrededor del cero, sin mostrar ningún patrón o relación entre los residuales y la variable dependiente estimada, entonces nuestro modelo es apropiado.
En la parte superior derecha: Muestra la gráfica de probabilidad normal, sirve para comprobar que los residuales se distribuyen normalmente utilizando los residuales estandarizados, los residuales forman algo parecido a una recta de 45°, entonces los residuales son normales.
En la parte inferior izquierda: Muestra la gráfica de la raíz cuadrada del valor absoluto de los residuales estandarizados contra la variable dependiente estimada yˆ, la cuál sirve para determinar si los residuales son de varianza constante, al igual que la primera gráfica, se encuentra que los valores están dispersos sin mostrar ningún patrón, por tanto el modelo es adecuado.
En la parte inferior derecha: Muestra la gráfica de distancia de Cook, la cual sirve para identificar si existen algunos valores grandes que tengan una gran influencia sobre la estimación de los coeficientes, una gran distancia indica que esas observaciones tienen un gran peso sobre la estimación. La existencia de valores atípicos son una de las causas de heterocedasticidad.
summary(ajuste$resid)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -11.615811 -2.000239 -0.007466 0.000000 2.019922 11.258108 26
jarque.bera.test(na.omit(ajuste$resid))
##
## Jarque Bera Test
##
## data: na.omit(ajuste$resid)
## X-squared = 0.034132, df = 2, p-value = 0.9831
bptest(regresion)
##
## studentized Breusch-Pagan test
##
## data: regresion
## BP = 1.5262, df = 3, p-value = 0.6762
Los resultados indican que los residuales son normales, y se verifica que los errores si son homocedásticos.
Utilizando los resultados de la regresión, observamos que las variables independientes explican en 99.9% la variación de las ventas de la empresa estandarizadas, el estadístico F también indica que el modelo es significativo, pues en conjunto los coeficientes son distintos de cero. La variable de interés (TV) es positiva y significativa, es decir, aumentar el presupuesto destinado a TV, aumenta las ventas de la empresa, la variable es significativa al 100%. Aumentar el presupuesto destinado a TV en 1 millon, indica que las ventas promedio de la empresa aumenta 3.56 millones en promedio.
El resto de las variables resultaron poco significativas, es minimo el efecto que causa sobre las ventas de la empresa.
Dicho de otra forma, si las autoridades de la compañia desean aumentar las ventas de la empresa, necesitan tomar en cuenta las variables que son significativas, esta claro que la inversion a presupuesto en Tv seria la más rentable. Nota que es necesario tener en cuenta las unidades de la medida de la variable dependiente y las independiente:
En la variable Radio - un aumento de 1 millon en presupuesto para Radio, las ventas de la empresa disminuyen en promedio 3970 dolares
En la variable Social_media - un aumento de 1 millon en presupuesto para Social_media, las ventas de la empresa aumentan en promedio 4964 dolares.
Estos resultados son mejores que los de una regresión lineal simple, y le dan a los encargados de tomar decisiones un panorama más amplio sobre las condiciones que involucran en las ventas de la empresa.
Intervalos de confianza del 95%:
regresion %>% confint
## 2.5 % 97.5 %
## (Intercept) -0.33554094 0.06761484
## TV 3.55592492 3.56921433
## Radio -0.02314501 0.01520424
## Social_media -0.04381985 0.05374789
Luego el intervalo de confianza para b1 es 3.556 ≤ b1 ≤ 3.569
La interpretación de este intervalo de confianza es: Dado el coeficiente de confianza de 95%, en 95 de cada 100 casos, los intervalos como 3.556 ≤ b1 ≤ 3.569 contendrán al verdadero valor de b1.
Región de 95% de confianza para el intercepto y coeficiente de TV
library(car)
regresion |> confidenceEllipse(levels = 0.95, fill = T, which.coef = c(1,2), col = "forestgreen")
datosMega= filter(datos,Influencer=="Mega")
regresion2 <- lm(Sales ~ TV+Radio+Social_media,
data=datosMega)
summary(regresion2)
##
## Call:
## lm(formula = Sales ~ TV + Radio + Social_media, data = datosMega)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.8526 -1.9198 -0.0096 2.0114 9.2229
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.269568 0.199983 -1.348 0.1779
## TV 3.553604 0.006674 532.459 <0.0000000000000002 ***
## Radio 0.016643 0.019090 0.872 0.3835
## Social_media 0.089387 0.048608 1.839 0.0662 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.884 on 1148 degrees of freedom
## (6 observations deleted due to missingness)
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 3.926e+05 on 3 and 1148 DF, p-value: < 0.00000000000000022
Sales = -0.27 + 3.55TV + 0.02Radio + 0.09Social_media + u
ajuste<- datosMega %>%
add_residuals(regresion2)
par(mfrow=c(2,2))
plot(regresion2)
datosMicro= filter(datos,Influencer=="Micro")
regresion3 <- lm(Sales ~ TV+Radio+Social_media,
data=datosMicro)
summary(regresion3)
##
## Call:
## lm(formula = Sales ~ TV + Radio + Social_media, data = datosMicro)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.2724 -1.9539 0.0007 1.9265 11.2374
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.015624 0.201827 0.077 0.938
## TV 3.560464 0.006792 524.209 <0.0000000000000002 ***
## Radio -0.011560 0.019620 -0.589 0.556
## Social_media 0.027872 0.050452 0.552 0.581
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.96 on 1144 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 3.86e+05 on 3 and 1144 DF, p-value: < 0.00000000000000022
Sales = 0.02 + 3.56TV - 0.01Radio + 0.03Social_media + u
ajuste<- datosMicro %>%
add_residuals(regresion3)
par(mfrow=c(2,2))
plot(regresion3)
datosMacro= filter(datos,Influencer=="Macro")
regresion4 <- lm(Sales ~ TV+Radio+Social_media,
data=datosMacro)
summary(regresion4)
##
## Call:
## lm(formula = Sales ~ TV + Radio + Social_media, data = datosMacro)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.2031 -2.0688 -0.0353 2.1497 9.6834
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.041207 0.214502 0.192 0.8477
## TV 3.564927 0.006869 519.019 <0.0000000000000002 ***
## Radio 0.001163 0.019828 0.059 0.9532
## Social_media -0.104408 0.049637 -2.103 0.0357 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.986 on 1108 degrees of freedom
## (10 observations deleted due to missingness)
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 3.541e+05 on 3 and 1108 DF, p-value: < 0.00000000000000022
Sales = 0.04 + 3.56TV + 0.001Radio - 0.10Social_media + u
ajuste<- datosMacro %>%
add_residuals(regresion4)
par(mfrow=c(2,2))
plot(regresion4)
datosNano= filter(datos,Influencer=="Nano")
regresion5 <- lm(Sales ~ TV+Radio+Social_media,
data=datosNano)
summary(regresion5)
##
## Call:
## lm(formula = Sales ~ TV + Radio + Social_media, data = datosNano)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.535 -1.987 -0.054 2.000 10.190
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.324995 0.206713 -1.572 0.116
## TV 3.571341 0.006782 526.588 <0.0000000000000002 ***
## Radio -0.022907 0.019715 -1.162 0.246
## Social_media 0.009709 0.050420 0.193 0.847
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.964 on 1130 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 3.735e+05 on 3 and 1130 DF, p-value: < 0.00000000000000022
Sales = -0.32 + 3.57TV - 0.02Radio + 0.009Social_media + u
ajuste<- datosNano %>%
add_residuals(regresion5)
par(mfrow=c(2,2))
plot(regresion5)
Se infiere que los valores de los coeficientes varia segun el tipo de Influencer que se filtre, si bien la variacion es minima, los cambios influirian en una toma de decisiones y conocer que publico es aquel que podria brindarnos mejor resultado. Analizando los residuales se aprecia minimamente y se compara asi para los 4 tipos de Influencer en mención.
Para nuestra elección segun el análisis previo optamos por el Mega y Nano
Se cuenta con 1158 observaciones para el Influencer tipo Mega
Se cuenta con 1153 observaciones para el Influencer tipo Micro
Se cuenta con 1122 observaciones para el Influencer tipo Macro
Se cuenta con 1139 observaciones para el Influencer tipo Nano
Luiggi Bravo 20211809@lamolina.edu.pe