Comparar tendencias en la estrategia de precios por fabricante según el impacto de características técnicas, con el fin de identificar patrones diferenciadores.

Comenzamos leyendo el fichero de datos y viendo cómo este está configurado.

portatiles = read.csv("/Users/maralislu/Desktop/objetivo3/portatiles.csv", sep=';')
head(portatiles)
##                                  Nombre Marca         SO RAM DiscoDuroGB
## 1   Acer Aspire Go 15 Portátil AG15-42P  ACER Windows 11   8         512
## 2                          Acer A315-59  ACER    FreeDOS  16         512
## 3       Acer Aspire 5 Portátil  A515-57  ACER Windows 11  16        1024
## 4       Acer Aspire 3 Portátil  A317-54  ACER Windows 11   8         512
## 5                 Acer Aspire 3 A315-59  ACER     Sin SO  16        1024
## 6 Acer Nitro 16 Portátil gaming AN16-73  ACER Windows 11  16        1024
##   ProcesadorCPU NúcleosCPU VelocidadMaxProcesador                     GPU
## 1   AMD Ryzen 5          6                    4,3     AMD Radeon Graphics
## 2 Intel Core i7         10                    4,7            Intel Iris X
## 3 Intel Core i5          8                      2      Intel UHD Graphics
## 4 Intel Core i5         10                    3,6            Intel Iris X
## 5 Intel Core i5         10                    4,4      Intel UHD Graphics
## 6 Intel Core i7         16                    2,2 NVIDIA GeForce RTX 4050
##   NúcleosGPU Pantalla Peso Tactil           Web Precio RankingMarca
## 1         NA     15,6 1,78      0          Acer    599          346
## 2         NA     15,6  1,7      0    Mediamarkt    627          346
## 3         NA     15,6 1,76      0          Acer    899          346
## 4         NA     17,3 2,23      0          Acer    799          346
## 5         NA     15,6 1,82      0 PcComponentes    602          346
## 6         NA       16 2,45      0          Acer   1499          346
str(portatiles)
## 'data.frame':    321 obs. of  16 variables:
##  $ Nombre                : chr  "Acer Aspire Go 15 Portátil AG15-42P" "Acer A315-59" "Acer Aspire 5 Portátil  A515-57" "Acer Aspire 3 Portátil  A317-54" ...
##  $ Marca                 : chr  "ACER" "ACER" "ACER" "ACER" ...
##  $ SO                    : chr  "Windows 11" "FreeDOS" "Windows 11" "Windows 11" ...
##  $ RAM                   : int  8 16 16 8 16 16 16 16 16 16 ...
##  $ DiscoDuroGB           : int  512 512 1024 512 1024 1024 1024 1024 512 1024 ...
##  $ ProcesadorCPU         : chr  "AMD Ryzen 5" "Intel Core i7" "Intel Core i5" "Intel Core i5" ...
##  $ NúcleosCPU            : int  6 10 8 10 10 16 10 NA 12 10 ...
##  $ VelocidadMaxProcesador: chr  "4,3" "4,7" "2" "3,6" ...
##  $ GPU                   : chr  "AMD Radeon Graphics" "Intel Iris X" "Intel UHD Graphics" "Intel Iris X" ...
##  $ NúcleosGPU            : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Pantalla              : chr  "15,6" "15,6" "15,6" "17,3" ...
##  $ Peso                  : chr  "1,78" "1,7" "1,76" "2,23" ...
##  $ Tactil                : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Web                   : chr  "Acer" "Mediamarkt" "Acer" "Acer" ...
##  $ Precio                : int  599 627 899 799 602 1499 949 1099 949 1299 ...
##  $ RankingMarca          : int  346 346 346 346 346 346 346 346 346 346 ...

Vemos que hay variables numéricas que están en formato texto, así que lo modificamos para luego poder utilizarlas en el modelo que haremos. Para ello, si los valores tienen comas como separador decimal, lo sustituiremos por puntos. Además, la variable Táctil será booleana.

portatiles$VelocidadMaxProcesador <- gsub(",", ".", portatiles$VelocidadMaxProcesador)
portatiles$VelocidadMaxProcesador <- as.numeric(portatiles$VelocidadMaxProcesador)

portatiles$Pantalla <- gsub(",", ".", portatiles$Pantalla)
portatiles$Pantalla <- as.numeric(portatiles$Pantalla)

