none
Generar Algoritmo de Regresión Lineal RRS feed

  • 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

    miércoles, 28 de marzo de 2018 16:45

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


    lunes, 2 de abril de 2018 16:24
    Moderador

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

    miércoles, 28 de marzo de 2018 16:54
  • 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

    miércoles, 28 de marzo de 2018 17:04
  • 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

    miércoles, 28 de marzo de 2018 17:17
  •  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

    miércoles, 28 de marzo de 2018 18:14
  • 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

    miércoles, 28 de marzo de 2018 18:29
  • 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


    miércoles, 28 de marzo de 2018 18:31
  • 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


    lunes, 2 de abril de 2018 16:24
    Moderador