установить частоту временных рядов в Python на 12? - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу установить частоту level_ts и sales_ts series на 12. Я использую robjects.r ('ts') в качестве ts, но нет разницы, будет ли тип частоты = 12 или частота = 1

Я бегу в R, и в соответствии с этим скриптом Python я понял, что он всегда рассматривает свою частоту как 1

Я мог бы справиться с этим в R, но не знаю, как это сделать в Python

Я преобразовал данные в вектор R, чтобы использовать их внутри ts (), но это не сработало

import numpy as np
import pandas as pd
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
ts=robjects.r('ts')
forecast=importr('forecast')
from rpy2.robjects import pandas2ri
pandas2ri.activate()

# data_level and data_sales are lists with length 48
leveldata = pd.DataFrame(data = data_level, columns = ['VALUE'])
salesdata = pd.DataFrame(data = data_sales, columns = ['VALUE'])

# R vectors
level_vector = robjects.FloatVector(np.log(leveldata['VALUE']))
sales_vector = robjects.FloatVector(salesdata['VALUE'])

# I want to set the frequency=12 but I can't
level_ts = ts(level_vector, frequency=12) 
sales_ts = ts(sales_vector, frequency=12)

month_index = len(level_ts) % 12
fcast_index = 12 - month_index

# multivariate, I want to use time series in fit_arimax line
fit_arimax = forecast.auto_arima(level_ts, d=1, xreg=sales_ts)
fcast_sales = np.array([40, 65, 90, 30, 30, 40, 50, 50, 70, 80, 90, 130, 78])
forecast_output = forecast.forecast(fit_arimax, xreg=fcast_sales, h=fcast_index)
vector = np.array(forecast_output.rx('mean'))
fcast_level = np.exp(vector)

# output
invdays = []
for i in range(fcast_index):
    invdays.append((fcast_level[0][i] / fcast_sales[i + 1]) * 2)
print(fcast_level)
print(invdays)

Я предполагаю установить частоту временного ряда как 12 вместо 1, data_level и data_sales - данные за последние 4 года, и каждая запись - данные за один месяц

...