Preparación de Datos

Iniciamos cargando la base de datos del estudio. Es fundamental convertir la variable de fidelidad a un factor, ya que representa categorías cualitativas (baja, media, alta).

datos<-read.csv("C:/Users/HOME/Downloads/intencion.csv", sep=",")

datos$fidelidad <- as.factor(datos$fidelidad)
str(datos)
## 'data.frame':    150 obs. of  8 variables:
##  $ X               : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ intencion_compra: num  5.5 7 8.2 7.5 6.7 10 10 4.2 5.1 3.5 ...
##  $ satisfaccion    : num  6.8 7.2 9.4 7.6 7.7 9.6 8.1 6 6.7 7 ...
##  $ percepcion      : num  4.9 4.9 4.6 4.4 5.3 6.5 3 6.3 7.9 9.1 ...
##  $ ingreso         : num  5.88 5.05 3.95 4.42 4.79 1.15 5.18 2.73 3.64 2.95 ...
##  $ conocimiento    : num  6.3 6.7 8.2 5.8 6.5 8 7.3 4.8 6.4 5.7 ...
##  $ muestra_gratis  : int  1 1 0 1 0 1 0 0 1 0 ...
##  $ fidelidad       : Factor w/ 3 levels "1","2","3": 2 2 3 2 2 3 2 1 2 2 ...
modelo2<- lm(intencion_compra ~ satisfaccion + percepcion + ingreso + conocimiento + muestra_gratis + fidelidad, data = datos)

summary(modelo2)
## 
## Call:
## lm(formula = intencion_compra ~ satisfaccion + percepcion + ingreso + 
##     conocimiento + muestra_gratis + fidelidad, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7348 -0.6984  0.1021  0.7810  3.0216 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.97623    0.98503   3.021  0.00298 ** 
## satisfaccion    0.72547    0.14118   5.139 8.98e-07 ***
## percepcion     -0.50185    0.06370  -7.879 7.84e-13 ***
## ingreso        -0.05546    0.07226  -0.768  0.44401    
## conocimiento    0.27267    0.19949   1.367  0.17385    
## muestra_gratis  0.82562    0.19487   4.237 4.06e-05 ***
## fidelidad2     -0.02297    0.46414  -0.049  0.96060    
## fidelidad3     -0.12139    0.71417  -0.170  0.86527    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.18 on 142 degrees of freedom
## Multiple R-squared:  0.6118, Adjusted R-squared:  0.5927 
## F-statistic: 31.98 on 7 and 142 DF,  p-value: < 2.2e-16

Gráficos de supuestos de intencion de compra

par(mfrow=c(2,2))
plot(modelo2)

1. SUPUESTOS DEL MODELO

PRUEBA DE NORMALIDAD}

Evaluaremos la normalidad de los residuos usando la prueba de Shapiro-Wilk:

H0: Los errores siguen una distribución normal.

H1: Los errores NO siguen una distribución normal.

Nivel de significancia \(\alpha = 0.05\)

shapiro.test(modelo2$residual)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo2$residual
## W = 0.97672, p-value = 0.01195

p-value=0.01177 conclusion: se rechaza la hipotesis H0, no se cumple el suspuestode normalidad,se inferencia de TCL

2.PRUEBA DE MULTICOLINEALIDAD

si el VIF es mayor a 10 indica multicolineadidad alta

library(car)
vif(modelo2)
##                    GVIF Df GVIF^(1/(2*Df))
## satisfaccion   2.754509  1        1.659671
## percepcion     1.045500  1        1.022497
## ingreso        1.036805  1        1.018236
## conocimiento   4.960055  1        2.227118
## muestra_gratis 1.007404  1        1.003695
## fidelidad      3.411042  2        1.359007

el vif es menor a 10, cumple con el suspuesto de multicolinealidad

3. REGRESIONES POSIBLES(modelo global)

En esta etapa, evaluamos todas las combinaciones posibles de las variables independientes para identificar cuál subconjunto explica mejor la intención de compra. Utilizaremos el modelo global que incluye todos los predictores originales como punto de partida.

library(olsrr)

modelo_global <- lm(intencion_compra ~ satisfaccion + percepcion + ingreso + conocimiento + muestra_gratis + fidelidad, data = datos)
all_models <- ols_step_all_possible(modelo_global)