portatiles$Peso <- gsub(",", ".", portatiles$Peso)
portatiles$Peso <- as.numeric(portatiles$Peso)

portatiles$Tactil <- as.logical(portatiles$Tactil)

Como nuestro objetivo comparará entre fabricantes, primero vamos a crear subdataframes para ver cuántos datos tenemos de cada marca.

lista_marcas <- split(portatiles, portatiles$Marca)

datos_Apple <- lista_marcas[["Apple"]] # ranking 1
datos_DELL <- lista_marcas[["DELL"]] # ranking 47
datos_HP <- lista_marcas[["HP"]] # ranking 80

Finalmente nos quedaremos con las marcas de Apple, DELL y HP, posicionadas en el ránking en los puestos número 1, 47 y 80, respectivamente. Estas marcas son las que mayor representación tienen en la base de datos original.

Modelo de regresión lineal

Vamos a utilizar regresión lineal múltiple por ser un método adecuado para analizar el efecto individual de varias variables técnicas sobre el precio de los ordenadores. Este enfoque permite interpretar con claridad cómo influye cada factor en el precio, y comparar estas relaciones entre marcas.

No será necesario normalizar los datos porque queremos interpretar el efecto real (euros por GB, euros por kg, etc.). Asimismo, cabe destacar que los datos no han sido divididos en un conjunto de entrenamiento y otro de testeo por el bajo número de ordenadores disponibles para cada marca.

Para determinar qué variables utilizaremos en el modelo, vamos a sacar el resumen de la base de datos original.

summary(portatiles)
##     Nombre             Marca                SO                 RAM        
##  Length:321         Length:321         Length:321         Min.   :  4.00  
##  Class :character   Class :character   Class :character   1st Qu.: 16.00  
##  Mode  :character   Mode  :character   Mode  :character   Median : 16.00  
##                                                           Mean   : 23.86  
##                                                           3rd Qu.: 32.00  
##                                                           Max.   :128.00  
##                                                                           
##   DiscoDuroGB     ProcesadorCPU        NúcleosCPU   VelocidadMaxProcesador
##  Min.   : 128.0   Length:321         Min.   : 1.0   Min.   :1.000         
##  1st Qu.: 512.0   Class :character   1st Qu.:10.0   1st Qu.:3.900         
##  Median : 512.0   Mode  :character   Median :10.0   Median :4.500         
##  Mean   : 972.2                      Mean   :11.6   Mean   :4.379         
##  3rd Qu.:1024.0                      3rd Qu.:14.0   3rd Qu.:4.900         
##  Max.   :8192.0                      Max.   :24.0   Max.   :5.800         
##                                      NA's   :17                           
##      GPU              NúcleosGPU       Pantalla          Peso      
##  Length:321         Min.   : 8.00   Min.   :12.40   Min.   :0.895  
##  Class :character   1st Qu.:10.00   1st Qu.:14.00   1st Qu.:1.550  
##  Mode  :character   Median :10.00   Median :15.60   Median :1.590  
##                     Mean   :16.06   Mean   :15.03   Mean   :1.725  
##                     3rd Qu.:20.00   3rd Qu.:15.60   3rd Qu.:1.810  
##                     Max.   :40.00   Max.   :18.00   Max.   :3.600  
##                     NA's   :212                                    
##    Tactil            Web                Precio      RankingMarca
##  Mode :logical   Length:321         Min.   : 202   Min.   :  1  
##  FALSE:293       Class :character   1st Qu.: 799   1st Qu.:  1  
##  TRUE :28        Mode  :character   Median :1591   Median : 47  
##                                     Mean   :1873   Mean   :100  
##                                     3rd Qu.:2344   3rd Qu.:136  
##                                     Max.   :8574   Max.   :526  
##                                                    NA's   :29

En este caso, escogemos las variables numéricas RAM, DiscoDuroGB, NúcleosCPU, VelocidadMaxProcesador, Pantalla y Peso, y evaluaremos el modelo inicialmente con estas variables.

Por tanto, nuestra ecuación será:

Precio = β0 + β1RAM + β2DiscoDuroGB + β3NúcleosCPU + β4VelocidadMaxProcesador + β5Pantalla + β6Peso

Habrá que tener en cuenta que la variable Peso es un conjunto de varias, ya que un portátil pesa más por el conjunto de todos sus componentes.

Este modelo asume que cada variable afecta al precio de forma independiente de las demás. Por ahora no añadiremos interacciones porque podría aumentar el riesgo de sobreajuste, especialmente al no tener muchas observaciones. Lo que podría dificultar la interpretación del modelo.

