>source

조건부 임계 값 상관 관계를 평가하기 위해 IF 문을 수행하려고합니다. 방정식은 다음과 같습니다.

IF 문을 시도했지만 작동하지 않습니다. 나는 pandas 와 함께 그것을 관리 , 그러나 이것은 실제로 나쁜 코드입니다.

p = np.arange(0.1,1,0.1)
r1 = log_r['AEX']; r2 = log_r['MBI10']
np.quantile(r1, p[0])
corrcoef = pd.Series()
if r1<np.quantile(r1,p[0]) & r2<np.quantile(r2,p[0]) & p[0]<0.5:
    corrcoef[0] = np.corrcoef(r1,r2)

또는 다음을 수행했습니다.

df = pd.DataFrame(pd.concat([log_r['AEX'],log_r['MBI10']],axis=1))
df['p0.1 AEX'] = (df['AEX'] < np.quantile(df['AEX'], p[0]))*df['AEX']    
df['p0.1 MBI10'] = (df['MBI10'] < np.quantile(df['MBI10'], p[0]))*df['MBI10']
np.corrcoef(df['p0.1 AEX'],df['p0.1 MBI10'])

이 작동하지만 p[0] 뿐만 아니라이 작업을 수행해야하기 때문에 정말 지저분합니다.  그러나 전체 np.arange  또한 AEX와 MBI10은 내가 가지고있는 2/36 쌍에 불과하므로 더 우아한 솔루션을 찾고 있습니다. 감사합니다!

corrcoef 의 첫 번째 행에 채워진 상관 계수를 얻으려고합니다. . for 루프를 수행하려고 할 때 다음 오류가 발생합니다.

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]


  • 답변 # 1

    비트 AND 연산자 &   < 보다 우선합니다  (부울 연산자 and 와 달리 < 보다 더 약하게 바인딩됩니다. )이므로이 표현은 의도 한대로 구문 분석되지 않습니다.

    r1<np.quantile(r1,p[0]) & r2<np.quantile(r2,p[0]) & p[0]<0.5
    
    

    r1 < (np.quantile(r1,p[0]) & r2) < (np.quantile(r2,p[0]) & p[0]) < 0.5
    
    

    (참고 : 파이썬에서 a < b < c   a < b and b < c 의 구문 적 속기입니다. , 이것이 여전히 유효한 표현으로 해석되는 이유를 설명합니다.)

관련 자료

  • 이전 sapui5 - 버튼으로 스크립트에서 CrossApplicationNavigation 페이지를 닫는 방법
  • 다음 자바 스크립트를 사용한 간단한 유효성 검사 양식