PredictTimeSeries (DMX)

Retorna previsões de valores futuros para os dados das séries temporais. Os dados de séries temporais são contínuos e podem ser armazenados em uma tabela aninhada ou em uma tabela de casos. A função PredictTimeSeries sempre retorna uma tabela aninhada.

Sintaxe

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 o nome da coluna a ser prevista. A coluna pode conter dados escalares ou tabulares.

  • n
    Especifica o número de etapas seguintes a serem previstas. Se um valor não for especificado para n, o padrão será 1.

    n não pode ser 0. A função retornará um erro se você não fizer pelo menos uma previsão.

  • n-start, n-end
    Especifica um intervalo de etapas de série temporal.

    n-start deve ser um número inteiro e não pode ser 0.

    n-end deve ser um número inteiro maior que n-start.

  • <source query>
    Define os dados externos usados para fazer previsões.

  • REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
    Indica como manipular novos dados.

    REPLACE_MODEL_CASES especifica que os pontos de dados no modelo devem ser substituídos pelos novos dados. No entanto as previsões são baseadas nos padrões do modelo de mineração existentes.

    EXTEND_MODEL_CASES especifica que os novos dados devem ser adicionados ao conjunto de dados de treinamento original. As previsões futuras são feitas no conjunto de dados composto somente depois que os novos dados foram usados.

    Estes argumentos só podem ser usados quando os novos dados são adicionados usando uma instrução PREDICTION JOIN. Se você usar uma consulta PREDICTION JOIN e não especificar um argumento, o padrão será EXTEND_MODEL_CASES.

Tipo de retorno

Uma <table expression>.

Comentários

O algoritmo Time Series da Microsoft não suporta a previsão histórica ao usar a instrução PREDICTION JOIN para adicionar novos dados.

Em um PREDICTION JOIN, o processo de previsão sempre começa no período imediatamente após o final da série de treinamento original. Isso é verdadeiro mesmo se você adicionar novos dados. Por isso, o parâmetro n e os valores de parâmetro n-start devem ser um número inteiro maior que 0.

ObservaçãoObservação

O comprimento dos dados novos não afeta o ponto de partida da previsão. Portanto, se você quiser adicionar novos dados e também fazer novas previsões, certifique-se de definir o ponto de partida da previsão com um valor maior do que o comprimento dos dados novos ou estenda o ponto final da previsão com base no comprimento dos dados novos.

Exemplos

Os exemplos seguintes mostram como fazer previsões com relação a um modelo de série temporal existente:

  • O primeiro exemplo mostra como fazer um número especificado de previsões com base no modelo atual.

  • O segundo exemplo mostra como usar o parâmetro REPLACE_MODEL_CASES para aplicar os padrões do modelo especificado a um novo conjunto de dados.

  • O terceiro exemplo mostra como usar o parâmetro EXTEND_MODEL_CASES para atualizar um modelo de mineração com dados novos.

Para obter mais informações sobre como trabalhar com modelos de série temporal, consulte o tutorial de mineração de dados, Lição 2: Criando um cenário de previsão (Tutorial de data mining intermediário) e Tutorial DMX de previsão de série temporal.

ObservaçãoObservação

Você pode obter diferentes resultados do seu modelo. Os resultados dos exemplos a seguir são fornecidos somente para ilustrar o formato do resultado.

Exemplo 1: Prevendo um número de frações de tempo

O exemplo a seguir usa a função PredictTimeSeries para retornar uma previsão das três próximas etapas e restringe os resultados para a série M200 nas regiões Europa e Pacífico. Neste modelo específico, como o atributo previsível é Quantity, você deve usar [Quantity] como o primeiro argumento para a função 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:

Região de modelo

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

Neste exemplo, a palavra-chave FLATTENED foi usada para facilitar a leitura dos resultados. Se você não usar a palavra-chave FLATTENED e, em vez disso, retornar um conjunto de linhas hierárquico, esta consulta retornará duas colunas. A primeira coluna contém o valor de [ModelRegion] e a segunda coluna contém uma tabela aninhada com duas colunas: $TIME, que mostra as frações de tempo que estão sendo previstas, e Quantity, que contém os valores previstos.

