2015-01-13 3 views
-3

왜 SyntaxError를 제공합니까? 두 번째 마지막 줄의 구문이 잘못되었습니다. for jindx in xrange(1, 10):? I 라인 16 RHV 및 LHV에서 numpy.linalg.lstsq()를 실행할 때 어떤 명령을 발생 난, (제 1 행 RHV 절편과 두번째 행 회귀)가 모두 K의 X N 행렬이다이 외에도예기치 않은 SyntaxError : 중첩 루프의 구문이 잘못되었습니다.

import numpy as np 
from __future__ import division 

def olsgmm(lhv, rhv, lags, wight): 
    global Exxprim 
    global inner 
    if len(rhv[:,]) != len(lhv[:,]): 
     print ("olsgmm: leftand right sides must have same number of rows. Currentlyrows are:") 
     len(lhv) 
     len(rhv) 
    T = len(lhv[:,]) 
    N = len(lhv[:,1]) 
    K = len(rhv[:,1]) 
    sebv = np.zeros() 
    Exxprim = np.linalg.inv((rhv.T * rhv)/T) 
    bv = np.linalg.lstsq(rhv, lhv) 
    if (len(weight[:,]) == 1 & len(lhv[:,1]) > 1): 
     weight = weight * np.ones(len(lhv[:,1]),) 
    if (len(lags[:,]) == 1 & len(lhv[:,1]) > 1): 
     lags = lags * np.ones(len(lhv[:,1]),) 
    if weight == -1: 
     sebv = float('nan') 
     R2v = float('nan') 
     R2vadj = float('nan') 
     v = float('nan') 
     F = float('nan') 
    else: 
     errv = lhv - rhv * bv 
     s2 = np.mean(np.power(err, 2)) 
     vary = lhv - np.ones(T, 1) 
     vary = np.mean(np.power(vary, 2)) 
     R2v = (1 - np.divide(s2, vary)) 
     R2adj = (1 - (np.divide(s2, vary)) * (T - 1)/(T - K)).T 
     for indx in xrange(1, N + 1): 
      err = errv[:,indx] 
      if (weight[indx] == 0 | weight[indx] == 1): 
       inner = (np.multiply(rhv, (err * np.ones(1,k))).T * (np.multiply(rhv, np.ones(1, K)))/T 
       for jindx in xrange(1, 10): 
        inneradd = ([np.multiply(rhv, err) for j in xrange(1, T - jindx)] * np.ones(1, k)).T 

시도 그것은 나에게 4 N × N 배열의 계수를 제공합니다. 누구나 계수의 2 K x N 배열로 끝나기 위해 정확한 관절 출력 ls 회귀를 수행하는 방법을 알고 있습니까?

답변

2

당신은 앞 줄에 )을 놓친 : 외부 괄호 쌍 그러나 중복 될

inner = (np.multiply(rhv, (err * np.ones(1,k))).T * (np.multiply(rhv, np.ones(1, K)))/T 
#  ^   2  3    4 432  2   3   4 432 ? 

그건; 최상위 표현식을 그룹화 할 필요가 없습니다. 중복 된 괄호가 두 쌍 더 있습니다. 다음은 잘 작동합니다 :

np.multiply(rhv, err * np.ones(1, k)).T * np.multiply(rhv, np.ones(1, K))/T 

을 논리적 라인 괄호 (또는 대괄호 또는 중괄호)로 묶어 소스 코드의 여러 물리적 줄에 걸쳐하는 파이썬 수 있기 때문에 for 라인은 잘못된 라인의 일부입니다 폐회가 없으므로 )이 아직 없습니다.

어림짐작 : 이해가 안되는 SyntaxError이 표시되면 누락 된 닫는 중괄호를 위의 줄에서 확인하십시오.

+0

내가 얼마나 바보인가? – chabert

관련 문제