4. COMPARACION DE MODELOS INDIVIDUALES(\(R^2\) Ajustado)

m0 <- lm(intencion_compra ~ 1, data = datos)
summary(m0)$adj.r.squared
## [1] 0

modelos con 1 regresor

m_satisfaccion <-lm(intencion_compra ~ satisfaccion, data = datos)
m_percepcion <-lm(intencion_compra ~ percepcion, data = datos)
m_ingreso <-lm(intencion_compra ~ ingreso, data = datos)
m_conocimiento <-lm(intencion_compra ~ conocimiento, data = datos)
m_muestra_gratis <-lm(intencion_compra ~ muestra_gratis, data = datos)
m_fidelidad <-lm(intencion_compra ~ fidelidad, data = datos)

(\(R^2_{adj}\)) ajustado de cada modelo

summary(m_satisfaccion)$adj.r.squared
## [1] 0.3775152
summary(m_percepcion)$adj.r.squared
## [1] 0.2453005
summary(m_ingreso)$adj.r.squared
## [1] -0.005153184
summary(m_conocimiento)$adj.r.squared
## [1] 0.3063911
summary(m_muestra_gratis)$adj.r.squared
## [1] 0.03363652
summary(m_fidelidad)$adj.r.squared
## [1] 0.2076424

Tras evaluar el coeficiente de determinación ajustado (\(R^2_{adj}\)) para cada variable de forma individual, observamos cuál de ellas tiene el mayor impacto inicial sobre la intención de compra.

  • Variable con mayor \(R^2_{adj}\): Al comparar los resultados, la variable Satisfacción presenta el valor más alto, lo que indica que es el predictor individual más fuerte.

  • Decisión de selección: Siguiendo el criterio del \(R^2\) ajustado, esta será la primera variable en ingresar a nuestro modelo multivariante.

5. METODO HACIA ADELANTE(AIC como criterio)

Una vez identificada la variable principal, utilizamos el Criterio de Información de Akaike (AIC) para determinar qué otras variables deben incluirse. Buscamos el modelo que logre el AIC más bajo.

m0<- lm(intencion_compra ~1,data=datos)
AIC(m0)
## [1] 613.1533
m_satisfaccion <-lm(intencion_compra ~ satisfaccion, data = datos)
m_percepcion <-lm(intencion_compra ~ percepcion, data = datos)
m_ingreso <-lm(intencion_compra ~ ingreso, data = datos)
m_conocimiento <-lm(intencion_compra ~ conocimiento, data = datos)
m_muestra_gratis <-lm(intencion_compra ~ muestra_gratis, data = datos)
m_fidelidad <-lm(intencion_compra ~ fidelidad, data = datos)

AIC(m_satisfaccion);AIC(m_percepcion);AIC(m_ingreso);AIC(m_conocimiento);AIC(m_muestra_gratis);AIC(m_fidelidad)
## [1] 543.0377
## [1] 571.9278
## [1] 614.9141
## [1] 559.2661
## [1] 609.0109
## [1] 580.2148

se selecciona el menor AIC que es la variable SATISFACCION, luego se procede a comparar:

m_1<- lm(intencion_compra ~ satisfaccion, data=datos)
AIC(m_1) 
## [1] 543.0377
m_per <- lm(intencion_compra ~ satisfaccion + percepcion,data=datos)
m_ing <- lm(intencion_compra ~ satisfaccion + ingreso,data=datos)
m_con <- lm(intencion_compra ~ satisfaccion + conocimiento,data=datos)
m_mue <- lm(intencion_compra ~ satisfaccion + muestra_gratis,data=datos)
m_fid <- lm(intencion_compra ~ satisfaccion + fidelidad,data=datos)

AIC(m_per); AIC(m_ing); AIC(m_con); AIC(m_mue); AIC(m_fid)
## [1] 495.5222
## [1] 544.9883
## [1] 542.1558
## [1] 533.8642
## [1] 544.9341
m_2<- lm(intencion_compra ~ satisfaccion + percepcion, data=datos)
AIC(m_2) 
## [1] 495.5222
m_ing <- lm(intencion_compra ~ satisfaccion + percepcion + ingreso,data=datos)
m_con <- lm(intencion_compra ~ satisfaccion + percepcion + conocimiento,data=datos)
m_mue <- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis,data=datos)
m_fid <- lm(intencion_compra ~ satisfaccion + percepcion + fidelidad,data=datos)

 AIC(m_ing); AIC(m_con); AIC(m_mue); AIC(m_fid)
