Carga de datos y analisis inicial

Cargo la base de datos propia para realizar el análisis requerido en el foro 2 de la asignatura 7. No se compartirá dicha base de datos excepto con el profesor si lo requiriese por motivos de confidencialidad.

datos=read.csv("Book1.csv", header = TRUE, na.strings = "")
str(datos)
## 'data.frame':    1260 obs. of  14 variables:
##  $ Type     : chr  "CRB" "CRB" "CRB" "CRB" ...
##  $ Flange   : chr  "NO" "NO" "NO" "NO" ...
##  $ Thread   : chr  "YES" "YES" "YES" "YES" ...
##  $ ID       : num  44.5 44.5 44.5 44.5 101 101 101 48 48 48 ...
##  $ OD       : num  80 80 80 80 126 ...
##  $ Width    : chr  "30.5" "30.5" "30.5" "30.5" ...
##  $ OR       : chr  "Material 3" "Material 3" "Material 3" "Material 3" ...
##  $ IR       : chr  "Material 4" "Material 4" "Material 4" "Material 4" ...
##  $ Cage     : chr  "Material 9" "Material 9" "Material 9" "Material 9" ...
##  $ numberZ  : chr  "20" "20" "20" "20" ...
##  $ ZMaterial: chr  "Material 11" "Material 11" "Material 11" "Material 11" ...
##  $ Year     : int  2018 2018 2018 2018 2022 2023 2023 2018 2018 2018 ...
##  $ Quantity : int  20 42 32 10 34 26 34 50 30 20 ...
##  $ Cost     : int  1703 1443 1512 2195 1580 1686 1611 494 575 675 ...
datos=datos[1:1260,]
datos$Width=as.numeric((datos$Width))
## Warning: NAs introduced by coercion
datos$Cost=as.numeric((datos$Cost))
datos$Type=as.factor((datos$Type))
datos[657,"Width"]=11
str(datos)
## 'data.frame':    1260 obs. of  14 variables:
##  $ Type     : Factor w/ 11 levels "ACBB","CRB","CRB - CAGE+RE",..: 2 2 2 2 11 11 11 4 4 4 ...
##  $ Flange   : chr  "NO" "NO" "NO" "NO" ...
##  $ Thread   : chr  "YES" "YES" "YES" "YES" ...
##  $ ID       : num  44.5 44.5 44.5 44.5 101 101 101 48 48 48 ...
##  $ OD       : num  80 80 80 80 126 ...
##  $ Width    : num  30.5 30.5 30.5 30.5 16 16 16 13.8 13.8 13.8 ...
##  $ OR       : chr  "Material 3" "Material 3" "Material 3" "Material 3" ...
##  $ IR       : chr  "Material 4" "Material 4" "Material 4" "Material 4" ...
##  $ Cage     : chr  "Material 9" "Material 9" "Material 9" "Material 9" ...
##  $ numberZ  : chr  "20" "20" "20" "20" ...
##  $ ZMaterial: chr  "Material 11" "Material 11" "Material 11" "Material 11" ...
##  $ Year     : int  2018 2018 2018 2018 2022 2023 2023 2018 2018 2018 ...
##  $ Quantity : int  20 42 32 10 34 26 34 50 30 20 ...
##  $ Cost     : num  1703 1443 1512 2195 1580 ...
unique_values <- lapply(datos, unique)
unique_values
## $Type
##  [1] CRB              ThACBB           CRB - IR         CRB - OR+CAGE+RE
##  [5] CRB - CAGE+RE    ACBB             Std Modified BB  DRACBB          
##  [9] Std Modified CRB QJ               DGBB            
## 11 Levels: ACBB CRB CRB - CAGE+RE CRB - IR CRB - OR+CAGE+RE DGBB DRACBB ... ThACBB
## 
## $Flange
## [1] "NO"  "YES"
## 
## $Thread
## [1] "YES" "NO" 
## 
## $ID
##   [1]  44.500 101.000  48.000  67.900 118.500  26.000  67.430  20.000  50.000
##  [10]  35.500  42.000  35.000  57.000  29.000  40.000  32.000  43.300  52.080
##  [19]  29.200 140.250  55.000  38.000  28.000  39.500  34.000  25.000  39.000
##  [28]  45.000  28.300  36.000  10.500  46.500  33.100  58.200  90.000 100.000
##  [37]  57.700  78.700  53.700 140.500  38.800  97.700  64.000  70.000  66.000
##  [46] 106.000  52.500  50.500 134.000 138.000  98.000  97.000  91.000  62.000
##  [55]  30.700  99.400  15.000  66.300 150.000 118.700  74.000  94.000 125.400
##  [64]  65.000  61.800  54.000  95.000  75.000  81.000  89.000  17.000  48.800
##  [73]  85.000  69.900 126.700 155.000  32.500  52.800  53.000  46.000  60.500
##  [82]  61.000  92.121  55.700 125.000 110.000  76.000  87.800  37.975  36.225
##  [91]  57.600  33.600  51.500  50.400  51.750  45.500  30.000 120.600  33.000
## [100]  60.000  41.000 127.600 191.000 139.500 107.600 112.600
## 
## $OD
##   [1]  80.00 125.50  64.00 130.50  36.50  77.00  35.00  90.00  42.40  52.40
##  [11]  45.00  45.40  68.50  39.37  68.00  40.00  47.00  52.00  62.00  55.00
##  [21]  42.20 156.60 159.25 100.00  44.00  50.00  70.00  58.20 173.00 110.00
##  [31]  32.00 120.00 101.00 150.00 106.00  71.00  61.80  83.45  97.70  42.00
##  [41]  60.00  86.00  59.00 146.90 151.00 116.00 112.00 111.00 104.00  54.70
##  [51]  38.00  28.00  83.40 157.20 126.00  97.80 137.40  75.00  56.00  61.00
##  [61]  30.00  98.50  47.80  85.40 140.00 170.00  40.80 121.00 124.00 192.40
##  [71]  99.50  93.00  95.00  42.50  33.00 114.00 115.00  94.00  45.10  45.70
##  [81] 130.00  46.00  49.50 136.50 116.50 122.50  65.00  57.00 127.00 134.60
##  [91] 107.00  66.50  47.50  72.00  49.00  65.50 144.60  54.00 115.60 122.60
## 
## $Width
##  [1] 30.500 16.000 13.800 18.000  8.800  5.000 15.000  8.000 20.000 10.000
## [11] 12.500 12.700 12.000 14.000 21.000 11.000 23.500 14.500 15.250 16.500
## [21] 13.000 12.400  6.000 17.700 29.000 10.500 11.500 11.075  4.000  6.350
## [31]  7.000 19.700 15.830 20.500 31.480 31.750  9.600 39.850 25.000 21.500
## [41] 47.500 18.250  9.000 38.000 54.300 19.000 11.800 33.000 25.100 17.000
## [51]  9.520 14.300 15.950 30.700 22.200 20.900 22.000 27.000 13.250 19.250
## [61]  9.800  9.500 16.750 21.250 27.500  6.600  7.600
## 
## $OR
## [1] "Material 3" "NA"         "Material 1" "Material 4"
## 
## $IR
## [1] "Material 4" "Material 3" "NA"         "Material 1" "Other"     
## 
## $Cage
## [1] "Material 9"  "Material 6"  "NA"          "Material 1"  "Material 5" 
## [6] "Material 8"  "Material 12" "Material 7" 
## 
## $numberZ
##  [1] "20"  "40"  "0"   "8"   "35"  "28"  "21"  "14"  "92"  "116" "98"  "15" 
## [13] "84"  "16"  "11"  "13"  "64"  "62"  "52"  NA    "19"  "100" "102" "17" 
## [25] "18"  "42"  "25"  "33"  "9"   "5"   "10"  "12"  "26"  "29"  "34"  "65" 
## [37] "57"  "50"  "49"  "30"  "59"  "55"  "68"  "56"  "27"  "37"  "6"   "24" 
## [49] "60"  "63"  "41"  "32"  "22"  "38"  "NA"  "61"  "23"  "54" 
## 
## $ZMaterial
## [1] "Material 11" "NA"          "Material 1"  "Material 10"
## 
## $Year
## [1] 2018 2022 2023 2019 2020 2021 2024 2017
## 
## $Quantity
##  [1]    20    42    32    10    34    26    50    30    40    22     9     6
## [13]    12    18    27    24    33     5     8     7    60    25    23    15
## [25]    35     3   100     4   275   210    80   150   350   185   135   225
## [37]    75   160   120    14     2    56    36    28    64    46    65    21
## [49]    16    13    17    39   145   200    31    48   175   250   300    90
## [61]    70    11    44    55    45     1   220    41    68   600   400  5000
## [73] 10000    52
## 
## $Cost
##   [1] 1703 1443 1512 2195 1580 1686 1611  494  575  675  529  993  654 1251  847
##  [16]  683 1198  290  467  463  550  473  469  476  459  274  269  251   96  533
##  [31]  472  427  582  498  577  555  431  462  443  493 1801  116   62  128  130
##  [46]   53   61   90   72   92   63   74   55  508  351  392  602  614  540  480
##  [61]  645  579  513  816  656 1127  222  640  490  631  531  481  502  342  219
##  [76]  261  216 1372  234  183  145  126  322  257  317  279  284  386  330  292
##  [91]  297  286  235  204  194  186  180   97   94   93   91  298  254  240  232
## [106]  214  218  228  339  238  276  221  225  124  125  132  470  353  375  653
## [121]  549  159  314  299  410  302  350  195  733  988 1228 1905  815  687  712
## [136]  670  837  753  182  296  364  244  236  239  250  137  147  129  621  564
## [151]  479  450  394  453  333  676  689  456 2288  374  569  869  756  957  738
## [166]  781  817  444  421  376  331  325  934  187  168  153  146  142  692  465
## [181]  306  265  829  634  486  413  357  354  163  503  747  657 1018  897  961
## [196] 1094  344  903  966 1023 1099  906  874  859 1001 1124 1025  998  989 2801
## [211] 2527 2308  307  316  360  532  681  528  570  682  810  778  760  798  866
## [226]  708 1104 1026  896  994  902 1002  905 1116 1024  301  309  627  674  821
## [241]  310  263  229  318  931  853  724  987  850 1076  942  611  911 1489 1371
## [256]  593 1322 1221  965  838 1465 1273 1265 1396 1052  857 1029 1454 1117 1569
## [271] 1234  185 1702 1220 1060  979  899   23   49 1053  824  638  256  231  300
## [286]  598 1237 1128 1049 1004  924  908  969 1188 1037  856  735  720 1044  881
## [301]   12  786 1069  990  879  973  809  766  680  715  173  167  158  156  925
## [316] 1055 1031  880  429  590  387  474  177  471  275 1086 1033 1062 1129 1325
## [331]  757 1395 1975 1497 1632 1499 1364 1838 1262  844  789  491  953  523  603
## [346]  894 1290  868  311  313 1490 1249  940  433  422  992  445  834 1211   57
## [361]   58  870 1332  166  162  160 1664 1626 1072 1217 1253  464  419 1514 1552
## [376] 1302 1339 1593 1425 1043  713  690 2390 3622  893  604 1786 1103 1017  932
## [391] 1147 1473  382  406  391  271  668  669  626  278  518  546  393 1329 1123
## [406] 1175 1226 1144 1319 1162 1131 1215 1110 1368  192  157 1391  527  501  497
## [421]  580  519  507 1493  802 1392 1289  790  595  605  587  619 1141 1223 1182
## [436] 1157 1306 1059 1183 1101 1035 1013  500  402  205  400  227 1577 1613 1549
## [451] 1381 1349 1408 1308  659 2847 2397 4159  811  885 1481  599  589  568  553
## [466]  562  543  537  660  637  700  609  972  548  554  347  212  220 1331 1288
## [481] 1257 1505 1394 1229 1328 1284  368 1530 1136 1064 1488 1080 1152 1503 1201
## [496] 1600 1165 1412 1261  266 2563 3671  813 1419 1282  727  691  520 3099 1970
## [511] 1520  980  613  688  620  667  628  651 1202 1281 1333 1246 1421 1091 1231
## [526] 1032 1057  388  346  305  294  922 1106 1495  912  977  849 1432  914  622
## [541]  506  449  418  334 1088 2353 1469 1721 1263 1279 1539 3854  967  736  652
## [556]  915  623 1121  883  650 2453 1739 1943 1586 1662 2035 4087 2129 2684  734
## [571]  729 1274  606 1595 1190  335  361  451  485  430  452  860  404 1161 1650
## [586] 1651 1081  797  693  607 2141 1548 1077  842  794  684 2491  763  855 1815
## [601]  921 1016  743  583  761  777  721  664  461  573  889  840  892  390  409
## [616]  258  213  208  175  170  164  338  304 2650 1641 1138 1155  435  380  248
## [631]  389  405  371  193  178  769  563  732 2321 1271  723  632  586 1374 2049
## [646]  370 1230 1567  484 3024 2822 2733 2587 2541 1367 1176 1166  851 1832 1533
## [661]  416 1601 1067  888  677  643  359  958 2014 1741 1516 1466  397  726  403
## [676] 1888 1272 1181  515 1093 1010 1259  927  785 1125  551 7039 1757 1073 1051
## [691] 1247  697 1254 1159 1195 2317  970  935  944 1235 1351 1468 1869 1796 2120
## [706] 3152 2040 1193  913  875 1252   76 3195   83   78   80   79   81  780  695
## [721]  792 1186 1496 1606  804  226  245  917  964  937 1171 1078 1434 1310 1360
## [736] 1248 1559 1944 1089 2078 1167 1467 1460 1292 1196 1102 1113 1206 1296 1475
## [751] 1143   42 1134 1056 1209 1204 1180 1095 1264 1307 1137 1109 1168 2070  991
## [766] 1417 1404 1336 1239 1746 1541  959  833  890 1007  801  891  707  696 2486
## [781] 4025 2538 2427 2569 2176  612   66  119  138 1813  936  287  281 3405 2429
## [796]  636  585 2551 2400 1300  878  814 1521 1191  828  561 1477  808 1399  731
## [811] 1071 1426 1096  765 1386  800  755    9   56  923  377  383  345  395  424

