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

本文解决在使用Python statsmodels库进行OLS回归分析时遇到的索引对齐错误,通过将数据转换为list类型并重新构建DataFrame,确保了数据索引的一致性,从而避免了ValueError异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在运行以下代码时

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
==============================================================================

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值