## [1] 497.3648
## [1] 495.3127
## [1] 480.6225
## [1] 498.8661
m_3<- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis, data=datos)
AIC(m_3) 
## [1] 480.6225
m_ing <- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis + ingreso,data=datos)
m_con <- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis + conocimiento,data=datos)
m_fid <- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis + fidelidad,data=datos)

 AIC(m_ing); AIC(m_con); AIC(m_fid)
## [1] 482.1079
## [1] 479.8586
## [1] 483.6962
m_4<- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis + conocimiento, data=datos)
AIC(m_4) 
## [1] 479.8586
m_ing <- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis + conocimiento + ingreso,data=datos)

m_fid <- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis + conocimiento + fidelidad,data=datos)

 AIC(m_ing); AIC(m_fid)
## [1] 481.2683
## [1] 483.8206

Interpretación del Criterio AIC:

Observamos que el valor del AIC disminuye a medida que agregamos las variables Percepción, Muestra Gratis y Conocimiento. Por lo tanto, el modelo m_4 es el seleccionado como el modelo más óptimo y parsimonioso para la predicción. METODO HACIA ADELANTE(AIC como criterio)

summary(m_4)
## 
## Call:
## lm(formula = intencion_compra ~ satisfaccion + percepcion + muestra_gratis + 
##     conocimiento, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.76196 -0.70605  0.08116  0.82217  3.05247 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.87812    0.80414   3.579 0.000469 ***
## satisfaccion    0.73143    0.13964   5.238 5.60e-07 ***
## percepcion     -0.49933    0.06256  -7.981 4.03e-13 ***
## muestra_gratis  0.81491    0.19265   4.230 4.12e-05 ***
## conocimiento    0.24192    0.14732   1.642 0.102728    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.171 on 145 degrees of freedom
## Multiple R-squared:  0.6101, Adjusted R-squared:  0.5994 
## F-statistic: 56.73 on 4 and 145 DF,  p-value: < 2.2e-16

Interpretación de la Significancia:

  • Significancia Global: Al observar el p-value del estadístico F en el resumen del modelo (menor a 0.05), concluimos que el modelo es globalmente significativo. Es decir, al menos una de las variables independientes explica la intención de compra.

  • Coeficientes Individuales: Todas las variables retenidas en el modelo m_4 presentan un valor p individual significativo, lo que justifica su permanencia en la ecuación final.

Prueba de Significancia Global (ANOVA)

Antes de realizar estimaciones, debemos verificar si el modelo seleccionado es estadísticamente válido en su conjunto. Para ello, planteamos una prueba de hipótesis sobre los coeficientes de regresión:

Planteamiento de Hipótesis:

-\(H_0: \beta_1 = \beta_2 = \beta_3 = \beta_4 = 0\) (El modelo no es válido; ninguna variable explica la intención de compra).

  • \(H_1:\) Al menos un \(\beta_j \neq 0\) (El modelo es válido; al menos una variable es significativa).

  • alpha= 0.05

  • p-value= 2.2e-16

  • conclusion: alpha > p-value, se rechaza la H0, existe evidencia estadistica suficiente para afirmar que el modelo es globalmente significativo. Por lo tanto, al menos una de las variables independientes(satisfaccion, percepcion,muestra_gratis, o conocimiento) explica de manera efectiva la variabilidad de la intencion de compra

Prueba de Significancia Individual (Prueba t)

Una vez validado el modelo global, evaluamos sic ada varaiable independiente aporta significativamente a la prediccion de la intencion de compra.

Planteamiento de Hipótesis para cada Coeficiente (\(\beta_j\)):

  • \(H_0: \beta_j = 0\) (La variable no es significativa para el modelo).

  • \(H_1: \beta_j \neq 0\) (La variable aporta significativamente al modelo).

  • alpha=0-05

-análisis de significancia al observar los resultados, las variablessatisfaccion,percepcion,muestra gratis y conocimiento presentan p-values menores a 0.05(indicados con los asteriscos *** o ** ). Por lo tanto, rechazamos H0 para cada unas de ellas, confirmando que todas son necesarias y aportan valor real a la prediccion.

###Interpretación de los Coeficientes del Modelo para entender el impacto real de nuestras variables en el mercado, interpretamos los coeficientes de la funcion estimada:

