PredictTimeSeries (DMX)
Devuelve valores futuros de predicción para datos de series temporales. Los datos de series temporales son continuos y pueden almacenarse en una tabla anidada o en una tabla de casos. La función PredictTimeSeries siempre devuelve una tabla anidada.
Sintaxis
PredictTimeSeries(<table column reference>)
PredictTimeSeries(<table column reference>, n)
PredictTimeSeries(<table column reference>, n-start, n-end)
PredictTimeSeries(<scalar column reference>)
PredictTimeSeries(<scalar column reference>, n)
PredictTimeSeries(<scalar column reference>, n-start, n-end)
PredictTimeSeries(<table column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<table column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<scalar column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<scalar column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
Argumentos
<table column reference>, <scalar column referenc>
Especifica el nombre de la columna que se va a predecir. La columna puede contener datos escalares o tabulares.n
Especifica el número de pasos siguientes que hay que predecir. Si no se especifica un valor para n, el valor predeterminado es 1.n no puede ser 0. La función devuelve un error si no realiza al menos una predicción.
n-start, n-end
Especifica un intervalo de pasos de serie temporal.n-start debe ser un número entero distinto de 0.
n-end debe ser un número entero mayor que n-start.
<source query>
Define los datos externos que se utilizan para realizar las predicciones.REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
Indica cómo administrar los nuevos datos.REPLACE_MODEL_CASES especifica que los datos del modelo se deberían reemplazar con datos nuevos. Sin embargo, las predicciones están basadas en los patrones del modelo de minería de datos existente.
EXTEND_MODEL_CASES especifica que los datos nuevos se deberían agregar al conjunto de datos de entrenamiento originales. Las predicciones futuras solo se realizan en el conjunto de datos compuesto una vez agotados los nuevos datos.
Estos argumentos solo se pueden utilizar cuando se agregan datos nuevos mediante una instrucción PREDICTION JOIN. Si usa una consulta PREDICTION JOIN y no especifica un argumento, el valor predeterminado es EXTEND_MODEL_CASES.
Tipo devuelto
Una <table expression>.
Comentarios
El algoritmo de serie temporal Microsoft no admite la predicción histórica cuando se utiliza la instrucción PREDICTION JOIN para agregar datos.
En una instrucción PREDICTION JOIN, el proceso de predicción siempre se inicia en el estadio temporal inmediatamente posterior a la finalización de la serie de entrenamiento original. Esto es cierto incluso si se agregan datos nuevos. Por consiguiente, los valores de los parámetros n y n-start deben ser un número entero mayor que 0.
Nota
La longitud de los datos nuevos no afecta al punto inicial para la predicción. Por ello, si desea agregar datos nuevos y también realizar predicciones nuevas, asegúrese de que establece el punto de inicio de la predicción en un valor mayor que la longitud de los datos nuevos o que extiende el punto final de la predicción según la longitud de los datos nuevos.
Ejemplos
Los ejemplos siguientes muestran cómo realizar predicciones basadas en un modelo de serie temporal existente:
El primer ejemplo muestra cómo realizar un número de predicciones especificado basándose en el modelo actual.
En el segundo ejemplo se muestra cómo utilizar el parámetro REPLACE_MODEL_CASES para aplicar los patrones en el modelo especificado a un nuevo conjunto de datos.
En el tercer ejemplo se muestra cómo utilizar el parámetro EXTEND_MODEL_CASES para actualizar un modelo de minería de datos con datos nuevos.
Para obtener más información sobre cómo trabajar con modelos de serie temporal, vea el tutorial de minería de datos, Lección 2: generar un escenario de pronóstico (Tutorial intermedio de minería de datos) y Tutorial DMX de predicción de series temporales.
Nota
Podría obtener resultados diferentes en un modelo; los resultados de los ejemplos siguientes solo se proporcionan para mostrar el formato del resultado.
Ejemplo 1: predecir un número de intervalos de tiempo
En el ejemplo siguiente se utiliza la función PredictTimeSeries para devolver una predicción para los tres estadios temporales siguientes y se restringen los resultados para la serie M200 de las regiones de Europa y Pacífico. En este modelo determinado, el atributo de predicción es Quantity, de modo que debe utilizar [Quantity] como primer argumento de la función PredictTimeSeries.
SELECT FLATTENED
[Forecasting].[Model Region],
PredictTimeSeries([Forecasting].[Quantity],3)AS t
FROM
[Forecasting]
WHERE [Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 Pacific'
Resultados esperados:
Model Region |
t.$TIME |
t.Quantity |
---|---|---|
M200 Europe |
7/25/2008 12:00:00 AM |
121 |
M200 Europe |
8/25/2008 12:00:00 AM |
142 |
M200 Europe |
9/25/2008 12:00:00 AM |
152 |
M200 Pacific |
7/25/2008 12:00:00 AM |
46 |
M200 Pacific |
8/25/2008 12:00:00 AM |
44 |
M200 Pacific |
9/25/2008 12:00:00 AM |
42 |
En este ejemplo, la palabra clave FLATTENED se ha utilizado para hacer que los resultados sean más legibles. Si no utiliza la palabra clave FLATTENED y en su lugar devuelve un conjunto de filas jerárquico, esta consulta devuelve dos columnas. La primera columna contiene el valor para [ModelRegion] y la segunda contiene una tabla anidada con dos columnas: $TIME, que muestra los intervalos de tiempo que se predicen, y Quantity, que contiene los valores predichos.
Ejemplo 2: agregar datos nuevos y utilizar REPLACE_MODEL_CASES
Suponga que encuentra que los datos eran incorrectos para una región determinada y desea utilizar los patrones en el modelo, pero ajustar las predicciones para que coincidan con los datos nuevos. O bien, podría encontrar que otra región tiene tendencias más confiables y desea aplicar el modelo más confiable a los datos de una región diferente.
En tales escenarios, puede utilizar el parámetro REPLACE_MODEL_CASES y especificar un conjunto de datos nuevos para utilizar como datos históricos. De ese modo, las proyecciones se basarán en los patrones del modelo especificado, pero continuarán sin problemas desde el fin de los datos nuevos. Para obtener un tutorial completo de este escenario, vea Agregar un modelo de predicción agregado (Tutorial intermedio de minería de datos).
La consulta PREDICTION JOIN siguiente muestra la sintaxis para reemplazar los datos y realizar nuevas predicciones. Para los datos sustitutos, el ejemplo recupera el valor de las columnas Amount y Quantity, y multiplica cada uno por dos:
SELECT [Forecasting].[Model Region],
PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES)
FROM
[Forecasting]
PREDICTION JOIN
OPENQUERY([Adventure Works DW2008R2],
'SELECT [ModelRegion],
([Quantity] * 2) as Quantity,
([Amount] * 2) as Amount,
[ReportingDate]
FROM [dbo].vTimeSeries
WHERE ModelRegion = N''M200 Pacific''
') AS t
ON
[Forecasting].[Model Region] = t.[ Model Region] AND
[Forecasting].[Reporting Date] = t.[ReportingDate] AND
[Forecasting].[Quantity] = t.[Quantity] AND
[Forecasting].[Amount] = t.[Amount]
En la tabla siguiente se comparan los resultados de predicción.
Predicciones originales |
Predicciones actualizadas |
---|---|
M200 Pacific7/25/2008 12:00:00 AM46
M200 Pacific8/25/2008 12:00:00 AM44
M200 Pacific9/25/2008 12:00:00 AM42
|
M200 Pacific7/25/2008 12:00:00 AM91
M200 Pacific8/25/2008 12:00:00 AM89
M200 Pacific9/25/2008 12:00:00 AM84
|
Ejemplo 3: agregar datos nuevos y utilizar EXTEND_MODEL_CASES
El ejemplo 3 muestra el uso de la opción EXTEND_MODEL_CASES para proporcionar datos nuevos, que se agregan al final de una serie de datos existente. En lugar de reemplazar los datos existentes, se agregan los datos nuevos al modelo.
En el ejemplo siguiente, los datos nuevos se proporcionan en la instrucción SELECT que sigue a NATURAL PREDICTION JOIN. Puede proporcionar varias filas de una nueva entrada con esta sintaxis, pero cada fila de entrada nueva debe tener una marca de tiempo única:
SELECT [Model Region],
PredictTimeSeries([Forecasting].[Quantity], 5, EXTEND_MODEL_CASES)
FROM
[Forecasting]
NATURAL PREDICTION JOIN
(SELECT
1 as [Reporting Date],
10 as [Quantity],
'M200 Europe' AS [Model Region]
UNION SELECT
2 as [Reporting Date],
15 as [Quantity],
'M200 Europe' AS [Model Region]
) AS T
WHERE ([Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 Pacific')
Dado que la consulta utiliza la opción EXTEND_MODEL_CASES, Analysis Services realiza las acciones siguientes para sus predicciones:
Aumenta el tamaño total de los casos de entrenamiento agregando al modelo los dos meses de datos nuevos.
Inicia las predicciones al final de los datos de casos anteriores. Por consiguiente, las primeras dos predicciones representan los datos nuevos de ventas reales recién agregados al modelo.
Devuelve las predicciones nuevas para los tres intervalos de tiempo restantes basándose en el modelo recientemente ampliado.
En la tabla siguiente se muestran los resultados de la consulta del ejemplo 2. Observe que los primeros dos valores devueltos para M200 Europe son exactamente iguales que los nuevos valores que proporcionó. Este comportamiento es así por diseño; si desea iniciar las predicciones después del fin de los datos nuevos, debe especificar un paso de inicio y finalización. Para obtener un ejemplo de cómo realizar esta operación, vea Lección 5: Extender el modelo de serie temporal.
También, observe que no proporcionó los datos nuevos para la región del Pacífico. Por consiguiente, Analysis Services devuelve las predicciones nuevas para los cinco intervalos de tiempo.
Quantity |
EXTEND_MODEL_CASES |
---|---|
M200 Europe |
$TIMEQuantity
7/25/2008 0:0010
8/25/2008 0:0015
9/25/2008 0:0072
10/25/2008 0:0069
11/25/2008 0:0068
|
M200 Pacific |
$TIMEQuantity
7/25/2008 0:0046
8/25/2008 0:0044
9/25/2008 0:0042
10/25/2008 0:0042
11/25/2008 0:0038
|
Ejemplo 4: devolver estadísticas en una predicción de serie temporal
La función PredictTimeSeries no admite INCLUDE_STATISTICS como parámetro. Sin embargo, se puede utilizar la consulta siguiente para devolver las estadísticas de predicción para una consulta de serie temporal. Este enfoque también se puede utilizar con modelos que tienen columnas de tabla anidadas.
En este modelo determinado, el atributo de predicción es Quantity, de modo que debe utilizar [Quantity] como primer argumento de la función PredictTimeSeries. Si el modelo usa un atributo de predicción diferente, puede sustituir un nombre de columna distinto.
SELECT FLATTENED [Model Region],
(SELECT
$Time,
[Quantity] as [PREDICTION],
PredictVariance([Quantity]) AS [VARIANCE],
PredictStdev([Quantity]) AS [STDEV]
FROM
PredictTimeSeries([Quantity], 3) AS t
) AS t
FROM Forecasting
WHERE [Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 North America'
Resultados del ejemplo:
Model Region |
t.$TIME |
t.PREDICTION |
t.VARIANCE |
t.STDEV |
---|---|---|---|---|
M200 Europe |
7/25/2008 12:00:00 AM |
121 |
11.6050581415597 |
3.40661975300439 |
M200 Europe |
8/25/2008 12:00:00 AM |
142 |
10.678201866621 |
3.26775180615374 |
M200 Europe |
9/25/2008 12:00:00 AM |
152 |
9.86897842568614 |
3.14149302493037 |
M200 North America |
7/25/2008 12:00:00 AM |
163 |
1.20434529288162 |
1.20434529288162 |
M200 North America |
8/25/2008 12:00:00 AM |
178 |
1.65031343900634 |
1.65031343900634 |
M200 North America |
9/25/2008 12:00:00 AM |
156 |
1.68969399185442 |
1.68969399185442 |
Nota
La palabra clave FLATTENED se usó en este ejemplo para hacer que los resultados sean más fáciles de presentar en una tabla; sin embargo, si su proveedor admite conjuntos de filas jerárquicos, puede omitirla. Si omite la palabra clave FLATTENED, la consulta devuelve dos columnas: la primera contiene el valor que identifica la serie de datos [Model Region] y la segunda contiene la tabla anidada de estadísticas.