我正在使用rpy2从python运行auto.arima()模型。我的预测输出了一个rpy2.robjects.vectors.ListVector类型的对象。
input1: type(forecast)
output: rpy2.robjects.vectors.ListVector
问题:如何将此预测以rpy2.robjects.vectors.ListVector的形式转换回python?请注意,我查看了其他帖子,但答案似乎对问题过于具体,而且无论如何都无法找出答案。
请注意,此ListVector具有以下名称:
input: print(forecast.names)
output: [1] "method" "model" "level" "mean" "lower" "upper"
[7] "x" "xname" "fitted" "residuals"
答案 0 :(得分:5)
可以使用“.rx”转换回python来选择感兴趣的矢量,然后使用numpy.array:
arima_mean = np.array(forecast.rx('mean'))
再到pandas,首先压扁numpy数组:
pd.DataFrame({'mean':arima_mean.flatten()} )
答案 1 :(得分:0)
如果您还希望预测数据框的上限为80%且下限为80%,则可以使用
pd.DataFrame({'forecast':np.array(forecast.rx('mean')).flatten(),
'lo80':np.array(forecast.rx('lower')[0][:2]),
'hi80':np.array(forecast.rx('upper')[0][:2])})