Analisis gráfico

Hago un primer gráfico para ver la distribución de precio según el producto y la cantidad. Para facilitar la legibilidad de la gráfica, elimino los valores en el eje X, que tienen además un gran rango y no se observaría bien. Más adelante veremos en detalle la vacariación con e precio.

ggplot(datos, aes(x=Quantity, y=Cost))+geom_point(aes(color=Type))+facet_grid(.~Type)+labs(x="Cantidad", y="Coste", title="Variacion del Coste con respecto de la Cantidad para cada Producto", encoding = "UTF-8")+theme(axis.text.x = element_blank(),
          axis.ticks.x = element_blank())

Aquí observamos las cantidades requeridas por producto y año. De una manera similar, elimino los valores en el eje de las X, de modo que el gráfico sea más claro.

ggplot(datos, aes(x=Type, y=Quantity, fill=Type))+geom_col()+facet_grid(.~Year)+theme(axis.text.x = element_blank(),
          axis.ticks.x = element_blank())

Para el caso de CRB, vamos a montar un gráfico 3D para ver como las variables ID y OD se relacionan con el precio. (Se ha intentado añadir el color a los puntos según la variables “Types” pero da error en cualquiera de los dos modos que he intentado. Se agradecía recibir feedback en este punto, para saber como si debería de hacer, ni el método mostrado en clase ni el googleado producen el resultado buscado).

