【问题标题】:QuantileRegression ValueError: operands could not be broadcast together with shapesQuantileRegression ValueError:操作数无法与形状一起广播
【发布时间】:2018-08-18 19:33:32
【问题描述】:

我正在尝试使用 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中的分位数regression.py文件。

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

我看过类似的关于堆栈溢出的帖子,建议检查目标变量的数据类型是否为数字。 这是变量的 dtype:

ASBCU_SUM: int64

月份:类别

年份:类别

WeekofMonth:类别

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 年数据开发模型时,数据类型相同。

非常感谢任何帮助..

【问题讨论】:

  • 请提供重现错误的 dfTrainingData 示例行。并包含一个包含所有 import 行的完整代码块,以便我们可以运行数据和代码来提供帮助。
  • 最有可能是github.com/statsmodels/statsmodels/issues/2597 检查设计矩阵是否满秩。
  • 我遇到了类似的问题,任何帮助都会很棒。

标签: python pandas statsmodels quantile-regression


【解决方案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())

会出现bug:

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

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

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 2012-10-31
    • 2013-04-07
    • 2012-08-05
    • 2020-06-20
    • 2014-08-24
    • 2018-12-26
    • 2018-02-01
    • 2018-04-25
    相关资源
    最近更新 更多