12/04/24Cargo 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
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.