2011-12-27 3 views
3

아래 코드는 의도 한대로 작동하지만 필요한 것은 아닙니다. c[1]c[1:]으로 변경하여 모든 x 변수에 대해 회귀 분석을하고 싶습니다. 그 변경 (및 해당 x 레이블을 추가 할 때), 다음 오류가 발생합니다 : ValueError: matrices are not aligned. 누군가 이런 일이 일어나는 이유를 설명하고 코드 수정을 제안 할 수 있습니까? 감사.Python, Numpy 및 OLS

from numpy import * 
from ols import * 

a = [[.001,.05,-.003,.014,.035,-.01,.032,-.0013,.0224,.005],[-.011,.012,.0013,.014,-.0015,.019,-.032,.013,-.04,-.05608], 
[.0021,.02,-.023,.0024,.025,-.081,.032,-.0513,.00014,-.00015],[.001,.02,-.003,.014,.035,-.001,.032,-.003,.0224,-.005], 
[.0021,-.002,-.023,.0024,.025,.01,.032,-.0513,.00014,-.00015],[-.0311,.012,.0013,.014,-.0015,.019,-.032,.013,-.014,-.008], 
[.001,.02,-.0203,.014,.035,-.001,.00032,-.0013,.0224,.05],[.0021,-.022,-.0213,.0024,.025,.081,.032,.05313,.00014,-.00015], 
[-.01331,.012,.0013,.014,.01015,.019,-.032,.013,-.014,-.012208],[.01021,-.022,-.023,.0024,.025,.081,.032,.0513,.00014,-.020015]] 


c = column_stack(a) 
y = c[0] 
m = ols(y, c[1], y_varnm='y', x_varnm=['x1']) 
print m.summary() 

편집 : 부분적으로 해결책을 찾았지만 여전히 문제가 있습니다. 아래의 코드는 9 가지 설명 변수 중 8 가지에 적용됩니다.

c = column_stack(a) 
y = c[0] 
x = column_stack([c[i] for i in range(1, 9)]) 
m = ols(y, x, y_varnm='y', x_varnm=['x1','x2','x3','x4','x5','x6','x7','x8']) 
print m.summary() 

그러나 9 번째 x 변수를 포함 시키려고하면 다음 오류가 표시됩니다. RuntimeWarning: divide by zero encountered in double_scalars. 왜 그런가?

c = column_stack(a) 
y = c[0] 
x = column_stack([c[i] for i in range(1, len(a))]) 
m = ols(y, x, y_varnm='y', x_varnm=['x1','x2','x3','x4','x5','x6','x7','x8','x9']) 
print m.summary() 
+0

이 ols''무엇입니까? 나에게 그것은 "보통 최소 사각형"을 의미하지만, 별도의 라이브러리를 사용하지 않을 것입니다. –

+0

OLS는 Numpy와 함께 작동하는 클래스입니다. 그것은 다변량 회귀 모델을 추정하고 적합 통계를 제공합니다. – johnjdc

+0

OLS : http://www.scipy.org/Cookbook/OLS – askewchan

답변

3

난 당신이 사용하고있는 OLS 모듈에 대해 아무것도 몰라 : 여기에 코드입니다 (len(a) = 10 참고). 당신의 cikits.statsmodels으로 다음하려고하면, 그것은 작동합니다 :

import numpy as np 
import scikits.statsmodels.api as sm 

a = np.array([[.001,.05,-.003,.014,.035,-.01,.032,-.0013,.0224,.005],[-.011,.012,.0013,.014,-.0015,.019,-.032,.013,-.04,-.05608], 
[.0021,.02,-.023,.0024,.025,-.081,.032,-.0513,.00014,-.00015],[.001,.02,-.003,.014,.035,-.001,.032,-.003,.0224,-.005], 
[.0021,-.002,-.023,.0024,.025,.01,.032,-.0513,.00014,-.00015],[-.0311,.012,.0013,.014,-.0015,.019,-.032,.013,-.014,-.008], 
[.001,.02,-.0203,.014,.035,-.001,.00032,-.0013,.0224,.05],[.0021,-.022,-.0213,.0024,.025,.081,.032,.05313,.00014,-.00015], 
[-.01331,.012,.0013,.014,.01015,.019,-.032,.013,-.014,-.012208],[.01021,-.022,-.023,.0024,.025,.081,.032,.0513,.00014,-.020015]]) 

y = a[:, 0] 
x = a[:, 1:] 
results = sm.OLS(y, x).fit() 
print results.summary() 

출력을 :

 Summary of Regression Results 
======================================= 
| Dependent Variable:   ['y']| 
| Model:       OLS| 
| Method:    Least Squares| 
| # obs:       10.0| 
| Df residuals:     1.0| 
| Df model:      8.0| 
============================================================================== 
|     coefficient  std. error t-statistic   prob. | 
------------------------------------------------------------------------------ 
| x0      0.2557   0.6622   0.3862   0.7654 | 
| x1     0.03054   1.453   0.0210   0.9866 | 
| x2      -3.392   2.444  -1.3877   0.3975 | 
| x3      1.445   1.474   0.9808   0.5062 | 
| x4     0.03559   0.2610   0.1363   0.9137 | 
| x5     -0.7412   0.8754  -0.8467   0.5527 | 
| x6     0.02289   0.2466   0.0928   0.9411 | 
| x7      0.5754   1.413   0.4074   0.7537 | 
| x8     -0.4827   0.7569  -0.6378   0.6386 | 
============================================================================== 
|       Models stats      Residual stats | 
------------------------------------------------------------------------------ 
| R-squared:      0.8832 Durbin-Watson:    2.578 | 
| Adjusted R-squared:   -0.05163 Omnibus:     0.5325 | 
| F-statistic:     0.9448 Prob(Omnibus):    0.7663 | 
| Prob (F-statistic):   0.6663 JB:      0.1630 | 
| Log likelihood:     41.45 Prob(JB):     0.9217 | 
| AIC criterion:     -64.91 Skew:      0.4037 | 
| BIC criterion:     -62.18 Kurtosis:     2.405 | 
------------------------------------------------------------------------------ 
+0

이것은 작동합니다. 감사. 빠른 예 : 필자는 예제에서 y = 각 하위 목록의 첫 번째 숫자를 설정하고 x1은 각 하위 목록의 두 번째 숫자 등을 설정했습니다. y = 전체 첫 번째 하위 목록이되도록 설정했다고 생각합니다. – johnjdc

+0

예를 들어,이 코드를 사용하여 첫 번째 x 변수에 대해 회귀하려고하면 회귀가 실패하는 이유는 무엇입니까? "results = sm.OLS (y, x [0]). fit()"? – johnjdc

+0

아, 지적 해 주셔서 고마워요. 나는 방금 내가했던 수정이 그것을 고친다 고 생각한다. – ars

관련 문제