применение обобщенной аддитивной модели к xarray - PullRequest
0 голосов
/ 21 мая 2018

У меня есть файл netCDF, который я прочитал с помощью xarray.Массив содержит времена, широту, долготу и только одну переменную данных (то есть значения индекса)

# read the netCDF files
    with xr.open_mfdataset('wet_tropics.nc') as wet:
    print(wet)

    Out[]: 
    <xarray.Dataset>
    Dimensions:       (time: 1437, x: 24, y: 20)
    Coordinates:
      * y             (y) float64 -1.878e+06 -1.878e+06 -1.878e+06 -1.878e+06 ...
      * x             (x) float64 1.468e+06 1.468e+06 1.468e+06 1.468e+06 ...
      * time          (time) object '2013-03-29T00:22:28.500000000' ...
    Data variables:
        index_values  (time, y, x) float64 dask.array<shape=(1437, 20, 24), chunksize=(1437, 20, 24)>

Пока все хорошо.Теперь мне нужно применить обобщенную аддитивную модель к каждой ячейке сетки в массиве.Модель, которую я хочу использовать, взята из Facebook Prophet (https://facebook.github.io/prophet/), и я уже успешно применил ее к массиву данных pandas. Например:

cns_ap['y'] = cns_ap['av_index']  # Prophet requires specific names 'y' and 'ds' for column names
cns_ap['ds'] = cns_ap['Date']
cns_ap['cap'] = 1
m1 = Prophet(weekly_seasonality=False,  # disables weekly_seasonality
             daily_seasonality=False,  # disables daily_seasonality
             growth='logistic',  # logistic because indices have a maximum 
             yearly_seasonality=4,  # fourier transform. int between 1-10
             changepoint_prior_scale=0.5).fit(cns_ap)  
future1 = m1.make_future_dataframe(periods=60,  # 5 year prediction
                                   freq='M',  # monthly predictions
                                   include_history=True)  # fits model to all historical data
future1['cap'] = 1  # sets cap at maximum index value
forecast1 = m1.predict(future1)
# m1.plot_components(forecast1, plot_cap=False);
# m1.plot(forecast1, plot_cap=False, ylabel='CNS index', xlabel='Year');

Проблема в том, что теперь мне нужно: 1) перебрать каждую ячейку файла netCDF, 2) получить все значения для этой ячейки за время, 3) применить GAM (используя fbprophet), а затем экспортировать и вывести на экран результаты.

Вопрос: Есть ли у вас какие-либо идеи о том, как перебрать растр, получить значения index_values ​​каждого пикселя за все время, чтобы я мог запустить GAM?Я думаю, что вложенный цикл был бы возможен, хотя я не знаю, как создать цикл, проходящий через каждую ячейку.

Любая помощь приветствуется

...