Modelo de Regresión Final y Función Estimada \[\text{Intención} = 2.8781 + 0.7314(\text{Satisfacción}) - 0.4993(\text{Percepción}) + 0.8149(\text{Muestra Gratis}) + 0.2419(\text{Conocimiento})\]

  • Intercepto (2.8781): Es el valor base de la intención de compra cuando todas las demás variables son cero.

  • Satisfacción (0.7314): Por cada punto adicional en la satisfacción del cliente, la intención de compra aumenta en 0.73 unidades, manteniendo las demás variables constantes. Es el predictor con mayor impacto positivo.

  • Percepción (-0.4993): Curiosamente, en este modelo, un aumento en la percepción (quizás por expectativas muy altas no cumplidas) tiende a reducir ligeramente la intención de compra.

  • Muestra Gratis (0.8149): Si el cliente recibe una muestra gratis (valor = 1), su intención de compra sube en 0.81 unidades en comparación con quien no la recibe.

  • Conocimiento (0.2419): Por cada unidad de incremento en el conocimiento de la marca, la intención de compra sube 0.24 unidades.

6. METODO DE ELIMINACION HACIA ATRAS

PASO 1 primero se prueba todas las variable

m_full <- lm(intencion_compra ~ satisfaccion + percepcion + ingreso + conocimiento + muestra_gratis + fidelidad, data = datos)
summary(m_full)
## 
## Call:
## lm(formula = intencion_compra ~ satisfaccion + percepcion + ingreso + 
##     conocimiento + muestra_gratis + fidelidad, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7348 -0.6984  0.1021  0.7810  3.0216 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.97623    0.98503   3.021  0.00298 ** 
## satisfaccion    0.72547    0.14118   5.139 8.98e-07 ***
## percepcion     -0.50185    0.06370  -7.879 7.84e-13 ***
## ingreso        -0.05546    0.07226  -0.768  0.44401    
## conocimiento    0.27267    0.19949   1.367  0.17385    
## muestra_gratis  0.82562    0.19487   4.237 4.06e-05 ***
## fidelidad2     -0.02297    0.46414  -0.049  0.96060    
## fidelidad3     -0.12139    0.71417  -0.170  0.86527    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.18 on 142 degrees of freedom
## Multiple R-squared:  0.6118, Adjusted R-squared:  0.5927 
## F-statistic: 31.98 on 7 and 142 DF,  p-value: < 2.2e-16
AIC(m_full)
## [1] 485.1995

PASO 2 se eliminamos la variable fidelidad

m_1<- lm(intencion_compra ~ satisfaccion + percepcion + ingreso + conocimiento + muestra_gratis, data = datos)
summary(m_1)
## 
## Call:
## lm(formula = intencion_compra ~ satisfaccion + percepcion + ingreso + 
##     conocimiento + muestra_gratis, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7800 -0.7019  0.1132  0.7880  3.0120 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     3.09109    0.85350   3.622 0.000405 ***
## satisfaccion    0.72649    0.14000   5.189 7.05e-07 ***
## percepcion     -0.50013    0.06266  -7.981 4.16e-13 ***
## ingreso        -0.05331    0.07075  -0.754 0.452378    
## conocimiento    0.24484    0.14759   1.659 0.099311 .  
## muestra_gratis  0.82517    0.19342   4.266 3.58e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.172 on 144 degrees of freedom
## Multiple R-squared:  0.6117, Adjusted R-squared:  0.5982 
## F-statistic: 45.36 on 5 and 144 DF,  p-value: < 2.2e-16
AIC(m_1)
## [1] 481.2683

PASO 3 eliminamos la variable ingreso

m_2<- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis, data = datos)
summary(m_2)
## 
## Call:
## lm(formula = intencion_compra ~ satisfaccion + percepcion + muestra_gratis, 
##     data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8580 -0.6990  0.1883  0.7575  3.0545 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     3.11752    0.79539   3.919 0.000136 ***
## satisfaccion    0.91305    0.08573  10.650  < 2e-16 ***
## percepcion     -0.50620    0.06278  -8.063 2.47e-13 ***
## muestra_gratis  0.80835    0.19372   4.173 5.15e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.177 on 146 degrees of freedom
## Multiple R-squared:  0.6029, Adjusted R-squared:  0.5947 
## F-statistic: 73.88 on 3 and 146 DF,  p-value: < 2.2e-16
AIC(m_2)
## [1] 480.6225

