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

 

你可能感兴趣的:(python)