Exemplo 2: Adicionando novos dados e usando REPLACE_MODEL_CASES

Suponha que você acha que os dados estavam incorretos para uma região específica e deseja usar os padrões no modelo, mas ajustar as previsões para que correspondam aos novos dados. Ou, você pode achar que outra região tenha mais tendências confiáveis e desejar aplicar o modelo mais confiável aos dados de uma região diferente.

Nestes cenários, você pode usar o parâmetro REPLACE_MODEL_CASES e especificar um novo conjunto de dados a serem usados como dados históricos. Dessa maneira, as projeções serão baseadas nos padrões do modelo especificado, mas continuarão naturalmente a partir do final dos novos pontos de dados. Para obter um detalhamento completo deste cenário, consulte Adicionando um modelo de previsão agregado (Tutorial de mineração de dados intermediário).

A seguinte consulta PREDICTION JOIN ilustra a sintaxe para substituir dados e fazer novas previsões. Para os dados de substituição, o exemplo recupera o valor das colunas Amount e Quantity e multiplica cada um deles por dois:

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]

A tabela a seguir compara os resultados da previsão.

Previsões originais

Previsões atualizadas

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

Exemplo 3: Adicionando novos dados e usando EXTEND_MODEL_CASES

O exemplo 3 ilustra o uso da opção EXTEND_MODEL_CASES para fornecer novos dados que são adicionados ao final de uma série de dados existentes. Em vez de substituir os pontos de dados existentes, os novos dados são adicionados no modelo.

No exemplo a seguir, os novos dados são fornecidos na instrução SELECT que segue NATURAL PREDICTION JOIN. Você pode fornecer várias linhas da nova entrada com esta sintaxe, mas cada nova linha de entrada deve ter um carimbo de data/hora exclusivo:

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')

Como a consulta usa a opção EXTEND_MODEL_CASES, o Analysis Services executa as seguintes ações para suas previsões:

  • Aumenta o tamanho total dos casos de treinamento adicionando os dois novos meses de dados ao modelo.

  • Inicia as previsões no final dos dados do caso anterior. Portanto as duas primeiras previsões representam os novos dados de vendas reais que você acabou de adicionar ao modelo.

  • Retorna novas previsões para as três frações de tempo restantes com base no modelo recém-expandido.

A seguinte tabela lista os resultados da consulta do Exemplo 2. Observe que os dois primeiros valores retornados para M200 Europa são exatamente os mesmos dos novos valores fornecidos. Esse comportamento ocorre por design. Se você desejar iniciar as previsões após o final dos novos dados, deverá especificar um período de início e de término. Para obter um exemplo de como fazer isso, consulte Lição 5: Estendendo o modelo de série temporal.

Além disso, observe que você não forneceu novos dados para a região do Pacífico. Portanto, o Analysis Services retorna novas previsões para todas as cinco frações de tempo.

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

Exemplo 4: Retornando estatísticas em uma previsão de série temporal

A função PredictTimeSeries não suporta o INCLUDE_STATISTICS como um parâmetro. No entanto, a seguinte consulta pode ser usada para retornar as estatísticas de previsão para uma consulta de série temporal. Esse método também pode ser usado com modelos que possuam colunas de tabela aninhada.

Neste modelo específico, o atributo previsível é Quantity, portanto você deve usar [Quantity] como o primeiro argumento para a função PredictTimeSeries. Se seu modelo usa um atributo previsível diferente, você pode substituir um nome de coluna diferente.

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 do exemplo:

Região de modelo

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

ObservaçãoObservação

A palavra-chave FLATTENED foi usada neste exemplo para facilitar a apresentação dos resultados em uma tabela; no entanto, se o provedor suportar conjuntos de linhas hierárquicos, você poderá omitir a palavra-chave FLATTENED. Se você omitir a palavra-chave FLATTENED, a consulta retornará duas colunas, a primeira contendo o valor que identifica a série de dados [Model Region] e a segunda contendo a tabela aninhada de estatísticas.