PASO 4 eliminamos la variable conocimiento

m_3<- lm(intencion_compra ~ satisfaccion + percepcion + ingreso, data = datos)
summary(m_3)
## 
## Call:
## lm(formula = intencion_compra ~ satisfaccion + percepcion + ingreso, 
##     data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1954 -0.7647  0.1542  0.8147  3.4845 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.60675    0.89145   4.046 8.42e-05 ***
## satisfaccion  0.90642    0.09073   9.991  < 2e-16 ***
## percepcion   -0.50231    0.06639  -7.566 3.97e-12 ***
## ingreso      -0.02934    0.07493  -0.392    0.696    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.245 on 146 degrees of freedom
## Multiple R-squared:  0.556,  Adjusted R-squared:  0.5469 
## F-statistic: 60.94 on 3 and 146 DF,  p-value: < 2.2e-16
AIC(m_3)
## [1] 497.3648

SEGUN EL MODELO DE ELIMINACION HACIA ATRAS EL MEJOR MODELO CONSIDERA LAS VARIABLE INDEPENDIENTES: SATISFACCION, PERCEPCION,MUESTRA GRATIS Y CONOCIMIENTO

Modelo de Regresión Final y Función Estimada \[\text{Intención} = 2.8781 + 0.7314(\text{Satisfacción}) - 0.4993(\text{Percepción}) + 0.8149(\text{Muestra Gratis}) + 0.2419(\text{Conocimiento})\]

7. ESTIMACIÓN FINAL (PREDICCIÓN)

Creamos el perfil del consumidor ingresando sus valores exactos

PASO1 CARGAMOS LA BASE DE DATOS PRIMERO (Para que no salga error)

datos <- read.csv("C:/Users/HOME/Downloads/intencion.csv", sep=",")
datos$fidelidad <- as.factor(datos$fidelidad)

PASO 2 INGRESAMOS LAS VARIABLES

modelo_final <- lm(intencion_compra ~ satisfaccion + percepcion + muestra_gratis + conocimiento, data = datos)

PASO 3 CREAMOS EL PERFIL DEL CLIENTE

perfil_cliente <- data.frame(
  satisfaccion = 8,
  percepcion = 6,
  ingreso = 5,
  conocimiento = 7,
  muestra_gratis = 1,
  fidelidad = factor(3, levels = c(1, 2, 3))
)

PASO 4 CALCULAMOS LAS PREDICCIONES

library(knitr)
library(kableExtra)

prediccion_puntual <- predict(modelo_final, newdata = perfil_cliente)
pred_ic <- predict(modelo_final, newdata = perfil_cliente, interval = "confidence", level = 0.95)
pred_ip <- predict(modelo_final, newdata = perfil_cliente, interval = "prediction", level = 0.95)

#IMPRESION DE RESULTADOS

knitr::kable(prediccion_puntual, caption = "TABLA 1: PRONOSTICO PUNTUAL DE INTENCION DE COMPRA")
TABLA 1: PRONOSTICO PUNTUAL DE INTENCION DE COMPRA
x
8.241898
knitr::kable(pred_ic, caption = "TABLA 2: INTERVALO DE CONFIANZA (media del segmento)")
TABLA 2: INTERVALO DE CONFIANZA (media del segmento)
fit lwr upr
8.241898 7.93615 8.547646
knitr::kable(pred_ip,caption = "TABLA 3: INTERVALO DE PREDICCION(valor individual)")
TABLA 3: INTERVALO DE PREDICCION(valor individual)
fit lwr upr
8.241898 5.908084 10.57571

Interpretación y Conclusión:

Tras procesar los datos, el modelo arroja una intención de compra estimada de 8.24.

*Precisión del Segmento: El intervalo de confianza nos indica que el promedio de intención para clientes con este perfil es bastante alto y estable.

*Riesgo Individual: El intervalo de predicción muestra un rango más amplio (de 5.8 a 10.6), lo cual es normal al intentar predecir el comportamiento de una sola persona, pero aun así se mantiene por encima de la media de la escala.

En conclusión, el modelo es altamente efectivo para identificar clientes con gran potencial de compra, validando que las variables de satisfacción y conocimiento de marca son los motores principales del negocio.