DATOS APPLE

modelo_apple <- lm(Precio ~ RAM + DiscoDuroGB + NúcleosCPU + VelocidadMaxProcesador + Pantalla + Peso, data = datos_Apple)

summary(modelo_apple)
## 
## Call:
## lm(formula = Precio ~ RAM + DiscoDuroGB + NúcleosCPU + VelocidadMaxProcesador + 
##     Pantalla + Peso, data = datos_Apple)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -556.23 -167.99    2.13  146.77  614.05 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            -1.684e+03  1.316e+03  -1.279   0.2046    
## RAM                     2.193e+01  1.604e+00  13.666  < 2e-16 ***
## DiscoDuroGB             4.394e-01  1.809e-02  24.285  < 2e-16 ***
## NúcleosCPU              1.711e+02  3.086e+01   5.545 3.58e-07 ***
## VelocidadMaxProcesador  3.530e+02  2.621e+02   1.347   0.1818    
## Pantalla               -1.459e+02  7.240e+01  -2.016   0.0471 *  
## Peso                    1.289e+03  3.027e+02   4.257 5.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 252.3 on 81 degrees of freedom
## Multiple R-squared:  0.9773, Adjusted R-squared:  0.9756 
## F-statistic: 581.1 on 6 and 81 DF,  p-value: < 2.2e-16

En este caso, todas la variables son significativas excepto VelocidadMaxProcesador y Pantalla, que como está en el umbral, vamos a ver las correlaciones entre las variables seleccionadas para determinar qué hacemos con esa variable.

cor(datos_Apple[, c("RAM", "DiscoDuroGB", "NúcleosCPU", "VelocidadMaxProcesador", "Pantalla", "Peso")], use = "complete.obs")
##                                RAM DiscoDuroGB  NúcleosCPU
## RAM                     1.00000000  0.44765659  0.69718711
## DiscoDuroGB             0.44765659  1.00000000  0.52222450
## NúcleosCPU              0.69718711  0.52222450  1.00000000
## VelocidadMaxProcesador  0.57439228  0.46128340  0.89641674
## Pantalla               -0.08869287 -0.15885778 -0.02820722
## Peso                    0.18860865  0.07255581  0.44237283
##                        VelocidadMaxProcesador    Pantalla       Peso
## RAM                                0.57439228 -0.08869287 0.18860865
## DiscoDuroGB                        0.46128340 -0.15885778 0.07255581
## NúcleosCPU                         0.89641674 -0.02820722 0.44237283
## VelocidadMaxProcesador             1.00000000 -0.08740651 0.47573133
## Pantalla                          -0.08740651  1.00000000 0.68604316
## Peso                               0.47573133  0.68604316 1.00000000

Como vemos, Pantalla está altamente correlacionada (0.686) con Peso, por lo que vamos a eliminar tanto esa variable como VelocidadMaxProcesador.

modelo2_apple <- lm(Precio ~ RAM + DiscoDuroGB + NúcleosCPU + Peso, data = datos_Apple)

summary(modelo2_apple)
## 
## Call:
## lm(formula = Precio ~ RAM + DiscoDuroGB + NúcleosCPU + Peso, 
##     data = datos_Apple)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -575.15 -155.16  -40.36  111.61  829.94 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.296e+03  2.444e+02  -9.395 1.06e-14 ***
## RAM          2.131e+01  1.674e+00  12.730  < 2e-16 ***
## DiscoDuroGB  4.413e-01  1.903e-02  23.190  < 2e-16 ***
## NúcleosCPU   2.270e+02  2.015e+01  11.267  < 2e-16 ***
## Peso         8.659e+02  1.775e+02   4.879 5.08e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 265.5 on 83 degrees of freedom
## Multiple R-squared:  0.9742, Adjusted R-squared:  0.973 
## F-statistic: 784.4 on 4 and 83 DF,  p-value: < 2.2e-16

Aunque el modelo más complejo ha alcanzado un R² ligeramente superior (0.9773 vs 0.9742), las diferencias son mínimas y se ha optado por usar el modelo más sencillo, que también mantiene un R² ajustado alto. De esta froma, minimizamos le riesgo de sobreajuste y simplificamos la interpretabilidad.

Vamos a evaluar el modelo con diferentes gráficos.