## Warning: package 'rgl' was built under R version 4.3.3
## Warning: package 'car' was built under R version 4.3.3
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
## Warning: package 'plotly' was built under R version 4.3.3
## 
## Attaching package: '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

A continuación miramos a ver la relación que existe entre OD y ID, lo cual nos podría servir en un análisis posterior para ver si, sabiendo una de las variables, la otra podría llegar a omitirse al estar relacionadas, simplificando así el cálculo de un modelo predictor.

ggplot(datos,aes(x=ID,y=OD,color=Type))+geom_point()+geom_smooth(method="lm", se=FALSE)+facet_grid(.~Type)+theme(axis.text.x = element_blank(),
          axis.ticks.x = element_blank())+theme(axis.text.y = element_blank(),
          axis.ticks.y = element_blank())
## `geom_smooth()` using formula = 'y ~ x'

en general se observa una linealidad, en algunos casos muy clara según el tipo de rodamiento. No se da tanto así en el grupo “QJ”.

ggplot(datos[datos$Type=="CRB",],aes(x=Quantity,y=Cost,color=OR))+geom_point()+geom_smooth(method="lm", se=FALSE, )
## `geom_smooth()` using formula = 'y ~ x'

Se observan tres valores que impiden ver bien. Se excluyen y tal y como comentamos anteriormente, nos centramos en un solo tipo de producto y analizamos la variación de precio con la cantidad asi como con con la variable Thread y Flange.A su vez, se separarán los valores en función del material del que esté hecho el anillo externo.

