ValueError: the indices for endog and exog are not aligned 解决方案

在运行以下代码时

x = data1        # service类型数据
y = data2
X = sm.add_constant(x)
result = (sm.OLS(y, X)).fit()
print(result.summary)

报错:ValueError: the indices for endog and exog are not aligned

解决思路:

1、排查数据类型:与service或dataframe类型无关,也与y和X的数据类型是否一致无关

2、排查数据长度:len(y)和len(X)的长度一致

3、发现虽然len长度一致,但是数据的索引值不同。问题出在这里。

因为我的x数据,是2个dataframe数据通过concat方式纵向合并起来的,所以数据的索引值不同。

如下图:

完整数据是:

       date 
0    20180101
1    20180102
2    20180103
3    20180104
4    20180105
5    20180106

但合并数据是这样展示但:

       date 
0    20180101
1    20180102
2    20180103
3    20180104
0    20180105
1    20180106

就是因为2组用来计算的service数据,左侧的索引值不同,导致报错。

解决方案:

无论原始数据是dataframe还是service类型,都先转换成list类型。

以dataframe类型数据为例:

datalist = data['close'].tolist()                    # 将dataframe转换成list
datalist = data + templist                           # list合并
dataf = pd.DataFrame(datalist, columns=['close'])    # list转换成dataframe

经过前期对数据的一系列处理,再次执行程序,报错消失。

正常显示:

                            OLS Regression Results
==============================================================================
Dep. Variable:                  close   R-squared:                       0.326
Model:                            OLS   Adj. R-squared:                  0.326
Method:                 Least Squares   F-statistic:                     1932.
Date:                Tue, 22 Jan 2019   Prob (F-statistic):               0.00
Time:                        14:34:33   Log-Likelihood:                -11706.
No. Observations:                4000   AIC:                         2.342e+04
Df Residuals:                    3998   BIC:                         2.343e+04
Df Model:                           1
Covariance Type:            nonrobust
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          6.8217      0.092     74.332      0.000       6.642       7.002
close          0.3305      0.008     43.951      0.000       0.316       0.345
==============================================================================
Omnibus:                      786.494   Durbin-Watson:                   0.009
Prob(Omnibus):                  0.000   Jarque-Bera (JB):             1384.316
Skew:                           1.260   Prob(JB):                    2.51e-301
Kurtosis:                       4.399   Cond. No.                         15.7
==============================================================================

 

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个错误通常出现在使用回归模型时,endog矩阵(表示因变量)和exog矩阵(表示自变量)的行数不相等时。这意味着您的数据集中某些行缺少值或被移除,导致矩阵的大小不一致。 您可以通过检查您的数据集并确保每个样本都有完整的因变量和自变量来解决此问题。如果有缺失值,您可以选择填充缺失值或删除缺失值所在的行。您还可以检查您的代码,确保正确地加载和处理数据。 ### 回答2: 该错误消息的意思是endog(因变量)矩阵和exog(自变量)矩阵的大小不同。在许多统计和经济分析模型中,我们需要解释某个因变量(endog)与一组自变量(exog)之间的关系。为了进行这种分析,我们必须确保所使用的数据矩阵维度相匹配。 这个错误通常发生在下列情况下:当你使用一个包或函数来拟合统计模型时,将数据提供给该函数时,endogexog矩阵的大小不一致。也就是说,endog矩阵的行数和exog矩阵的行数不同。 要解决这个问题,你可以检查输入数据的维度是否正确。确保endogexog矩阵有相同的行数。如果endogexog是由不同的数据源生成的,可以先检查数据是否正确合并。另外,还要确保数据没有任何缺失值或其他格式错误。 此外,你还可以查看文档或示例代码,以了解如何正确使用该包或函数,并确保正确使用函数的输入参数。 总之,当你遇到"raise ValueError("endog and exog matrices are different sizes") ValueError: endog and exog matrices are different sizes"错误时,需要检查输入的endogexog矩阵的大小是否一致,以及数据是否正确合并和处理。 ### 回答3: 这个错误的意思是,输入的endog矩阵和exog矩阵的大小不同。 在统计学中,endog矩阵通常表示因变量,而exog矩阵表示自变量。在进行统计分析时,需要确保endogexog具有相同的样本数量。 如果出现这个错误,可能是因为输入的endogexog矩阵的维度不匹配或者样本数量不一致。为了解决这个问题,我们可以检查输入的矩阵维度,并确保它们具有相同的样本数量。 如果endogexog的维度不同,可以尝试调整它们的维度,或者重新选择合适的数据集来进行分析。如果样本数量不一致,可以考虑删除一些数据或者添加缺失的数据,使得endogexog具有相同的样本数量。 总之,这个错误提示是在提醒我们检查endogexog矩阵的大小,以确保它们具有相同的样本数量,从而进行正确的统计分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值