corr是相关系数,意思是I有3个相关值,std_mev是标准差值,也就是3个标准差值。我希望我的代码检查下面代码中的条件是否满足,如果满足了,它应该执行为true的语句,并计算induc值,如代码所示。不幸的是,没有错误,甚至没有执行来产生工业值,请协助,我有一张附图来显示这一点。

。守则如下:
corr1,_ = pearsonr(list_losses, list_mev1)
print('Pearsons correlation[loss and MEV1]: %.4f' % corr1)
corr2,_ = pearsonr(list_losses, list_mev2)
print('Pearsons correlation[loss and MEV2]: %.4f' % corr2)
corr3,_ = pearsonr(list_losses, list_mev3)
print('Pearsons correlation[loss and MEV3]: %.4f' % corr3)
### calculating standard deviation
std_mev1 = statistics.stdev(std_mev1_list)
std_mev2 = statistics.stdev(std_mev2_list)
std_mev3 = statistics.stdev(std_mev3_list)
print("Std MEV 1 = ",std_mev1)
print("Std MEV 1 = ",std_mev2)
print("Std MEV 1 = ",std_mev3)
if corr1>=0.5 and corr2>=0.5 and corr3>=0.5:
induc_cur_ls = cur_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
induc_on2_ls = on2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
induc_tt2_ls = tt2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
induc_sx2_ls = sx2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
induc_nn2_ls = nn2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
elif corr1>=0.5 and corr2>=0.5 and corr3<0.5:
induc_cur_ls = cur_ls*(1+std_mev1)*(1+std_mev2)
induc_on2_ls = on2_ls*(1+std_mev1)*(1+std_mev2)
induc_tt2_ls = tt2_ls*(1+std_mev1)*(1+std_mev2)
induc_sx2_ls = sx2_ls*(1+std_mev1)*(1+std_mev2)
induc_nn2_ls = nn2_ls*(1+std_mev1)*(1+std_mev2)
elif corr1>=0.5 and corr3>=0.5 and corr2<0.5:
induc_cur_ls = cur_ls*(1+std_mev1)*(1+std_mev3)
induc_on2_ls = on2_ls*(1+std_mev1)*(1+std_mev3)
induc_tt2_ls = tt2_ls*(1+std_mev1)*(1+std_mev3)
induc_sx2_ls = sx2_ls*(1+std_mev1)*(1+std_mev3)
induc_nn2_ls = nn2_ls*(1+std_mev1)*(1+std_mev3)
elif corr3>=0.5 and corr2>=0.5 and corr1<0.5:
induc_cur_ls = cur_ls*(1+std_mev2)*(1+std_mev3)
induc_on2_ls = on2_ls*(1+std_mev2)*(1+std_mev3)
induc_tt2_ls = tt2_ls*(1+std_mev2)*(1+std_mev3)
induc_sx2_ls = sx2_ls*(1+std_mev2)*(1+std_mev3)
induc_nn2_ls = nn2_ls*(1+std_mev2)*(1+std_mev3)
elif corr1>=0.5 and corr2<0.5 and corr3<0.5:
induc_cur_ls = cur_ls*(1+std_mev1)
induc_on2_ls = on2_ls*(1+std_mev1)
induc_tt2_ls = tt2_ls*(1+std_mev1)
induc_sx2_ls = sx2_ls*(1+std_mev1)
induc_nn2_ls = nn2_ls*(1+std_mev1)
elif corr2>=0.5 and corr1<0.5 and corr3<0.5:
induc_cur_ls = cur_ls*(1+std_mev2)
induc_on2_ls = on2_ls*(1+std_mev2)
induc_tt2_ls = tt2_ls*(1+std_mev2)
induc_sx2_ls = sx2_ls*(1+std_mev2)
induc_nn2_ls = nn2_ls*(1+std_mev2)
elif corr3>=0.5 and corr1<0.5 and corr2<0.5:
induc_cur_ls = cur_ls*(1+std_mev3)
induc_on2_ls = on2_ls*(1+std_mev3)
induc_tt2_ls = tt2_ls*(1+std_mev3)
induc_sx2_ls = sx2_ls*(1+std_mev3)
induc_nn2_ls = nn2_ls*(1+std_mev3)
else:
induc_cur_ls = cur_ls
induc_on2_ls = on2_ls
induc_tt2_ls = tt2_ls
induc_sx2_ls = sx2_ls
induc_nn2_ls = nn2_ls
print(induc_cur_ls)
print(induc_on2_ls)
print(induc_tt2_ls)
print(induc_sx2_ls)
print(induc_nn2_ls)发布于 2021-05-16 13:36:01
虽然这不是一个答案(我认为@abdullatif给了您一个答案),但我认为这是对您应该考虑的代码的简化。当然,检查它以确保它能做你想做的事情,但我认为它做到了。
corr1_multiplier = (1 + std_mev1) if corr1 >= 0.5 else 1.0
corr2_multiplier = (1 + std_mev2) if corr2 >= 0.5 else 1.0
corr3_multiplier = (1 + std_mev3) if corr3 >= 0.5 else 1.0
corr_multiplier = corr1_multiplier * corr2_multiplier * corr3_multiplier
induc_cur_ls = cur_ls * corr_multiplier
induc_on2_ls = on2_ls * corr_multiplier
induc_tt2_ls = tt2_ls * corr_multiplier
induc_sx2_ls = sx2_ls * corr_multiplier
induc_nn2_ls = nn2_ls * corr_multiplier发布于 2021-05-16 12:32:43
一切似乎都是正确的,但最后几行中的打印在未执行的lines条件内。这就是为什么你的代码不打印任何东西。试着将它们缩回原处,使其处于这样的状态之外:
else:
induc_cur_ls = cur_ls
induc_on2_ls = on2_ls
induc_tt2_ls = tt2_ls
induc_sx2_ls = sx2_ls
induc_nn2_ls = nn2_ls
print(induc_cur_ls)
print(induc_on2_ls)
print(induc_tt2_ls)
print(induc_sx2_ls)
print(induc_nn2_ls)https://stackoverflow.com/questions/67556493
复制相似问题