Principales respuestas
Generar Algoritmo de Regresión Lineal

Pregunta
-
Hola a todos,
Quisiera saber cómo puedo generar un algoritmo de Regresión Lineal desde SQL-T,
La idea es materializar un pronóstico en una tabla de Hechos para un Data Warehouse que tengo en un modelo tabular con SQL Server 2014 Enterprise Edition...
Un generador registra cada hora el valor promedio de energía en ese lapso.
Así que se tienen 365 días x 24 Hrs x cada Generador.
Tengo en mente un algoritmo que genere la función de regresión polinomial de acuerdo a un Generador con un histórico de Fechas pero a la misma hora entre varias fechas.
Entonces supongo que tendría un coeficiente distinto para cada Generador en cada hora.
Les dejo un ejemplo de un Generador en particular con un periodo de una semana y su proyección (es la que quiero calcular)
Les dejo el código que construye y llena la tabla como ejemplo.
CREATE TABLE Hechos.Tabla ( Id NUMERIC NOT NULL, Generador VARCHAR (15) NOT NULL, Fecha DATE NOT NULL, Hora TIME(0) NOT NULL, Valor DECIMAL (6,2) NOT NULL, CONSTRAINT PK_Tabla_Id PRIMARY KEY NONCLUSTERED (Id), ); CREATE UNIQUE CLUSTERED INDEX INDICE_TABLA ON Hechos.Tabla (Fecha, Generador, Hora); INSERT INTO Hechos.Tabla SELECT Id = 58105, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '01:00:00', Valor = 773.97000000 UNION ALL SELECT Id = 58106, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '02:00:00', Valor = 578.12000000 UNION ALL SELECT Id = 58107, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '03:00:00', Valor = 512.81000000 UNION ALL SELECT Id = 58108, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '04:00:00', Valor = 479.40000000 UNION ALL SELECT Id = 58109, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '05:00:00', Valor = 499.58000000 UNION ALL SELECT Id = 58110, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '06:00:00', Valor = 547.61000000 UNION ALL SELECT Id = 58111, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '07:00:00', Valor = 730.01000000 UNION ALL SELECT Id = 58112, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '08:00:00', Valor = 781.42000000 UNION ALL SELECT Id = 58113, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '09:00:00', Valor = 798.78000000 UNION ALL SELECT Id = 58114, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '10:00:00', Valor = 829.80000000 UNION ALL SELECT Id = 58115, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '11:00:00', Valor = 867.60000000 UNION ALL SELECT Id = 58116, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '12:00:00', Valor = 842.49000000 UNION ALL SELECT Id = 58117, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '13:00:00', Valor = 891.54000000 UNION ALL SELECT Id = 58118, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '14:00:00', Valor = 873.86000000 UNION ALL SELECT Id = 58119, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '15:00:00', Valor = 838.90000000 UNION ALL SELECT Id = 58120, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '16:00:00', Valor = 862.95000000 UNION ALL SELECT Id = 58121, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '17:00:00', Valor = 920.71000000 UNION ALL SELECT Id = 58122, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '18:00:00', Valor = 846.88000000 UNION ALL SELECT Id = 58123, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '19:00:00', Valor = 842.26000000 UNION ALL SELECT Id = 58124, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '20:00:00', Valor = 884.49000000 UNION ALL SELECT Id = 58125, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '21:00:00', Valor = 916.48000000 UNION ALL SELECT Id = 58126, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '22:00:00', Valor = 844.06000000 UNION ALL SELECT Id = 58127, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '23:00:00', Valor = 761.70000000 UNION ALL SELECT Id = 58128, Generador = 'Generador X', Fecha = '2016-01-29', Hora = '23:59:59', Valor = 733.85000000 UNION ALL SELECT Id = 58249, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '01:00:00', Valor = 773.97000000 UNION ALL SELECT Id = 58250, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '02:00:00', Valor = 578.12000000 UNION ALL SELECT Id = 58251, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '03:00:00', Valor = 512.81000000 UNION ALL SELECT Id = 58252, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '04:00:00', Valor = 479.40000000 UNION ALL SELECT Id = 58253, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '05:00:00', Valor = 499.58000000 UNION ALL SELECT Id = 58254, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '06:00:00', Valor = 547.61000000 UNION ALL SELECT Id = 58255, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '07:00:00', Valor = 730.01000000 UNION ALL SELECT Id = 58256, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '08:00:00', Valor = 781.42000000 UNION ALL SELECT Id = 58257, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '09:00:00', Valor = 798.78000000 UNION ALL SELECT Id = 58258, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '10:00:00', Valor = 829.80000000 UNION ALL SELECT Id = 58259, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '11:00:00', Valor = 867.60000000 UNION ALL SELECT Id = 58260, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '12:00:00', Valor = 842.49000000 UNION ALL SELECT Id = 58261, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '13:00:00', Valor = 891.54000000 UNION ALL SELECT Id = 58262, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '14:00:00', Valor = 873.86000000 UNION ALL SELECT Id = 58263, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '15:00:00', Valor = 838.90000000 UNION ALL SELECT Id = 58264, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '16:00:00', Valor = 862.95000000 UNION ALL SELECT Id = 58265, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '17:00:00', Valor = 920.71000000 UNION ALL SELECT Id = 58266, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '18:00:00', Valor = 846.88000000 UNION ALL SELECT Id = 58267, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '19:00:00', Valor = 842.26000000 UNION ALL SELECT Id = 58268, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '20:00:00', Valor = 884.49000000 UNION ALL SELECT Id = 58269, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '21:00:00', Valor = 916.48000000 UNION ALL SELECT Id = 58270, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '22:00:00', Valor = 844.06000000 UNION ALL SELECT Id = 58271, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '23:00:00', Valor = 761.70000000 UNION ALL SELECT Id = 58272, Generador = 'Generador Y', Fecha = '2016-01-29', Hora = '23:59:59', Valor = 733.85000000 UNION ALL SELECT Id = 111433, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '01:00:00', Valor = 648.47000000 UNION ALL SELECT Id = 111434, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '02:00:00', Valor = 539.06000000 UNION ALL SELECT Id = 111435, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '03:00:00', Valor = 486.19000000 UNION ALL SELECT Id = 111436, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '04:00:00', Valor = 466.75000000 UNION ALL SELECT Id = 111437, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '05:00:00', Valor = 465.83000000 UNION ALL SELECT Id = 111438, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '06:00:00', Valor = 484.56000000 UNION ALL SELECT Id = 111439, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '07:00:00', Valor = 509.63000000 UNION ALL SELECT Id = 111440, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '08:00:00', Valor = 574.62000000 UNION ALL SELECT Id = 111441, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '09:00:00', Valor = 808.21000000 UNION ALL SELECT Id = 111442, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '10:00:00', Valor = 909.34000000 UNION ALL SELECT Id = 111443, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '11:00:00', Valor = 964.66000000 UNION ALL SELECT Id = 111444, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '12:00:00', Valor = 909.14000000 UNION ALL SELECT Id = 111445, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '13:00:00', Valor = 832.26000000 UNION ALL SELECT Id = 111446, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '14:00:00', Valor = 821.24000000 UNION ALL SELECT Id = 111447, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '15:00:00', Valor = 821.03000000 UNION ALL SELECT Id = 111448, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '16:00:00', Valor = 902.32000000 UNION ALL SELECT Id = 111449, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '17:00:00', Valor = 905.48000000 UNION ALL SELECT Id = 111450, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '18:00:00', Valor = 891.79000000 UNION ALL SELECT Id = 111451, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '19:00:00', Valor = 808.14000000 UNION ALL SELECT Id = 111452, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '20:00:00', Valor = 791.74000000 UNION ALL SELECT Id = 111453, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '21:00:00', Valor = 815.08000000 UNION ALL SELECT Id = 111454, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '22:00:00', Valor = 885.82000000 UNION ALL SELECT Id = 111455, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '23:00:00', Valor = 799.12000000 UNION ALL SELECT Id = 111456, Generador = 'Generador X', Fecha = '2016-01-30', Hora = '23:59:59', Valor = 792.33000000 UNION ALL SELECT Id = 111577, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '01:00:00', Valor = 648.47000000 UNION ALL SELECT Id = 111578, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '02:00:00', Valor = 539.06000000 UNION ALL SELECT Id = 111579, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '03:00:00', Valor = 486.19000000 UNION ALL SELECT Id = 111580, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '04:00:00', Valor = 466.75000000 UNION ALL SELECT Id = 111581, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '05:00:00', Valor = 465.83000000 UNION ALL SELECT Id = 111582, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '06:00:00', Valor = 484.56000000 UNION ALL SELECT Id = 111583, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '07:00:00', Valor = 509.63000000 UNION ALL SELECT Id = 111584, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '08:00:00', Valor = 574.62000000 UNION ALL SELECT Id = 111585, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '09:00:00', Valor = 808.21000000 UNION ALL SELECT Id = 111586, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '10:00:00', Valor = 909.34000000 UNION ALL SELECT Id = 111587, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '11:00:00', Valor = 964.66000000 UNION ALL SELECT Id = 111588, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '12:00:00', Valor = 909.14000000 UNION ALL SELECT Id = 111589, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '13:00:00', Valor = 832.26000000 UNION ALL SELECT Id = 111590, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '14:00:00', Valor = 821.24000000 UNION ALL SELECT Id = 111591, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '15:00:00', Valor = 821.03000000 UNION ALL SELECT Id = 111592, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '16:00:00', Valor = 902.32000000 UNION ALL SELECT Id = 111593, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '17:00:00', Valor = 905.48000000 UNION ALL SELECT Id = 111594, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '18:00:00', Valor = 891.79000000 UNION ALL SELECT Id = 111595, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '19:00:00', Valor = 808.14000000 UNION ALL SELECT Id = 111596, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '20:00:00', Valor = 791.74000000 UNION ALL SELECT Id = 111597, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '21:00:00', Valor = 815.08000000 UNION ALL SELECT Id = 111598, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '22:00:00', Valor = 885.82000000 UNION ALL SELECT Id = 111599, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '23:00:00', Valor = 799.12000000 UNION ALL SELECT Id = 111600, Generador = 'Generador Y', Fecha = '2016-01-30', Hora = '23:59:59', Valor = 792.33000000 UNION ALL SELECT Id = 185406, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '01:00:00', Valor = 529.13000000 UNION ALL SELECT Id = 185407, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '02:00:00', Valor = 475.70000000 UNION ALL SELECT Id = 185408, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '03:00:00', Valor = 461.76000000 UNION ALL SELECT Id = 185409, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '04:00:00', Valor = 456.97000000 UNION ALL SELECT Id = 185410, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '05:00:00', Valor = 448.49000000 UNION ALL SELECT Id = 185411, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '06:00:00', Valor = 450.05000000 UNION ALL SELECT Id = 185412, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '07:00:00', Valor = 455.88000000 UNION ALL SELECT Id = 185413, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '08:00:00', Valor = 452.28000000 UNION ALL SELECT Id = 185414, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '09:00:00', Valor = 468.09000000 UNION ALL SELECT Id = 185415, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '10:00:00', Valor = 504.68000000 UNION ALL SELECT Id = 185416, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '11:00:00', Valor = 539.25000000 UNION ALL SELECT Id = 185417, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '12:00:00', Valor = 553.26000000 UNION ALL SELECT Id = 185418, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '13:00:00', Valor = 542.31000000 UNION ALL SELECT Id = 185419, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '14:00:00', Valor = 545.99000000 UNION ALL SELECT Id = 185420, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '15:00:00', Valor = 543.76000000 UNION ALL SELECT Id = 185421, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '16:00:00', Valor = 524.39000000 UNION ALL SELECT Id = 185422, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '17:00:00', Valor = 520.48000000 UNION ALL SELECT Id = 185423, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '18:00:00', Valor = 543.84000000 UNION ALL SELECT Id = 185424, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '19:00:00', Valor = 545.63000000 UNION ALL SELECT Id = 185425, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '20:00:00', Valor = 562.09000000 UNION ALL SELECT Id = 185426, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '21:00:00', Valor = 563.94000000 UNION ALL SELECT Id = 185427, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '22:00:00', Valor = 558.11000000 UNION ALL SELECT Id = 185428, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '23:00:00', Valor = 532.36000000 UNION ALL SELECT Id = 185429, Generador = 'Generador X', Fecha = '2016-01-31', Hora = '23:59:59', Valor = 536.52000000 UNION ALL SELECT Id = 185550, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '01:00:00', Valor = 529.13000000 UNION ALL SELECT Id = 185551, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '02:00:00', Valor = 475.70000000 UNION ALL SELECT Id = 185552, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '03:00:00', Valor = 461.76000000 UNION ALL SELECT Id = 185553, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '04:00:00', Valor = 456.97000000 UNION ALL SELECT Id = 185554, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '05:00:00', Valor = 448.49000000 UNION ALL SELECT Id = 185555, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '06:00:00', Valor = 450.05000000 UNION ALL SELECT Id = 185556, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '07:00:00', Valor = 455.88000000 UNION ALL SELECT Id = 185557, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '08:00:00', Valor = 452.28000000 UNION ALL SELECT Id = 185558, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '09:00:00', Valor = 468.09000000 UNION ALL SELECT Id = 185559, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '10:00:00', Valor = 504.68000000 UNION ALL SELECT Id = 185560, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '11:00:00', Valor = 539.25000000 UNION ALL SELECT Id = 185561, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '12:00:00', Valor = 553.26000000 UNION ALL SELECT Id = 185562, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '13:00:00', Valor = 542.31000000 UNION ALL SELECT Id = 185563, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '14:00:00', Valor = 545.99000000 UNION ALL SELECT Id = 185564, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '15:00:00', Valor = 543.76000000 UNION ALL SELECT Id = 185565, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '16:00:00', Valor = 524.39000000 UNION ALL SELECT Id = 185566, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '17:00:00', Valor = 520.48000000 UNION ALL SELECT Id = 185567, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '18:00:00', Valor = 543.84000000 UNION ALL SELECT Id = 185568, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '19:00:00', Valor = 545.63000000 UNION ALL SELECT Id = 185569, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '20:00:00', Valor = 562.09000000 UNION ALL SELECT Id = 185570, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '21:00:00', Valor = 563.94000000 UNION ALL SELECT Id = 185571, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '22:00:00', Valor = 558.11000000 UNION ALL SELECT Id = 185572, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '23:00:00', Valor = 532.36000000 UNION ALL SELECT Id = 185573, Generador = 'Generador Y', Fecha = '2016-01-31', Hora = '23:59:59', Valor = 536.52000000 ;
Gracias a todos.
saludos
Respuestas
-
Perdoname kakaroto, no pude seguir el hilo, me pilló de vacaciones. Se pueden usar con los datos que tienes. Sobretodo sin con completos los datos, es decir tienes realmente un dato cada hora y no hay huecos.
Si los hubiera( huecos) tendrías que ver que mecanismo usas para rellenar esos huecos, pueden rellenarse de forma que se mantenga la varianza, o más simple, con la media o la mediana o incluso, usando algoritmos tipo KNN (Vecinos mas cercanos) y en R hay paquetes que implementan esos métodos.
Después de eso puedes usar series temporales, este link (que he hojeado no estudiado) parece bastante completo y habla de distintas aproximaciones incluida ARIMA que es la que se implementa en analisys services multidimensional entre otras.
https://www.analyticsvidhya.com/blog/2015/12/complete-tutorial-time-series-modeling/
Como ahora R funciona dentro de TSQL no te costará gran cosa usar el ejemplo para crear un modelo y hacer predicciones.
Como bien decía José si estuviéramos simplemente ante un problema de regresión lineal, lo que devolvería el algoritmo serían los coeficientes de un polinomio en el que en el eje de las X estaría el tiempo y en el eje de las Y el valor, esos coeficientes, intentando ajustarlos a una recta, pero no es el caso, no pretendemos que el grado del polinomio sea 1 y ajustar mediante rectas, sino que en realidad los algoritmos hacen regresión multiple y detectan periodicidades, incrementando, por decirlo de alguna forma poco rigurosa pero mas visual, el grado del polinomio.
Creo que con lo que está en el articulo podrás entrenar el modelo y hacer las predicciones correspondientes.
Un ultimo apunte, cuando lo tengas, un método común es usar un tercio de los datos como datos de test, y 2 tercios de los datos como datos de entrenamiento. En R también tienes algoritmos que hacen validación cruzada, a la hora de determinar el mejor modelo, de forma que minimizando el error o maximizando el accuracy, se ajustan mejor al modelo sin hacer lo que se conoce como sobre entrenamiento u overffiting, es decir, puedes crear modelos que se ajusten perfectamente a los datos de entrenamiento pero que generan errores grandes en los datos de test. Comprobar que el modelo entrenado se comporta aceptablemente bien con los datos de test te ayudará a poder confiar mas en el algoritmo.
Comparte lo que sepas, aprende lo que no sepas (FGG)
portalSQL
El rincón del DBA- Editado Miguel Egea GómezMVP, Moderator lunes, 2 de abril de 2018 16:27
- Marcado como respuesta Miguel Egea GómezMVP, Moderator viernes, 13 de abril de 2018 5:56
Todas las respuestas
-
Bueno me confunde un poco porque primero habla de lineal y luego de polinomial. El primero es una línea recta; el segundo no.
Pero en fin, tal vez eso no es importante. ¿Qué anda buscando? ¿T-SQL para seleccionar los registros de distintas fechas pero misma hora? La hora no suele ser un valor exacto. ¿Hay alguna tolerancia, como +- 10 minutos?
Jose R. MCP
Code Samples- Marcado como respuesta Pablo RubioModerator domingo, 1 de abril de 2018 0:06
- Desmarcado como respuesta Miguel Egea GómezMVP, Moderator lunes, 2 de abril de 2018 16:22
-
Tienes Razón, pues Polinomial es lo que en realidad busco,
Quiero hacer una prueba de concepto para ejecutar proyecciones con esos datos,
Quisiera saber la curva que tomaría la función en algún punto definido, creo que es regresión Polinomial, no se mucho de matemáticas jeje.
Una vez construida, la mostraré en un cubo tabular. =)
Eso es lo que quiero hacer.
saludos
-
Ok, pero ¿dónde necesita ayuda? ¿Seleccionando los datos correctos? ¿Haciendo los cálculos particulares?
Además, ¿ya tiene la ecuación que usará para la regresión? Una popular es spline. ¿Cuál es el eje X de la gráfica a crear? ¿La fecha? ¿Tiene esto sentido físico real? Pensaría yo que sirve más un promedio semanal o móvil de lo que se consume/produce a cierta hora que una ecuación que me prediga cuánto se consumirá mañana. Pero claro, esa es una opinión basada en nada, porque no conozco ni el negocio ni he visto los datos.
Jose R. MCP
Code Samples -
La ayuda es en generar una función (algoritmo) que regrese el coeficiente, para posteriormente con otra función invocarla y obtener la proyección.
No, la ecuación según yo, debe generarse de forma dinámica para cada Generador en cierta hora.
X = Fecha
Y = Hora
Como se muestra en la imagen del Excel
Aun no tiene sentido físico, es una prueba de concepto básica, a futuro vamos a meter costos variables.
pero antes de que se complique más, me quiero adelantar con algo...
Gracias por el interés!
saludos
-
No, la ecuación es idéntica siempre. Lo que se genera son los valores de los coeficientes usados en la ecuación. Pero no puede programar una ecuación sin definir cuál va a usar. Primero decida qué ecuación usará, luego se calculan los coeficientes usando los datos.
Jose R. MCP
Code Samples -
Si X es Fecha y Y es hora, ¿dónde pretende usar el consumo? O sea, usted me está diciendo que la hora es una función del día. Eso no tiene sentido físico alguno. Eso no es lo que usted desea modelar en lo absoluto.
Jose R. MCP
Code Samples- Editado webJose miércoles, 28 de marzo de 2018 18:32
- Propuesto como respuesta Tonatiuh AbregoModerator viernes, 30 de marzo de 2018 18:00
- Marcado como respuesta Tonatiuh AbregoModerator jueves, 12 de abril de 2018 18:36
- Desmarcado como respuesta Miguel Egea GómezMVP, Moderator viernes, 13 de abril de 2018 5:56
-
Perdoname kakaroto, no pude seguir el hilo, me pilló de vacaciones. Se pueden usar con los datos que tienes. Sobretodo sin con completos los datos, es decir tienes realmente un dato cada hora y no hay huecos.
Si los hubiera( huecos) tendrías que ver que mecanismo usas para rellenar esos huecos, pueden rellenarse de forma que se mantenga la varianza, o más simple, con la media o la mediana o incluso, usando algoritmos tipo KNN (Vecinos mas cercanos) y en R hay paquetes que implementan esos métodos.
Después de eso puedes usar series temporales, este link (que he hojeado no estudiado) parece bastante completo y habla de distintas aproximaciones incluida ARIMA que es la que se implementa en analisys services multidimensional entre otras.
https://www.analyticsvidhya.com/blog/2015/12/complete-tutorial-time-series-modeling/
Como ahora R funciona dentro de TSQL no te costará gran cosa usar el ejemplo para crear un modelo y hacer predicciones.
Como bien decía José si estuviéramos simplemente ante un problema de regresión lineal, lo que devolvería el algoritmo serían los coeficientes de un polinomio en el que en el eje de las X estaría el tiempo y en el eje de las Y el valor, esos coeficientes, intentando ajustarlos a una recta, pero no es el caso, no pretendemos que el grado del polinomio sea 1 y ajustar mediante rectas, sino que en realidad los algoritmos hacen regresión multiple y detectan periodicidades, incrementando, por decirlo de alguna forma poco rigurosa pero mas visual, el grado del polinomio.
Creo que con lo que está en el articulo podrás entrenar el modelo y hacer las predicciones correspondientes.
Un ultimo apunte, cuando lo tengas, un método común es usar un tercio de los datos como datos de test, y 2 tercios de los datos como datos de entrenamiento. En R también tienes algoritmos que hacen validación cruzada, a la hora de determinar el mejor modelo, de forma que minimizando el error o maximizando el accuracy, se ajustan mejor al modelo sin hacer lo que se conoce como sobre entrenamiento u overffiting, es decir, puedes crear modelos que se ajusten perfectamente a los datos de entrenamiento pero que generan errores grandes en los datos de test. Comprobar que el modelo entrenado se comporta aceptablemente bien con los datos de test te ayudará a poder confiar mas en el algoritmo.
Comparte lo que sepas, aprende lo que no sepas (FGG)
portalSQL
El rincón del DBA- Editado Miguel Egea GómezMVP, Moderator lunes, 2 de abril de 2018 16:27
- Marcado como respuesta Miguel Egea GómezMVP, Moderator viernes, 13 de abril de 2018 5:56