datos=datos[-c(974,1237,1238),]
ggplot(datos[datos$Type=="CRB",],aes(x=Quantity,y=Cost,color=OR))+geom_point()+geom_smooth(method="lm", se=FALSE)
## `geom_smooth()` using formula = 'y ~ x'

ggplot(datos[datos$Type=="CRB",],aes(x=Quantity,y=Cost,color=OR))+geom_point()+facet_grid(.~Flange+Thread)+geom_smooth(method="lm", se=FALSE,aes(color=OR))
## `geom_smooth()` using formula = 'y ~ x'

Se aprecia que la existencia o no de Thread y Flange tienen una influencia en los precios (se profundizará en este tema más adelante). Además, se ve que los puntos verdes (Material 3) tienden a estar por encima de los de Material 1 y 4.

Ahora por ejemplo me gustaría ver como los diferentes Materiales se distribuyen en los diferentes tipos de rodamiento para ver si su presencia en el IR o el OR vienen relacionados. Lo haremos a través de diagramas de barras:

ggplot(datos, aes(x=Type))+geom_bar(color="black",aes(fill=OR))+scale_fill_manual(values=c("red","lightblue","lightgreen", "grey"))+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

ggplot(datos, aes(x=Type))+geom_bar(color="black",aes(fill=IR))+scale_fill_manual(values=c("red","lightblue","lightgreen", "grey","yellow"))+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

ggplot(datos, aes(x=Type))+geom_bar(color="black",aes(fill=ZMaterial))+scale_fill_manual(values=c("red","orange","purple", "grey"))+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Comparando los tres gráficos, se puede ver que para ciertos tipos existe una clara relación entre tener un material y tener el otro. Por ejemplo, en el caso del ACBB, se puede ver que prácticamente la misma cantidad que en OR tiene material 4, lo tiene en el IR también. Y además, tendría casi todos también Material 11 como Z.

Tal y como se identificó antes, miramos a ver la influencia de Thread y Flange. Lo haremos a través de boxplots, que nos permiten ver de manera rápida la dispersión de los valores.

Aquí se pude ver claramente que a presencia o no te las dos características tiene un efecto en el precio.

Por último, se realizará una observación de como varían los pedidos con el tiempo.