Python-统计模型-不同的输入类型导致不同的输出类型



我使用Statsmodel训练一些时间序列模型,发现一些输出的数据类型会因输入类型而异,而我希望输出的类型与输入类型无关。

我的问题是,这在statsmodels(以及其他包,即sklearn(中正常吗?如果没有,处理这种情况的正常/标准/惯例是什么?

我下面有一个例子。如果我使用pandas.Series作为输入,那么统计模型的输出bse将是pandas.Series。如果输入是list,那么输出将是np.array

from statsmodels.tsa.arima_model import ARIMA
x1 = pd.Series([1.5302615469999998,1.130221162,1.059648341,1.246757738,0.98096523,1.173285138,
1.630229825,1.6447988169999999,1.753422,1.7624994719999998,1.60655743,1.7999185709999999,
1.7284643419999999,1.74167109,1.606315199,1.510957898,1.38138611,1.4421003190000001,1.172060761,
0.978149498,0.878831354,0.802660206])
x2 = [s for s in x1]
model1 = ARIMA(x1, order=(1,1,0))
model2 = ARIMA(x2, order=(1,1,0))
model_fit1 = model1.fit(disp=False)
model_fit2 = model2.fit(disp=False)
model_fit1.bse #outputs pandas series
model_fit2.bse #outputs numpy array

这适用于统计模型中的所有或大多数模型和许多函数。这是熊猫支持的一部分。

Pandas Series或DataFrames为设计矩阵提供索引和其他信息,如列名,模型和许多函数试图保留它,并返回具有适当索引的Series或DataFrame。

如果可能的话,任何其他类型都将转换为numpy数组(np.asaray(,并且这些数据结构所具有的任何附加信息都将被忽略。

因此,规则是,如果用户使用panda,那么代码假设用户想要返回匹配的panda数据结构。这可以扩展到panda之外的其他数据结构,但目前还没有计划支持其他包中的数据结构。

最新更新