Problema:
La criptomoneda Ethereum presenta fluctuaciones significativas en su valor a lo largo del tiempo. Estas variaciones, aunque impulsadas por mĆŗltiples factores, pueden tener patrones subyacentes que, si se identifican, podrĆan proporcionar una visión valiosa para futuras tendencias de precios.
Objetivo:
Realizar un anĆ”lisis de series temporales sobre los datos diarios de Ethereum con un enfoque acadĆ©mico. Identificar patrones y tendencias para prever movimientos de precios y apoyar decisiones de inversión informadas.ā
Marco teorico:
- Ethereum: Una Revolución en la TecnologĆa Blockchain Definiendo Ethereum
Ethereum no se puede describir simplemente como una moneda digital o una tecnologĆa emergente. Representa una reconfiguración fundamental de cómo entendemos las transacciones y operaciones digitales. Al mirar su infraestructura, vemos una red global descentralizada compuesta por mĆ”quinas distribuidas, todas operando con un protocolo unificado y sin un Ćŗnico centro o propietario. Esta estructura descentralizada representa un alejamiento significativo de las operaciones tradicionales centralizadas.
Sin embargo, es crucial no confundir Ethereum con una simple criptomoneda. Ethereum es un entorno de software que distingue por ejecutar aplicaciones no en servidores individuales, sino a travƩs de la misma red, brindando mayor confiabilidad.
Ether: El Pulso de Ethereum
Aunque Ethereum es la estructura, Ether es el latido del corazón. Es la moneda que energiza la red, recompensando a los usuarios por contribuir con poder computacional. Las tareas computacionales son vitales para mantener la red operativa, y Ether actúa como un incentivo para garantizar una participación continua.
Dinero Programable y Contratos Inteligentes
Ethereum ha llevado a la noción de ādinero programableā a la vanguardia. Dentro de su cadena de bloques, opera con contratos inteligentes que actĆŗan como acuerdos autoejecutables. Estos contratos, esencialmente, cumplen con tĆ©rminos y condiciones sin la necesidad de intermediarios. Esta autonomĆa no sólo reduce el riesgo de interferencia humana sino que tambiĆ©n garantiza la ejecución del contrato siempre que se cumplan las condiciones preestablecidas.
Tokens de Ethereum y la Revolución ERC-20
A diferencia de muchas otras redes blockchain, Ethereum permite la creación de tokens personalizados dentro de su estructura. Estos tokens, respaldados por contratos inteligentes, pueden representar cualquier activo o valor. La versatilidad de este sistema ha dado origen a una multitud de tokens, siendo el ERC-20 uno de los mÔs destacados y utilizados en la actualidad.
Ethereum en Funcionamiento
El funcionamiento interno de Ethereum es una danza compleja pero bien coreografiada de contratos inteligentes y transacciones. Cada vez que se activa una transacción, se ejecuta a travĆ©s de la MĆ”quina Virtual Ethereum, y cada nodo en la red registra y refleja esta transacción. Esta armonĆa asegura un registro distribuido y confiable de todas las transacciones.
El Gas: El Combustible de Ethereum
Para garantizar una operación fluida y evitar congestiones, Ethereum utiliza un sistema llamado gas. Este sistema funciona como una tarifa de transacción, donde se asigna un valor a las operaciones basado en su complejidad. AsĆ, las operaciones mĆ”s complejas y que consumen mĆ”s recursos tendrĆ”n un costo mĆ”s elevado, asegurando un equilibrio y una gestión eficiente de los recursos de la red.
- Métodos de AnÔlisis de Series Temporales: El Enfoque de Prophet Introducción al AnÔlisis de Series Temporales
Antes de sumergirnos en Prophet, es esencial entender el vasto paisaje del anĆ”lisis de series temporales. Una serie temporal es una sucesión de datos medidos en momentos consecutivos a lo largo del tiempo, generalmente a intervalos uniformes. Estas series se utilizan ampliamente en estadĆsticas, economĆa y negocios, y tienen aplicaciones en diversos campos, desde el anĆ”lisis de las tendencias del mercado de valores hasta la predicción del clima.
El anĆ”lisis de series temporales tiene como objetivo descomponer estas series para entender o prever una tendencia futura. Para ello, se utilizan diversos mĆ©todos y tĆ©cnicas que van desde modelos estadĆsticos simples hasta algoritmos complejos de aprendizaje automĆ”tico.
Prophet: Una Herramienta Revolucionaria para Series Temporales
Prophet, desarrollado por el equipo de Facebook, ha emergido como una herramienta poderosa y versĆ”til para el anĆ”lisis y pronóstico de series temporales. A diferencia de muchos mĆ©todos tradicionales que requieren una configuración detallada y pueden ser fĆ”cilmente perturbados por anomalĆas en los datos, Prophet es robusto ante la falta de datos y cambios en las tendencias, lo que lo hace particularmente Ćŗtil en el mundo real donde los datos a menudo no son perfectos.
CaracterĆsticas distintivas de Prophet:
Flexibilidad: Prophet no asume un modelo lineal o no lineal previo. En su lugar, identifica automƔticamente las tendencias al adaptarse a las estacionalidades anuales, semanales y diarias de los datos.
Tratamiento de dĆas festivos: Una caracterĆstica Ćŗnica de Prophet es su capacidad para modelar los efectos de los dĆas festivos en una serie temporal.
Componentes Adicionales: AdemƔs de las tendencias y estacionalidades, Prophet permite incorporar componentes adicionales, como eventos especiales, que pueden influir en las series temporales.
Facilidad de Uso: A pesar de su complejidad subyacente, Prophet es sorprendentemente fƔcil de usar, incluso para aquellos sin un profundo conocimiento en anƔlisis de series temporales.
Prophet en el Contexto de Ethereum
Dada la naturaleza volÔtil y dinÔmica de las criptomonedas, las herramientas tradicionales de anÔlisis de series temporales a menudo no son suficientes para prever sus movimientos con precisión. Aquà es donde Prophet brilla. Al considerar la historia de precios de Ethereum y teniendo en cuenta sus peculiaridades, Prophet puede ofrecer predicciones mÔs precisas y detalladas sobre movimientos futuros, brindando asà una herramienta valiosa para inversionistas y analistas.
Vistaso a los datos
etherium <- rio::import("https://github.com/EdwinHigueraA/bfi_s/raw/main/Etherium.csv")
cols_to_convert <- c("Open", "High", "Low", "Close")
for (col in cols_to_convert) {
etherium[[col]] <- as.numeric(gsub(",", "", etherium[[col]]))
}## Date Open High Low Close
## 1 1/1/2020 128.41 132.86 127.93 131.52
## 2 1/2/2020 131.52 131.52 126.18 127.44
## 3 1/3/2020 127.44 134.58 125.43 132.34
## 4 1/4/2020 132.34 135.58 131.94 133.93
## 5 1/5/2020 133.93 138.25 133.71 135.28
## 6 1/6/2020 135.06 142.86 134.01 141.50
## Date Open High Low Close
## 1302 7/26/2023 1861.74 1886.65 1848.56 1882.11
## 1303 7/27/2023 1882.10 1884.80 1856.03 1858.85
## 1304 7/28/2023 1858.85 1881.56 1854.95 1876.17
## 1305 7/29/2023 1876.17 1885.00 1870.56 1884.26
## 1306 7/30/2023 1885.00 1885.72 1850.45 1864.68
## 1307 7/31/2023 1864.68 1875.63 1852.00 1853.28
## Time Series:
## Start = c(2020, 1)
## End = c(2023, 212)
## Frequency = 365
## [1] 131.52 127.44 132.34 133.93 135.28 141.50 142.54 139.12 136.75
## [10] 142.96 144.11 144.53 144.17 163.72 165.28 163.23 170.87 176.46
## [19] 165.71 167.04 168.91 167.55 162.28 163.10 161.29 167.11 171.11
## [28] 172.37 175.82 184.77 180.64 182.30 191.67 189.48 187.38 206.36
## [37] 213.35 219.42 223.21 225.20 222.31 237.20 270.00 262.80 282.92
## [46] 268.28 251.90 260.41 280.87 262.99 259.63 263.06 262.88 271.70
## [55] 261.86 249.90 223.79 226.19 226.49 223.51 214.38 232.68 223.91
## [64] 222.80 231.10 240.83 238.78 209.61 198.36 202.76 192.70 128.64
## [73] 128.62 127.62 120.10 109.21 119.22 116.41 137.25 125.21 135.46
## [82] 124.20 132.20 139.86 135.45 136.79 137.43 131.17 125.59 134.04
## [91] 134.68 132.33 140.95 140.69 143.70 142.49 164.09 163.62 172.12
## [100] 170.73 159.09 154.72 163.91 156.73 159.28 157.77 172.50 170.84
## [109] 183.47 181.70 171.70 172.61 182.94 189.12 187.87 194.40 196.86
## [118] 193.67 196.59 217.00 211.80 209.77 214.15 207.98 207.89 205.40
## [127] 205.59 211.62 214.66 212.07 188.02 186.65 189.99 198.30 202.56
## [136] 193.24 200.11 208.06 212.65 212.41 210.40 199.05 208.24 208.02
## [145] 206.41 204.90 202.20 206.29 214.36 219.97 235.38 235.70 241.75
## [154] 236.64 241.63 241.91 241.00 242.17 241.85 242.10 243.52 247.75
## [163] 232.37 237.67 236.94 234.12 232.68 233.73 231.10 229.06 229.20
## [172] 227.58 228.99 244.65 243.52 234.60 233.61 230.27 218.60 224.85
## [181] 227.30 225.47 231.51 226.29 226.88 229.21 225.09 238.25 238.57
## [190] 246.24 241.31 239.29 238.71 238.76 238.87 241.35 238.17 232.61
## [199] 232.53 236.35 235.71 236.40 245.08 245.92 273.34 286.37 305.82
## [208] 310.92 324.25 319.74 322.64 339.11 345.73 386.82 374.39 390.64
## [217] 388.46 400.58 396.81 378.01 388.49 393.23 395.53 373.99 386.61
## [226] 409.80 438.99 432.50 430.72 437.85 427.07 404.40 416.30 395.03
## [235] 388.71 392.69 401.41 377.40 389.32 379.69 394.21 405.21 423.00
## [244] 432.33 482.44 436.64 405.90 391.78 333.29 351.89 344.70 335.66
## [253] 353.69 365.39 368.43 383.27 363.00 376.32 365.56 365.71 392.15
## [262] 380.61 386.03 369.60 346.59 344.85 321.90 345.66 354.90 353.68
## [271] 353.33 362.73 357.72 356.64 351.61 346.32 349.07 351.55 351.99
## [280] 337.25 340.51 351.65 364.05 374.58 373.72 387.64 380.19 376.73
## [289] 380.56 366.60 367.12 375.92 379.65 368.66 395.25 417.80 409.40
## [298] 412.01 408.10 392.90 403.95 385.94 389.05 384.31 387.94 396.63
## [307] 385.91 383.35 401.11 413.65 447.20 435.58 450.45 447.90 451.73
## [316] 467.16 462.55 472.28 460.06 444.00 459.25 480.99 474.31 472.98
## [325] 508.87 544.31 573.94 606.93 601.02 578.49 512.59 515.87 543.92
## [334] 566.54 605.20 604.51 615.43 581.81 592.41 599.42 588.61 566.01
## [343] 576.17 563.66 549.44 570.91 591.64 586.06 588.63 629.38 641.26
## [352] 651.36 666.95 634.80 618.46 622.83 597.37 605.10 618.92 647.00
## [361] 676.41 726.77 723.94 749.13 739.08 729.99 769.00 950.50 1008.06
## [370] 1086.64 1183.71 1251.50 1190.64 1292.24 1269.99 1035.10 1078.26 1126.30
## [379] 1189.00 1160.75 1228.99 1260.64 1234.03 1410.55 1323.76 1174.95 1243.67
## [388] 1248.50 1353.24 1345.18 1335.01 1275.28 1350.38 1375.79 1385.72 1296.00
## [397] 1348.97 1516.43 1633.45 1642.51 1721.71 1710.88 1602.50 1702.98 1769.73
## [406] 1727.99 1769.92 1851.59 1814.50 1828.54 1792.02 1753.24 1854.00 1944.68
## [415] 1957.91 1968.81 1922.80 1799.77 1539.99 1591.57 1526.11 1429.31 1507.11
## [424] 1416.12 1547.00 1467.94 1595.02 1516.45 1535.09 1642.70 1664.00 1790.92
## [433] 1825.00 1816.73 1840.50 1758.32 1911.71 1876.05 1791.32 1797.41 1817.47
## [442] 1774.49 1817.85 1827.61 1800.00 1678.35 1672.34 1615.01 1603.41 1664.68
## [451] 1718.50 1667.28 1806.40 1840.99 1940.00 1969.99 2092.13 2061.32 2061.67
## [460] 2104.42 2122.45 1983.56 2054.91 2070.83 2090.86 2144.51 2145.92 2301.00
## [469] 2369.54 2499.50 2460.83 2390.93 2226.09 2206.66 2307.28 2405.01 2408.00
## [478] 2323.83 2295.99 2214.89 2463.00 2649.25 2708.01 2712.80 2763.92 2949.51
## [487] 2969.00 3288.00 3409.65 3467.44 3467.85 3501.77 3852.00 3909.82 3899.32
## [496] 4140.00 4104.21 3714.20 3990.47 3794.99 3360.34 3440.10 3434.23 2535.67
## [505] 2761.80 2248.80 2356.38 2073.14 2623.97 2552.11 2791.65 2725.92 2424.99
## [514] 2237.97 2437.73 2595.82 2577.58 2723.52 2819.99 2702.23 2627.47 2706.96
## [523] 2651.31 2537.01 2563.27 2467.85 2383.54 2403.58 2562.82 2541.84 2522.43
## [532] 2402.42 2343.23 2194.37 2225.64 2254.99 1941.23 1930.48 1931.56 2007.27
## [541] 1867.87 1767.57 1816.34 2135.01 2191.26 2239.11 2117.60 2089.00 2219.55
## [550] 2350.42 2217.31 2310.85 2362.01 2137.80 2134.85 2095.08 2130.87 2026.57
## [559] 1949.46 1989.35 1925.09 1902.35 1899.02 1895.28 1819.30 1794.03 1947.62
## [568] 2016.29 2039.45 2151.04 2157.66 2260.97 2242.77 2301.10 2314.17 2419.57
## [577] 2490.81 2670.00 2597.51 2487.41 2708.97 2803.67 2911.70 3081.75 2988.72
## [586] 3071.56 3156.55 3236.20 3061.61 3281.00 3233.92 3261.22 3164.98 3072.00
## [595] 3007.34 3157.16 3260.97 3226.38 3156.96 3339.98 3216.70 3210.00 3116.84
## [604] 3264.37 3239.14 3236.00 3342.39 3392.83 3730.00 3811.26 3917.19 3880.55
## [613] 3972.05 3949.99 3415.04 3473.72 3424.95 3250.96 3293.97 3316.89 3295.57
## [622] 3377.76 3551.43 3487.77 3378.01 3398.69 3359.13 3019.11 2765.16 3026.36
## [631] 3142.44 2947.01 2927.45 3088.41 2974.94 2863.28 2820.49 2972.80 3293.01
## [640] 3428.74 3426.97 3384.30 3533.79 3560.16 3623.58 3554.29 3579.31 3512.75
## [649] 3493.73 3476.80 3576.00 3759.36 3879.87 3831.77 3700.98 3739.16 3809.34
## [658] 4107.96 4089.19 3975.35 4089.33 4063.12 4180.80 4262.82 3984.14 4257.60
## [667] 4409.10 4311.57 4269.50 4310.99 4505.48 4618.00 4517.22 4453.68 4488.09
## [676] 4629.00 4773.85 4800.00 4557.49 4743.20 4655.12 4652.40 4576.79 4572.81
## [685] 4257.79 4253.17 4022.41 4279.00 4433.39 4369.45 4078.51 4351.45 4257.24
## [694] 4500.00 4078.31 4080.89 4256.95 4453.80 4627.16 4569.99 4545.44 4218.61
## [703] 4066.10 4153.22 4324.65 4292.32 4418.54 4167.70 3999.61 4022.39 4122.34
## [712] 3770.01 3854.24 4066.00 4030.84 3913.17 3976.42 3922.25 3914.36 4023.92
## [721] 4015.75 4112.67 4067.43 4121.52 4087.98 4061.30 3807.82 3724.98 3733.98
## [730] 3687.67 3749.75 3813.67 3727.99 3826.65 3557.41 3426.38 3216.50 3080.64
## [739] 3188.77 3073.50 3232.52 3370.80 3271.94 3332.60 3337.18 3331.00 3168.54
## [748] 3164.35 3114.58 3083.99 2614.44 2448.91 2422.90 2442.65 2414.06 2419.99
## [757] 2359.79 2537.68 2620.00 2558.81 2680.71 2790.00 2647.75 2657.49 2957.62
## [766] 3027.15 2996.00 3151.38 3118.37 3240.00 3114.29 2927.28 2880.00 2875.03
## [775] 2915.92 3099.47 3136.48 2896.67 2783.64 2742.00 2599.40 2583.87 2604.01
## [784] 2620.70 2633.01 2709.14 2827.20 2606.65 2821.51 2954.79 2963.89 2804.50
## [793] 2608.32 2655.49 2627.79 2484.17 2560.80 2708.44 2604.00 2573.60 2586.98
## [802] 2547.01 2524.55 2625.59 2774.50 2807.99 2952.01 2956.80 2877.47 2911.51
## [811] 3001.61 2981.96 3104.85 3128.32 3144.00 3238.88 3417.28 3395.20 3413.71
## [820] 3299.98 3443.19 3471.20 3495.00 3510.17 3436.17 3235.47 3238.51 3247.98
## [829] 3226.04 3290.16 2992.28 2987.70 3105.73 3011.47 3030.16 3034.06 3045.70
## [838] 3005.18 3094.31 3085.00 3001.41 2971.28 2961.98 2941.25 2996.74 2828.63
## [847] 2864.84 2948.97 2806.13 2788.47 2812.70 2827.69 2774.37 2943.42 2754.37
## [856] 2704.81 2673.55 2539.33 2286.10 2321.92 2031.16 1925.01 2043.75 1997.47
## [865] 2128.88 2030.99 2051.90 1962.74 2011.38 1957.64 1972.76 2004.77 1996.35
## [874] 1967.21 1959.09 1826.05 1744.16 1790.25 1793.03 1952.14 1948.13 1794.22
## [883] 1824.05 1758.06 1774.69 1809.74 1860.47 1844.73 1796.12 1792.44 1677.39
## [892] 1521.84 1477.97 1243.08 1187.30 1177.44 1096.86 1095.00 902.25 1138.58
## [901] 1119.96 1121.57 1051.16 1134.20 1215.09 1207.44 1247.70 1202.24 1160.55
## [910] 1107.93 1011.67 1067.88 1062.79 1083.27 1120.44 1154.34 1160.63 1237.75
## [919] 1242.36 1219.84 1177.50 1136.62 1046.00 1075.93 1191.48 1256.28 1345.60
## [928] 1343.41 1473.04 1559.60 1524.00 1586.73 1525.01 1523.82 1611.43 1520.86
## [937] 1379.02 1601.64 1756.28 1733.17 1702.82 1721.29 1622.95 1650.30 1641.88
## [946] 1590.67 1679.93 1715.00 1722.52 1799.85 1698.01 1842.60 1902.53 1933.74
## [955] 1991.91 1942.57 1904.74 1885.13 1850.20 1876.87 1687.80 1531.94 1618.24
## [964] 1578.05 1649.28 1683.37 1707.80 1557.41 1480.58 1483.47 1546.83 1557.62
## [973] 1572.96 1580.77 1568.51 1552.16 1571.36 1598.42 1579.95 1641.59 1644.75
## [982] 1720.62 1734.07 1759.33 1724.26 1607.50 1603.66 1504.22 1436.00 1462.59
## [991] 1370.86 1357.73 1342.61 1313.67 1324.18 1301.98 1342.22 1293.03 1325.05
## [1000] 1324.42 1351.26 1338.25 1331.30 1309.66 1303.74 1323.92 1362.09 1346.06
## [1009] 1363.88 1332.01 1325.20 1320.90 1307.39 1282.78 1298.57 1294.30 1302.20
## [1018] 1280.85 1311.01 1330.45 1314.44 1293.99 1281.77 1302.46 1316.05 1330.22
## [1027] 1351.91 1473.00 1554.46 1527.81 1561.00 1627.40 1595.49 1566.34 1575.52
## [1036] 1513.45 1541.15 1647.04 1631.71 1604.04 1575.70 1335.07 1105.81 1320.71
## [1045] 1265.94 1255.72 1216.60 1226.43 1244.39 1206.04 1205.70 1208.80 1210.00
## [1054] 1139.38 1092.64 1130.19 1168.79 1195.20 1199.67 1209.93 1216.21 1172.11
## [1063] 1219.38 1296.99 1276.85 1290.99 1260.76 1277.23 1259.46 1256.66 1231.63
## [1072] 1278.18 1259.91 1268.94 1264.92 1275.15 1320.19 1310.85 1264.65 1194.61
## [1081] 1179.27 1182.99 1176.05 1216.55 1211.12 1215.00 1221.85 1218.69 1218.33
## [1090] 1216.70 1210.24 1186.77 1195.20 1197.20 1199.52 1202.11 1221.34 1210.65
## [1099] 1252.16 1251.32 1266.32 1264.20 1269.72 1317.74 1339.75 1342.74 1427.58
## [1108] 1456.07 1538.04 1552.35 1579.41 1581.50 1528.20 1545.03 1637.84 1660.63
## [1117] 1628.25 1632.14 1599.45 1617.97 1602.99 1598.72 1567.24 1643.21 1557.18
## [1126] 1576.74 1635.79 1640.80 1657.36 1678.81 1622.40 1638.37 1667.49 1652.81
## [1135] 1541.00 1507.00 1535.60 1511.92 1486.15 1555.78 1665.44 1682.03 1695.34
## [1144] 1688.00 1686.12 1700.70 1641.12 1619.33 1646.58 1602.99 1574.00 1642.65
## [1153] 1627.28 1605.47 1656.70 1641.69 1558.69 1556.43 1571.74 1566.31 1550.40
## [1162] 1552.67 1432.87 1426.20 1475.61 1562.36 1672.75 1708.72 1652.89 1658.91
## [1171] 1743.94 1796.69 1799.55 1760.30 1798.20 1736.07 1817.20 1750.00 1732.01
## [1180] 1761.52 1707.60 1774.61 1803.13 1795.10 1817.14 1817.06 1789.24 1780.58
## [1189] 1879.00 1905.27 1865.02 1853.74 1855.68 1857.01 1885.87 1895.20 1908.85
## [1198] 2008.64 2107.57 2089.25 2122.92 2078.22 2092.83 1981.65 1938.10 1838.38
## [1207] 1868.86 1848.21 1837.70 1860.78 1865.73 1919.58 1895.84 1904.53 1892.35
## [1216] 1809.79 1870.08 1874.03 1878.06 1990.86 1898.07 1913.16 1840.91 1848.64
## [1225] 1858.80 1796.09 1788.28 1804.40 1799.10 1826.27 1821.41 1826.20 1796.79
## [1234] 1812.70 1817.13 1806.42 1818.16 1854.86 1804.97 1809.86 1835.42 1827.72
## [1243] 1854.69 1893.48 1904.12 1865.88 1869.00 1905.58 1888.02 1904.47 1804.84
## [1252] 1876.99 1841.52 1853.42 1835.97 1744.18 1770.55 1739.10 1737.99 1639.49
## [1261] 1668.06 1725.64 1728.16 1729.94 1730.08 1787.30 1877.35 1888.03 1907.34
## [1270] 1876.83 1893.40 1852.34 1891.64 1831.27 1849.91 1927.83 1923.46 1918.45
## [1279] 1959.62 1941.90 1910.07 1883.21 1865.67 1848.98 1869.41 1891.95 1874.76
## [1288] 1871.99 1984.00 1916.38 1932.03 1928.67 1890.35 1894.84 1899.00 1887.27
## [1297] 1894.77 1888.50 1891.99 1850.79 1861.73 1882.11 1858.85 1876.17 1884.26
## [1306] 1864.68 1853.28
eth_close_zoo <- as.zoo(eth_close_ts)
eth_close_df <- fortify.zoo(eth_close_zoo)
eth_close_df$Year <- floor(eth_close_df$Index)
eth_close_df$Days <- round((eth_close_df$Index - eth_close_df$Year) * 365.25)
eth_close_df$Date <- as.Date(paste0(eth_close_df$Year, "-01-01")) + eth_close_df$Days
hchart(eth_close_df, "line", hcaes(x = Date, y = eth_close_zoo)) %>%
hc_add_theme(hc_theme_darkunica())##
## Augmented Dickey-Fuller Test
##
## data: eth_close_ts
## Dickey-Fuller = -1.689, Lag order = 10, p-value = 0.7099
## alternative hypothesis: stationary
##
## Phillips-Perron Unit Root Test
##
## data: eth_close_ts
## Dickey-Fuller Z(alpha) = -5.0704, Truncation lag parameter = 7, p-value
## = 0.8269
## alternative hypothesis: stationary
# Identificación
par(mfrow=c(3,3))
plot(eth_close_ts,type="o")
acf(eth_close_ts, lag.max=40)
pacf(eth_close_ts, lag.max=40)
plot(diff(eth_close_ts),type="o")
abline(h=2*sqrt(var(diff(eth_close_ts))),col="red",lty=2)
abline(h=-2*sqrt(var(diff(eth_close_ts))),col="red",lty=2)
acf(diff(eth_close_ts), lag.max=40)
pacf(diff(eth_close_ts), lag.max=40)
plot(diff(eth_close_ts,),type="o")
acf(diff(eth_close_ts,365), lag.max=40)
pacf(diff(eth_close_ts,365), lag.max=40)Dickey Fuller del paquete tseries
##
## Augmented Dickey-Fuller Test
##
## data: diff(eth_close_ts, 365)
## Dickey-Fuller = -1.6038, Lag order = 9, p-value = 0.746
## alternative hypothesis: stationary
test phillips- perron
##
## Phillips-Perron Unit Root Test
##
## data: diff(eth_close_ts, 365)
## Dickey-Fuller Z(alpha) = -5.6193, Truncation lag parameter = 7, p-value
## = 0.7963
## alternative hypothesis: stationary
Tranformacion y modelado de los datos:
1. Transformación LogarĆtmica
eth_close_log <- log(eth_close_ts)
autoplot(eth_close_log) + ggtitle("Log-Transformed Ethereum Prices")Arima LOG
##
## Call:
## arima(x = eth_close_log, order = c(2, 1, 1))
##
## Coefficients:
## ar1 ar2 ma1
## 0.5573 0.0596 -0.5795
## s.e. 0.2445 0.0282 0.2440
##
## sigma^2 estimated as 0.002163: log likelihood = 2153.93, aic = -4299.86
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.00184675 0.04648725 0.03188681 0.02807493 0.4629673 0.9981464
## ACF1
## Training set -0.002175796
## [1] -4279.16
eth_close_diff_log <- diff(eth_close_log)
par(mfrow=c(3,1))
plot(eth_close_diff_log, main="Log-Transformed & Differenced Ethereum Prices")
acf(eth_close_diff_log, lag.max=40, main="ACF of Log-Transformed & Differenced Ethereum Prices")
pacf(eth_close_diff_log, lag.max=40, main="PACF of Log-Transformed & Differenced Ethereum Prices")2. Transformacion Box-Cox
lambda <- BoxCox.lambda(eth_close_ts)
eth_close_boxcox <- BoxCox(eth_close_ts, lambda)
autoplot(eth_close_boxcox) + ggtitle("Box-Cox Transformed Ethereum Prices")ARIMA - Box cox
##
## Call:
## arima(x = eth_close_boxcox, order = c(3, 1, 2))
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2
## -0.4584 -0.8862 0.0246 0.4235 0.8806
## s.e. 0.0665 0.0465 0.0298 0.0609 0.0442
##
## sigma^2 estimated as 736.3: log likelihood = -6164.1, aic = 12340.21
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.4744995 27.12496 16.40088 0.09487953 2.698286 0.9890188
## ACF1
## Training set -0.0009303598
## [1] 12371.26
Profundidad del modelo LogarĆtmico
et <- residuals(model_log)
par(mfrow=c(2,2))
plot(et, main="Residuales del modelo")
acf(et, main="ACF de Residuales")
pacf(et, main="PACF de Residuales")
qqnorm(et, main="QQ Plot de Residuales")
qqline(et)Test de los supuestos del modelo
##
## Box-Ljung test
##
## data: et
## X-squared = 12.838, df = 7, p-value = 0.07616
##
## Jarque Bera Test
##
## data: et
## X-squared = 3797.5, df = 2, p-value < 2.2e-16
#### Test de Aleatoriedad
#$H_0:$ Residuales exhiben un comport. de Aleatoriedad
#$H_a:$ Residuales no exhiben estructura (Tendencia, o cualquier otro comportamiento predecible)##
## Runs Test
##
## data: as.factor(sign(et))
## Standard Normal = 1.0006, p-value = 0.317
## alternative hypothesis: two.sided
Pronóstico Inicial
forecast_log <- forecast(model_log, h=60, fan = T)
plot(forecast(model_log,h=60, fan=T))
lines(fitted(model_log), col="red")3.Modelado con Prophet - Sin LOG
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
future <- make_future_dataframe(m, periods = 60)
forecast <- predict(m, future)
forecast_prophet <- predict(m, future)4.Modelado con Prophet - Con LOG
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
future2 <- make_future_dataframe(m2, periods = 60)
forecast2 <- predict(m2, future2)
forecast_prophet_log <- predict(m2, future2)5.Red Neuronal
tamano_total <- length(S)
tamano_train <- round(tamano_total * 0.75, digits = 0)
train <- 1:tamano_train
test <- (tamano_train+1):tamano_totallibrary(zoo)
slogN <- data.frame(y = S,
lag.1 = stats::lag(S, -1),
lag.2 = stats::lag(S, -2),
lag.3 = stats::lag(S, -3),
lag.4 = stats::lag(S, -4),
lag.5 = stats::lag(S, -5),
lag.6 = stats::lag(S, -6),
lag.7 = stats::lag(S, -7),
lag.8 = stats::lag(S, -8),
lag.9 = stats::lag(S, -9),
lag.10 = stats::lag(S, -10),
lag.11 = stats::lag(S, -11),
lag.12 = stats::lag(S, -12))
slogN <- na.omit(slogN)
inputs <- as.data.frame(slogN[,-1])
outputs <- slogN$yRed De Elman
library(RSNNS)
set.seed(42)
fit <- elman(inputs[train,], outputs[train], size = c(10, 3), learnFuncParams = c(0.1), maxit = 2000)y <- as.vector(outputs[test])
plot(y, type = "l", ylim = range(c(y, predict(fit, newdata = inputs[test,]))))
lines(predict(fit, newdata = inputs[test,]), col = "red")predictions <- predict(fit, newdata = inputs)
predictions_desnorm <- predictions * (max(Z) - min(Z)) + min(Z)plot(Z, type = "l", col = "blue", lwd = 2, main = "Predicciones vs Datos Reales", xlab = "Tiempo", ylab = "Valor")
lines(predictions_desnorm, col = "red", lwd = 2)
legend("topright", legend = c("Real", "Predicción"), col = c("blue", "red"), lty = 1, cex = 0.8)library(RSNNS)
slogN <- cbind(y = S, sapply(1:12, function(lag) stats::lag(S, -lag)))
slogN <- na.omit(slogN)
inputs <- slogN[,-1]
outputs <- slogN[,1]
predicciones <- numeric(60)
ultimos_datos <- as.matrix(tail(inputs, 12))
for(i in 1:60){
pred <- predict(fit, newdata = t(ultimos_datos[1, ]))
predicciones[i] <- pred[1]
ultimos_datos[1:(nrow(ultimos_datos) - 1), ] <- ultimos_datos[2:nrow(ultimos_datos), ]
ultimos_datos[nrow(ultimos_datos), 1] <- pred[1]
}
# Desnormalizar las predicciones:
predicciones_desnorm <- predicciones * (max(Z) - min(Z)) + min(Z)
plot(Z, type = "l", col = "blue", lwd = 2, main = "Predicciones vs Datos Reales", xlab = "Tiempo", ylab = "Valor")
lines(c(rep(NA, length(Z)), predicciones_desnorm), col = "red", lwd = 2)
legend("topright", legend = c("Real", "Predicción"), col = c("blue", "red"), lty = 1, cex = 0.8)Ingreso de Datos reales:
Comparacion General de los modelos:
etherium_real$Date <- as.Date(etherium_real$Date, format="%m/%d/%Y")
ultimos_60_dias <- etherium_real$Close
fechas_correctas <- tail(etherium_real$Date, length(ultimos_60_dias))
forecast_log_values <- head(forecast_log$mean, length(ultimos_60_dias))
forecast_prophet_values <- head(forecast_prophet$yhat[(length(etherium$Close)+1):(length(etherium$Close)+60)], length(ultimos_60_dias))
forecast_prophet_log_values <- head(exp(forecast_prophet_log$yhat[(length(etherium$Close)+1):(length(etherium$Close)+60)]), length(ultimos_60_dias))
predicciones_desnorm_values <- head(predicciones_desnorm, length(ultimos_60_dias))
fechas <- etherium_real$Date[1:length(ultimos_60_dias)]
tabla_predicciones <- data.frame(
Fecha = fechas,
Real = ultimos_60_dias,
Log = forecast_log_values,
Prophet = forecast_prophet_values,
ProphetLog = forecast_prophet_log_values,
RedNeuronal = predicciones_desnorm_values,
Cercania = ultimos_60_dias - predicciones_desnorm_values
)## Fecha Real Log Prophet ProphetLog RedNeuronal Cercania
## 1 2023-08-01 1849.42 7.524545 2006.976 2311.231 1891.193 -41.7729308
## 2 2023-08-02 1841.11 7.524087 2035.005 2355.522 1896.795 -55.6848536
## 3 2023-08-03 1843.43 7.523821 2056.411 2395.202 1890.330 -46.8995480
## 4 2023-08-04 1820.65 7.523646 2069.579 2426.876 1894.643 -73.9928273
## 5 2023-08-05 1832.41 7.523532 2096.834 2470.893 1854.549 -22.1389299
## 6 2023-08-06 1828.82 7.523459 2119.794 2505.000 1867.138 -38.3178785
## 7 2023-08-07 1825.17 7.523411 2141.366 2540.437 1886.209 -61.0394675
## 8 2023-08-08 1863.42 7.523380 2170.290 2584.606 1861.716 1.7037069
## 9 2023-08-09 1851.60 7.523360 2196.350 2619.568 1879.574 -27.9736103
## 10 2023-08-10 1848.25 7.523347 2214.882 2646.465 1886.843 -38.5930249
## 11 2023-08-11 1843.93 7.523338 2224.286 2661.779 1867.294 -23.3644505
## 12 2023-08-12 1846.64 7.523333 2246.921 2688.036 1857.200 -10.5597499
## 13 2023-08-13 1853.18 7.523329 2264.454 2701.135 1853.357 -0.1770255
## 14 2023-08-14 1843.10 7.523327 2279.854 2713.659 1851.772 -8.6717339
## 15 2023-08-15 1827.97 7.523325 2301.933 2733.736 1851.998 -24.0279245
## 16 2023-08-16 1807.39 7.523324 2320.565 2742.673 1851.363 -43.9726895
## 17 2023-08-17 1715.99 7.523324 2331.180 2742.342 1855.837 -139.8470142
## 18 2023-08-18 1657.64 7.523323 2332.284 2729.803 1854.929 -197.2886170
## 19 2023-08-19 1671.39 7.523323 2346.341 2728.692 1852.510 -181.1201387
## 20 2023-08-20 1688.54 7.523323 2355.130 2714.836 1855.030 -166.4895500
## 21 2023-08-21 1672.50 7.523323 2361.727 2701.510 1853.321 -180.8206784
## 22 2023-08-22 1630.52 7.523322 2375.054 2697.068 1852.242 -221.7222887
## 23 2023-08-23 1684.34 7.523322 2385.081 2683.311 1854.412 -170.0719294
## 24 2023-08-24 1648.30 7.523322 2387.331 2662.559 1855.865 -207.5649735
## 25 2023-08-25 1649.52 7.523322 2380.389 2632.336 1856.438 -206.9184185
## 26 2023-08-26 1646.92 7.523322 2386.789 2615.609 1856.634 -209.7141335
## 27 2023-08-27 1653.31 7.523322 2388.361 2589.174 1856.580 -203.2701721
## 28 2023-08-28 1645.84 7.523322 2388.221 2565.786 1856.612 -210.7723253
## 29 2023-08-29 1727.69 7.523322 2395.312 2553.258 1856.089 -128.3989274
## 30 2023-08-30 1703.25 7.523322 2399.614 2534.211 1856.128 -152.8777908
## 31 2023-08-31 1647.42 7.523322 2396.638 2510.718 1856.427 -209.0072348
## 32 2023-09-01 1629.34 7.523322 2384.949 2480.251 1856.181 -226.8409135
## 33 2023-09-02 1634.45 7.523322 2387.043 2464.194 1856.347 -221.8969916
## 34 2023-09-03 1642.73 7.523322 2384.705 2440.399 1856.496 -213.7660146
## 35 2023-09-04 1627.10 7.523322 2380.996 2420.586 1856.261 -229.1608770
## 36 2023-09-05 1629.31 7.523322 2384.797 2411.842 1856.062 -226.7518069
## 37 2023-09-06 1628.00 7.523322 2386.023 2397.471 1855.976 -227.9762515
## 38 2023-09-07 1638.72 7.523322 2380.122 2379.119 1855.952 -217.2316473
## 39 2023-09-08 1636.05 7.523322 2365.594 2354.094 1855.961 -219.9114331
## 40 2023-09-09 1633.73 7.523322 2364.882 2342.443 1855.964 -222.2336698
## 41 2023-09-10 1619.14 7.523322 2359.721 2322.928 1856.026 -236.8857394
## 42 2023-09-11 1540.25 7.523322 2353.137 2306.510 1856.029 -315.7788149
## 43 2023-09-12 1599.23 7.523322 2353.987 2299.823 1855.993 -256.7630271
## 44 2023-09-13 1604.73 7.523322 2352.178 2286.862 1856.017 -251.2865129
## 45 2023-09-14 1628.99 7.523322 2343.167 2269.144 1855.999 -227.0088985
## 46 2023-09-15 1621.50 7.523322 2325.480 2244.108 1855.979 -234.4793270
## 47 2023-09-16 1635.44 7.523322 2321.603 2230.920 1856.004 -220.5644904
## 48 2023-09-17 1617.37 7.523322 2313.332 2209.436 1856.031 -238.6610517
## 49 2023-09-18 1638.02 7.523322 2303.769 2190.235 1856.044 -218.0236334
## 50 2023-09-19 1642.87 7.523322 2301.861 2179.761 1856.047 -213.1772681
## 51 2023-09-20 1623.35 7.523322 2297.617 2163.019 1856.045 -232.6950313
## 52 2023-09-21 1588.24 7.523322 2286.607 2141.701 1856.044 -267.8044721
## 53 2023-09-22 1591.06 7.523322 2267.475 2113.655 1856.036 -264.9760844
## 54 2023-09-23 1593.68 7.523322 2262.826 2097.177 1856.035 -262.3549660
## 55 2023-09-24 1590.66 7.523322 2254.575 2073.535 1856.039 -265.3794395
## 56 2023-09-25 1586.68 7.523322 2245.935 2052.900 1856.037 -269.3574823
## 57 2023-09-26 1586.61 7.523322 2245.960 2041.499 1856.039 -269.4294395
## 58 2023-09-27 1594.33 7.523322 2244.747 2025.463 1856.042 -261.7122354
## 59 2023-09-28 1657.07 7.523322 2237.940 2006.525 1856.039 -198.9691599
## 60 2023-09-29 1667.04 7.523322 2224.232 1982.767 1856.036 -188.9955252
library(ggplot2)
grafico <- ggplot(tabla_predicciones, aes(x=Fecha)) +
geom_line(aes(y=Real, colour="Real")) +
geom_line(aes(y=Log, colour="Log")) +
geom_line(aes(y=Prophet, colour="Prophet")) +
geom_line(aes(y=ProphetLog, colour="Prophet Log")) +
geom_line(aes(y=RedNeuronal, colour="Red Neuronal")) +
labs(title="Comparación de Predicciones vs Datos Reales", x="Fecha", y="Valor") +
scale_color_manual(name="Leyenda", values=c("Real"="black", "Log"="red", "Prophet"="green", "Prophet Log"="blue", "Red Neuronal"="purple")) +
theme_minimal() +
theme(legend.position="bottom")