# Gráfico de residuos vs valores ajustados
plot(modelo2_apple$fitted.values,
     resid(modelo2_apple),
     xlab = "Valores ajustados",
     ylab = "Residuos",
     main = "Residuos vs Valores ajustados")
abline(h = 0, col = "red")

Gráfico de residuos vs valores ajustados: El gráfico muestra un patrón de dispersión que tiende a ensancharse en los extremos, especialmente en los valores altos de precio. Esto podría deberse a que en el rango de precios elevados (superiores a 4000 euros), el número de observaciones es muy limitado, como se aprecia en el histograma de precios de Apple, donde la mayor densidad de datos se encuentra entre 1500 y 4000 euros, disminuyendo progresivamente a medida que el precio aumenta.

hist(datos_Apple$Precio, main = "Distribución de precios Apple", xlab = "Precio", col = "skyblue", breaks = 15)

# Histograma de residuos
hist(resid(modelo2_apple), main = "Histograma de residuos", xlab = "Residuos", col = "lightblue", breaks = 10)

Histograma de residuos: Los residuos siguen una distribución aproximadamente simétrica. Hay una leve asimetría positiva, pero no crítica. Además, confirma que los errores del modelo están centrados en cero.

# QQ-plot para verificar normalidad
qqnorm(resid(modelo2_apple))
qqline(resid(modelo2_apple), col = "red")

Gráfico Q-Q: La mayoría de los puntos siguen bastante bien la línea teórica de normalidad. Se observan ligeros desvíos en los extremos, lo que indica posibles outliers leves, pero el ajuste global es aceptable.

DATOS DELL

Continuaremos con los datos de Dell siguiendo la misma ecuación que hemos utilizado finalmente con Apple, aunque observaremos las correlaciones entre las variables inicialmente seleccionadas por si hubiese mucha disconformidad con los datos de Apple.

Precio = β0 + β1RAM + β2DiscoDuroGB + β3NúcleosCPU + β4Peso

cor(datos_DELL[, c("RAM", "DiscoDuroGB", "NúcleosCPU", "VelocidadMaxProcesador", "Pantalla", "Peso")], use = "complete.obs")
##                                RAM DiscoDuroGB NúcleosCPU
## RAM                     1.00000000  0.17521008 0.32199930
## DiscoDuroGB             0.17521008  1.00000000 0.01889366
## NúcleosCPU              0.32199930  0.01889366 1.00000000
## VelocidadMaxProcesador  0.18914970  0.04884229 0.64792828
## Pantalla               -0.32531888  0.05003930 0.08919426
## Peso                   -0.06114634  0.04319127 0.54918182
##                        VelocidadMaxProcesador    Pantalla        Peso
## RAM                                0.18914970 -0.32531888 -0.06114634
## DiscoDuroGB                        0.04884229  0.05003930  0.04319127
## NúcleosCPU                         0.64792828  0.08919426  0.54918182
## VelocidadMaxProcesador             1.00000000  0.06730540  0.32735865
## Pantalla                           0.06730540  1.00000000  0.77910987
## Peso                               0.32735865  0.77910987  1.00000000
modelo_dell <- lm(Precio ~ RAM + DiscoDuroGB + NúcleosCPU + Peso, data = datos_DELL)

summary(modelo_dell)
## 
## Call:
## lm(formula = Precio ~ RAM + DiscoDuroGB + NúcleosCPU + Peso, 
##     data = datos_DELL)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -429.06  -58.41   -5.29   51.60  722.54 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -290.86921  234.33918  -1.241   0.2206    
## RAM           12.63500    1.78206   7.090 5.35e-09 ***
## DiscoDuroGB    0.21670    0.04304   5.035 7.15e-06 ***
## NúcleosCPU   157.74243   11.04110  14.287  < 2e-16 ***
## Peso        -345.68796  144.25011  -2.396   0.0205 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 175 on 48 degrees of freedom
## Multiple R-squared:  0.9147, Adjusted R-squared:  0.9076 
## F-statistic: 128.7 on 4 and 48 DF,  p-value: < 2.2e-16

En este caso, los resultados muestran un R² ajustado de 0,9076, lo que significa que este modelo explica aproximadamente el 90,8 % de la variabilidad observada en los precios, indicando un ajuste muy bueno. El estadístico F del modelo es 128,7 con un p-valor < 2.2e-16, confirmando que, en conjunto, los predictores seleccionados contribuyen significativamente a explicar la variable dependiente.

