Как мне определить или лучше указать горизонт для настоящих и прошлых прогнозов?

#pvlib

#pvlib

Вопрос:

У меня возникла концептуальная проблема с прогнозами pvlib: Проблема в том, что если я запрашиваю «прошлые прогнозы», то я не знаю, каков временной горизонт для прогноза. Для реальных будущих прогнозов это немного более очевидно, наивно я бы просто вычел текущее время из временной метки возвращаемого прогноза, хотя, если запросы данных (в зависимости от модели) выполняются только с часовыми или 6-часовыми интервалами, тогда, похоже, мне пришлось бы добавить эту неопределенность к горизонту, поэтому я все еще не уверен.

Что касается прошлых прогнозов, я просто понятия не имею, что такое горизонт. Как это можно определить?

Этот вопрос относится как к стандартному способу pvlib-python получения данных / прогнозов, так и, я думаю, к специальному скриптуhttps://github.com/wholmgren/get_nomads чтобы получить данные для прогнозов на более отдаленный период в прошлом.

Была бы признательна любая помощь в понимании этой ситуации.

Чтобы попытаться сделать этот вопрос более конкретным, я включаю этот фрагмент кода, взятый из forecast_to_power.ipynb, с измененными временами начала и окончания, чтобы они были в прошлом:

 # built-in python modules
import datetime
import inspect
import os

# scientific python add-ons
import numpy as np
import pandas as pd

# plotting stuff
# first line makes the plots appear in the notebook
%matplotlib inline 
import matplotlib.pyplot as plt
import matplotlib as mpl

# finally, we import the pvlib library
from pvlib import solarposition,irradiance,atmosphere,pvsystem
from pvlib.forecast import GFS, NAM, NDFD, RAP, HRRR

# Choose a location.
# Tucson, AZ
latitude = 32.2
longitude = -110.9
tz = 'US/Mountain'

surface_tilt = 30
surface_azimuth = 180 # pvlib uses 0=North, 90=East, 180=South, 270=West convention
albedo = 0.2

# for this example, let's predict into the past:
start = pd.Timestamp(datetime.date.today(), tz=tz) - pd.Timedelta(days=14) # 14 days ago
end = start   pd.Timedelta(days=7) # 7 days from start

fm = GFS()

forecast_data = fm.get_processed_data(latitude, longitude, start, end)

forecast_data.head()
  
 
temp_air    wind_speed  ghi dni dhi total_clouds    low_clouds  mid_clouds  high_clouds
2019-02-25 06:00:00-07:00   6.581512    1.791610    0.000000    0.000000    0.000000    33.0    0.0 0.0 33.0
2019-02-25 09:00:00-07:00   4.832214    0.567790    392.833659  668.164855  121.831040  0.0 0.0 0.0 0.0
2019-02-25 12:00:00-07:00   3.409973    0.860611    794.120954  910.658669  118.492918  0.0 0.0 0.0 0.0
2019-02-25 15:00:00-07:00   6.841797    0.942555    529.425232  515.727013  222.689391  22.0    0.0 0.0 22.0
2019-02-25 18:00:00-07:00   24.458038   0.466084    11.339769   0.000000    11.339769   52.0    0.0 0.0 52.0
  

Каков временной горизонт для этого обратного прогноза? Могу ли я его настроить? Если да, то как?

Ответ №1:

Для реальных будущих прогнозов это немного более очевидно, наивно, я бы просто вычел текущее время из временной метки возвращаемого прогноза

Да, это верно для истинных прогнозов. Для прошлых прогнозов вы должны определить горизонт таким образом, который соответствует вашей способности делать верные прогнозы.

NCEP поддерживает страницу состояния модели, на которой подробно описывается типичное время, в которое данные модели погоды доступны на его серверах. Каждая модель имеет разную задержку между временем ее инициализации и доступностью прогноза.

Также может помочь документ «Определения арбитра по солнечным прогнозам«.