首先是是题外话,这个专栏的名字就叫《统计预测和决策》的算例实现,也是我专业课的指导用书,我想把这本书全部用python实现,一是是为决策方向代码学习提供一份力量,二是总结梳理我的基础知识。现在统计决策的发展已经远远超过了课本的研究,提出了十几个首字母命名的算子,改进了几乎所有简单算法的步骤,拓展了越来越多的学科领域。千里之行始于足下,我作为刚入坑的新人,希望和读者一起进步,为将来的更深入层次的研究做好充分的准备。
《统计预测和决策第五版》,先从比较简单的第十六章开始。
不确定性决策方法是人为指定的原则,带有某种程度上的主观随机性。决策者能掌握可能出现的各种状态,但不能估计自然状态出现概率时的决策,称为不确定性决策。主要方法一般有好中求好方法,坏中求好方法和最小最大后悔值方法等。
好中求坏
好中求好决策准则也叫乐观决策准则,这种决策准则就是充分考虑可能出现的最大利益,在各最大利益中选取最大者,将其对应方案作为最优方案。
因为我没有书籍的电子版,重述原题太麻烦,我在运行果果详细展示了算法步骤,使用pandas广播的功能,简单的两个max顶函数就可以实现算法。
坏中求好
坏中求好方法也成为悲观决策准则,即充分考虑可能出现的最坏情况,从每个方案的最坏结果中选择一个最佳值,将其对应的方案作为最优方案。
使用参数sheet_name=1可以选择读取的excelsheet页。
a系数决策
a系数决策准则是对好中求坏和坏中求好方法进行折衷的一种决策准则,a系数依决策者认定情况是乐观还是悲观而取不同的值,若a=1,则模型退化为乐观准则,若a=0,则退化为悲观准则。这种退化有效性是优化算法最重要的要求之一。
最小最大后悔值决策
最小最大后悔值决策是决策者先计算出各方案在不同自然状态下的后悔值,然后分别找到各方案对应不同自然状态下的后悔值中的最大值,最后从这些最大后悔值中遭到最小的最大后悔值,将其对应的方案作为最优方案。
完整代码如下,一个完整py文件读取四个不同的sheet数据后,完成上述四种决策方法。
import pandas as pd
import numpy as np
def getdef(n):
df = pd.read_excel('t5.xlsx',sheet_name=n)
return df
def possitive(df):#乐观决策
print('乐观决策\n')
print(df)
temp= df.min(1)
print('方案内选择最好\n ',temp)
print('方案间选择最好,最终方案为\n ',temp.min())#z这里用min是因为成本型变量的最小值就是最大收益
def negative(df):#悲观决策
print('悲观决策\n')
print(df)
temp1= df.min(1)
print('方案内选择最好\n ',temp1)
print('方案间选择最好,最终方案为\n ',temp1.max())
def amethod(df,a):#折衷决策
print('a系数决策\n')
temp2 = a*df.max(1)+(1-a)*df.min(1)
print('方案收益值\n ',temp2)
print('方案内选择最好\n ',temp2.max())
def reg(df):#最小最大后悔决策
print('最小最大后悔值决策\n')
print(df)
temp3= df.max()
print('属性内选择最好\n ',temp3)
temp31= temp3-df
temp32= temp31.max(1)
print('方案最大后悔值\n ',temp32)
print('方案间选择最小,最终方案为\n ',temp32.min())
if __name__ == '__main__':
possitive(getdef(0))
negative(getdef(1))
amethod(getdef(2),0.6)
reg(getdef(3))
github仓库在https://github.com/rivendelltom/decision-making-study