Analizando los coeficientes beta, se observa que todas las variables son estadísticamente significativas (p < 0,05). En concreto, la RAM, el tamaño del disco duro y el número de núcleos de CPU tienen un impacto positivo sobre el precio: a medida que aumentan, el precio del ordenador también se incrementa. Curiosamente, el peso tiene un coeficiente negativo, lo que sugiere que, en Dell, los modelos más pesados tienden a ser menos costosos, posiblemente porque los equipos más ligeros incorporan componentes premium o están orientados a segmentos de mayor precio.

# Gráfico de residuos vs valores ajustados
plot(modelo_dell$fitted.values,
     resid(modelo_dell),
     xlab = "Valores ajustados",
     ylab = "Residuos",
     main = "Residuos vs Valores ajustados")
abline(h = 0, col = "red")

Gráfico de residuos vs valores ajustados: La nube de puntos está centrada en torno a 0, lo cual es bueno. Sin embargo, se ve una mayor dispersión en valores bajos, especialmente los menores a 1500 €. Esto sugiere una leve heterocedasticidad, donde el modelo es menos preciso en portátiles más baratos.

# Histograma de residuos
hist(resid(modelo_dell),
     main = "Histograma de residuos",
     xlab = "Residuos",
     col = "lightblue", breaks = 10)

Histograma de residuos: Se muestra una distribución aproximadamente simétrica centrada en torno a cero, lo que es un buen indicio para cumplir con el supuesto de normalidad de los errores en regresión lineal. Sin embargo, se observa que los residuos negativos son algo más extendidos que los positivos, lo que sugiere una ligera asimetría no demasiado marcada.

# QQ-plot para verificar normalidad
qqnorm(resid(modelo_dell))
qqline(resid(modelo_dell), col = "red")

Gráfico Q-Q: Los puntos siguen bien la línea teórica en el centro, aunque hay desviaciones en los extremos, tanto por debajo como por arriba.

DATOS HP

Al igual que antes, vamos a continuar con la misma ecuación que las de las dos marcas anteriores

Precio = β0 + β1RAM + β2DiscoDuroGB + β3NúcleosCPU + β4Peso

cor(datos_HP[, c("RAM", "DiscoDuroGB", "NúcleosCPU", "VelocidadMaxProcesador", "Pantalla", "Peso")], use = "complete.obs")
##                                RAM DiscoDuroGB NúcleosCPU
## RAM                     1.00000000   0.5255774  0.4141795
## DiscoDuroGB             0.52557735   1.0000000  0.1678346
## NúcleosCPU              0.41417946   0.1678346  1.0000000
## VelocidadMaxProcesador -0.08742684   0.1737001  0.2856287
## Pantalla               -0.34286376  -0.2101011 -0.3912238
## Peso                   -0.24307379  -0.2098648 -0.1071546
##                        VelocidadMaxProcesador   Pantalla       Peso
## RAM                               -0.08742684 -0.3428638 -0.2430738
## DiscoDuroGB                        0.17370005 -0.2101011 -0.2098648
## NúcleosCPU                         0.28562866 -0.3912238 -0.1071546
## VelocidadMaxProcesador             1.00000000  0.1768520  0.1693666
## Pantalla                           0.17685202  1.0000000  0.8207514
## Peso                               0.16936656  0.8207514  1.0000000

En este caso, la correlación entre Peso y Pantalla es todavía mayor si la comparamos con las otras marcas.

modelo_hp <- lm(Precio ~ RAM + DiscoDuroGB + NúcleosCPU + Peso, data = datos_HP)

summary(modelo_hp)
## 
## Call:
## lm(formula = Precio ~ RAM + DiscoDuroGB + NúcleosCPU + Peso, 
##     data = datos_HP)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -200.41 -116.95  -42.72   81.35  349.51 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -47.363519 504.656617  -0.094 0.925793    
## RAM          29.823492   7.005826   4.257 0.000161 ***
## DiscoDuroGB  -0.006756   0.101627  -0.066 0.947396    
## NúcleosCPU   26.059896  10.281189   2.535 0.016179 *  
## Peso          7.837645 296.908516   0.026 0.979099    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 149.6 on 33 degrees of freedom
## Multiple R-squared:  0.6022, Adjusted R-squared:  0.554 
## F-statistic: 12.49 on 4 and 33 DF,  p-value: 2.708e-06

