使用 IF 语句的条件关联 - Python
Conditional correlations using an IF statement - Python
我正在尝试执行 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]
按位与运算符 &
优先于 <
(与布尔运算符 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
(注意:在Python中,a < b < c
是a < b and b < c
的句法shorthand,这解释了为什么这仍然被解释为有效表达式。)
我正在尝试执行 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]
按位与运算符 &
优先于 <
(与布尔运算符 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
(注意:在Python中,a < b < c
是a < b and b < c
的句法shorthand,这解释了为什么这仍然被解释为有效表达式。)