QuantileRegression ValueError:操作数无法与形状一起广播

时间:2018-03-10 08:44:48

标签: python pandas statsmodels quantile-regression

我正在尝试使用Python中的分位数回归来预测我的目标变量。

我正在考虑进行培训和验证的数据来自2015年10月 - 2017年12月31日。

现在模型已经开发,我试图预测2018年1月的值,这会引发以下错误:

  

ValueError:操作数无法与形状(34,)(33,)

一起广播
mod = smf.quantreg('ASBCU_SUM~Month+Year+WeekofMonth+DayNum+isHoliday+PCOP_CS+PCOP_LS+PCOP_IFS+PCOP_LSS+PCOP_FSS+PCOP_FS+DayOfWeek_6+DayOfWeek_5+DayOfWeek_2+DayOfWeek_7+DayOfWeek_3+DayOfWeek_4',dfTrainingData)

res = mod.fit(q=0.8)

如果我检查,则错误来自statmodels中的quantile regression.py文件。

diff = np.max(np.abs(beta - beta0))

我在堆栈溢出上经历了类似的帖子,建议检查目标变量的数据类型是否为数字。 这是变量的dtype:

  

ASBCU_SUM:int64

     

月:类别

     

年份:类别

     

WeekofMonth:category

     

isHoliday:int64

     

DayNum:int32

     

PCOP_SUM:int64

     

PCOP_CS:int64

     

PCOP_LS:int64

     

PCOP_IFS:int64

     

PCOP_LSS:int64

     

PCOP_FS:int64

     

PCOP_FSS:int64

     

DayOfWeek_3:float64

     

DayOfWeek_2:float64

     

DayOfWeek_5:float64

     

DayOfWeek_7:float64

     

DayOfWeek_4:float64

     

DayOfWeek_6:float64

使用2015-2017数据开发模型时,数据类型相同。

我真的很感激任何帮助......

1 个答案:

答案 0 :(得分:1)

我之前也遇到过同样的错误。查看@Josef 的回复,发现输入矩阵不是满秩,修复秩问题后,bug 已修复。 例如,如果您运行以下代码:

import statsmodels.api as sm
import statsmodels.formula.api as smf
import pandas as pd
data = {'col_1': [3, 2, 1, 0], 'col_2': [0, 0, 0, 0],
        'y': [1,2,3,4]}
data = pd.DataFrame.from_dict(data)
data.head()
model =smf.quantreg("y ~ col_1 + col_2", data).fit()
print(model.summary())

会出现错误:

diff = np.max(np.abs(beta - beta0))
ValueError: operands could not be broadcast together with shapes (3,)
(2,) 

如果您删除导致非满级问题的“col_2”,则该错误将得到修复。