En esta situación, los resultados muestran un R² ajustado de 0,554, y aunque se han explorado diversas configuraciones de modelos (incluyendo transformaciones logarítmicas o interacciones), el coeficiente de determinación R² no ha superado en nigún momento el 65%. Esto refleja que, en el caso de los ordenadores HP, las variables técnicas disponibles explican una proporción limitada del precio final, dejando una proporción importante sin justificar. Además, una de las principales limitaciones encontradas en el análisis de esta marca es la reducida cantidad de datos disponibles ya que el conjunto incluye únicamente 38 observaciones.

# Gráfico de residuos vs valores ajustados
plot(modelo_hp$fitted.values,
     resid(modelo_hp),
     xlab = "Valores ajustados",
     ylab = "Residuos",
     main = "Residuos vs Valores ajustados")
abline(h = 0, col = "red")

Gráfico de residuos vs valores ajustados: En este gráfico vemos que los residuos se distribuyen de forma bastante concentrada alrededor de los valores ajustados medios, mientras que en los extremos hay pocos puntos y una mayor dispersión. Esto sugiere que el modelo tiene más dificultad para predecir correctamente los precios más bajos o más altos, posiblemente porque hay pocos datos en esas franjas para entrenar bien el ajuste.

# Histograma de residuos
hist(resid(modelo_hp),
     main = "Histograma de residuos",
     xlab = "Residuos",
     col = "lightblue", breaks = 10)

Histograma de residuos: Se muestra que la mayoría de los residuos están agrupados cerca de cero, lo que indica que para muchos casos que el modelo predice razonablemente bien. Sin embargo, hay una cola más larga hacia valores positivos, lo que indica que en algunos casos el modelo subestima el precio real.

# QQ-plot para verificar normalidad
qqnorm(resid(modelo_hp))
qqline(resid(modelo_hp), col = "red")

Gráfico Q-Q: Los puntos de la parte central siguen bastante bien la línea recta, lo cual indica que en general los residuos cumplen la normalidad. Sin embargo, los puntos se separan de la línea en los extremos.

CONCLUSIONES

Precio = β0 + β1RAM + β2DiscoDuroGB + β3NúcleosCPU + β4Peso

VARIABLES APPLE DELL HP
RAM 21,31 12,64 29,82
DiscoDuroGB 0,44 0,22 -0,006
NúcleosCPU 227 157,74 26,06
Peso 865,9 -345,69 7,84

Tras el análisis comparativo de las estrategias de precios por fabricante, considerando el impacto de variables técnicas como RAM, disco duro, número de núcleos de CPU y peso, se han identificado patrones diferenciadores relevantes entre Apple, Dell y HP.

En primer lugar, Apple muestra una relación muy clara entre las características técnicas y el precio, con un modelo que explica aproximadamente el 97,4 % de la variabilidad (R² ajustado). Las variables con mayor impacto son el número de núcleos de CPU y la memoria RAM, seguidas por el peso, que tiene un coeficiente positivo, indicando que los modelos más pesados tienden a ser más caros, posiblemente porque incorporarán componentes de gama alta. Este ajuste tan preciso sugiere que Apple aplica una estrategia de precios estrechamente alineada con las mejoras técnicas.

Por otro lado, Dell también presenta un modelo sólido, con un R² ajustado de 90,8 %, pero destaca un comportamiento interesante: el peso tiene un coeficiente negativo, lo que sugiere que los portátiles más ligeros son más caros. Esto podría deberse a que Dell posiciona sus modelos premium en el segmento ultraligero, donde los materiales de calidad elevan los precios.

En contraste, HP muestra una situación muy diferente. El modelo obtenido solo logra explicar cerca del 55,4 % de la variabilidad, revelando que las variables técnicas analizadas tienen un impacto limitado en los precios finales. Esto puede deberse a una estrategia de precios más heterogénea, donde factores como diseño, marketing, acuerdos comerciales o segmentación del mercado (profesional, educativo, consumo) juegan un papel crucial no capturado por las variables técnicas analizadas. También influye la menor cantidad de datos disponibles, lo que limita la robustez del modelo.

En resumen, mientras que Apple y Dell reflejan estrategias de precios bastante predecibles y alineadas con mejoras técnicas, HP muestra una dinámica más compleja que requeriría la inclusión de variables adicionales para ser correctamente modelada. Estos resultados no solo ayudan a entender las diferencias de mercado entre fabricantes, sino que también abren la puerta a estudios futuros donde se incluyan factores cualitativos y comerciales que podrían explicar mejor las variaciones en el precio final.